mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
184:08ed48f1de7f
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:e84263d55307 1 /* mbed Microcontroller Library
AnnaBridge 184:08ed48f1de7f 2 * Copyright (c) 2006-2018 ARM Limited
AnnaBridge 167:e84263d55307 3 *
AnnaBridge 167:e84263d55307 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 167:e84263d55307 5 * you may not use this file except in compliance with the License.
AnnaBridge 167:e84263d55307 6 * You may obtain a copy of the License at
AnnaBridge 167:e84263d55307 7 *
AnnaBridge 167:e84263d55307 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 167:e84263d55307 9 *
AnnaBridge 167:e84263d55307 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 167:e84263d55307 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 167:e84263d55307 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 167:e84263d55307 13 * See the License for the specific language governing permissions and
AnnaBridge 167:e84263d55307 14 * limitations under the License.
AnnaBridge 167:e84263d55307 15 */
AnnaBridge 167:e84263d55307 16 #include "mbed_assert.h"
AnnaBridge 167:e84263d55307 17 #include "pinmap.h"
AnnaBridge 167:e84263d55307 18 #include "mbed_error.h"
AnnaBridge 184:08ed48f1de7f 19 #include "objects.h"
AnnaBridge 167:e84263d55307 20
AnnaBridge 167:e84263d55307 21 void pin_function(PinName pin, int function)
AnnaBridge 167:e84263d55307 22 {
AnnaBridge 184:08ed48f1de7f 23 struct arm_gpio_dev_t *gpio_dev;
AnnaBridge 184:08ed48f1de7f 24 uint32_t flags;
AnnaBridge 168:9672193075cf 25
AnnaBridge 184:08ed48f1de7f 26 MBED_ASSERT(pin != NC);
AnnaBridge 167:e84263d55307 27
AnnaBridge 184:08ed48f1de7f 28 /* The pin has to be a GPIO pin */
AnnaBridge 168:9672193075cf 29 if (pin >= EXP0 && pin <= EXP51) {
AnnaBridge 184:08ed48f1de7f 30 switch (function) {
AnnaBridge 184:08ed48f1de7f 31 case ALTERNATE_FUNC:
AnnaBridge 184:08ed48f1de7f 32 flags = ARM_GPIO_PIN_DISABLE;
AnnaBridge 184:08ed48f1de7f 33 break;
AnnaBridge 184:08ed48f1de7f 34 case GPIO_FUNC:
AnnaBridge 184:08ed48f1de7f 35 flags = ARM_GPIO_PIN_ENABLE;
AnnaBridge 184:08ed48f1de7f 36 break;
AnnaBridge 184:08ed48f1de7f 37 default:
AnnaBridge 184:08ed48f1de7f 38 return;
AnnaBridge 168:9672193075cf 39 }
AnnaBridge 184:08ed48f1de7f 40
AnnaBridge 184:08ed48f1de7f 41 switch (GPIO_DEV_NUMBER(pin)) {
AnnaBridge 184:08ed48f1de7f 42 #ifdef ARM_GPIO0
AnnaBridge 184:08ed48f1de7f 43 case GPIO0_NUMBER:
AnnaBridge 184:08ed48f1de7f 44 gpio_dev = &ARM_GPIO0_DEV;
AnnaBridge 184:08ed48f1de7f 45 break;
AnnaBridge 184:08ed48f1de7f 46 #endif /* ARM_GPIO0 */
AnnaBridge 184:08ed48f1de7f 47 #ifdef ARM_GPIO1
AnnaBridge 184:08ed48f1de7f 48 case GPIO1_NUMBER:
AnnaBridge 184:08ed48f1de7f 49 gpio_dev = &ARM_GPIO1_DEV;
AnnaBridge 184:08ed48f1de7f 50 break;
AnnaBridge 184:08ed48f1de7f 51 #endif /* ARM_GPIO1 */
AnnaBridge 184:08ed48f1de7f 52 #ifdef ARM_GPIO2
AnnaBridge 184:08ed48f1de7f 53 case GPIO2_NUMBER:
AnnaBridge 184:08ed48f1de7f 54 gpio_dev = &ARM_GPIO2_DEV;
AnnaBridge 184:08ed48f1de7f 55 break;
AnnaBridge 184:08ed48f1de7f 56 #endif /* ARM_GPIO2 */
AnnaBridge 184:08ed48f1de7f 57 #ifdef ARM_GPIO3
AnnaBridge 184:08ed48f1de7f 58 case GPIO3_NUMBER:
AnnaBridge 184:08ed48f1de7f 59 gpio_dev = &ARM_GPIO3_DEV;
AnnaBridge 184:08ed48f1de7f 60 break;
AnnaBridge 184:08ed48f1de7f 61 #endif /* ARM_GPIO3 */
AnnaBridge 184:08ed48f1de7f 62 default:
AnnaBridge 184:08ed48f1de7f 63 error("GPIO %d, associated with expansion pin %d, is disabled",
AnnaBridge 184:08ed48f1de7f 64 pin, GPIO_DEV_NUMBER(pin));
AnnaBridge 184:08ed48f1de7f 65 return;
AnnaBridge 184:08ed48f1de7f 66 }
AnnaBridge 184:08ed48f1de7f 67
AnnaBridge 184:08ed48f1de7f 68 arm_gpio_init(gpio_dev);
AnnaBridge 184:08ed48f1de7f 69 (void)arm_gpio_config(gpio_dev, ARM_GPIO_ACCESS_PIN,
AnnaBridge 184:08ed48f1de7f 70 GPIO_PIN_NUMBER(pin), flags);
AnnaBridge 168:9672193075cf 71 }
AnnaBridge 167:e84263d55307 72 }
AnnaBridge 167:e84263d55307 73
AnnaBridge 167:e84263d55307 74 void pin_mode(PinName pin, PinMode mode)
AnnaBridge 167:e84263d55307 75 {
AnnaBridge 184:08ed48f1de7f 76 MBED_ASSERT(pin != NC);
AnnaBridge 167:e84263d55307 77
AnnaBridge 184:08ed48f1de7f 78 /* PinMode is not supported */
AnnaBridge 167:e84263d55307 79 }