mbed library sources. Supersedes mbed-src.

Dependents:   Hobbyking_Cheetah_Compact Hobbyking_Cheetah_Compact_DRV8323_14bit Hobbyking_Cheetah_Compact_DRV8323_V51_201907 HKC_MiniCheetah ... more

Fork of mbed-dev by mbed official

Committer:
benkatz
Date:
Mon Jul 30 20:31:44 2018 +0000
Revision:
181:36facd806e4a
Parent:
172:7d866c31b3c5
going on the robot.  fixed a dumb bug in float_to_uint

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:7d866c31b3c5 1 /* mbed Microcontroller Library
AnnaBridge 172:7d866c31b3c5 2 * Copyright (c) 2015-2016 Nuvoton
AnnaBridge 172:7d866c31b3c5 3 *
AnnaBridge 172:7d866c31b3c5 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 172:7d866c31b3c5 5 * you may not use this file except in compliance with the License.
AnnaBridge 172:7d866c31b3c5 6 * You may obtain a copy of the License at
AnnaBridge 172:7d866c31b3c5 7 *
AnnaBridge 172:7d866c31b3c5 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 172:7d866c31b3c5 9 *
AnnaBridge 172:7d866c31b3c5 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 172:7d866c31b3c5 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 172:7d866c31b3c5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 172:7d866c31b3c5 13 * See the License for the specific language governing permissions and
AnnaBridge 172:7d866c31b3c5 14 * limitations under the License.
AnnaBridge 172:7d866c31b3c5 15 */
AnnaBridge 172:7d866c31b3c5 16
AnnaBridge 172:7d866c31b3c5 17 #include "port_api.h"
AnnaBridge 172:7d866c31b3c5 18 #include "gpio_api.h"
AnnaBridge 172:7d866c31b3c5 19 #include "pinmap.h"
AnnaBridge 172:7d866c31b3c5 20 #include "mbed_error.h"
AnnaBridge 172:7d866c31b3c5 21
AnnaBridge 172:7d866c31b3c5 22 #if DEVICE_PORTIN || DEVICE_PORTOUT || DEVICE_PORTINOUT
AnnaBridge 172:7d866c31b3c5 23
AnnaBridge 172:7d866c31b3c5 24 PinName port_pin(PortName port, int pin_n)
AnnaBridge 172:7d866c31b3c5 25 {
AnnaBridge 172:7d866c31b3c5 26 return (PinName) NU_PORT_N_PIN_TO_PINNAME(port, pin_n);
AnnaBridge 172:7d866c31b3c5 27 }
AnnaBridge 172:7d866c31b3c5 28
AnnaBridge 172:7d866c31b3c5 29 void port_init(port_t *obj, PortName port, int mask, PinDirection dir)
AnnaBridge 172:7d866c31b3c5 30 {
AnnaBridge 172:7d866c31b3c5 31 obj->port = port;
AnnaBridge 172:7d866c31b3c5 32 obj->mask = mask;
AnnaBridge 172:7d866c31b3c5 33 obj->direction = dir;
AnnaBridge 172:7d866c31b3c5 34
AnnaBridge 172:7d866c31b3c5 35 uint32_t i;
AnnaBridge 172:7d866c31b3c5 36 obj->direction = dir;
AnnaBridge 172:7d866c31b3c5 37 for (i = 0; i < GPIO_PIN_MAX; i++) {
AnnaBridge 172:7d866c31b3c5 38 if (obj->mask & (1 << i)) {
AnnaBridge 172:7d866c31b3c5 39 gpio_set(port_pin(port, i));
AnnaBridge 172:7d866c31b3c5 40 }
AnnaBridge 172:7d866c31b3c5 41 }
AnnaBridge 172:7d866c31b3c5 42
AnnaBridge 172:7d866c31b3c5 43 port_dir(obj, dir);
AnnaBridge 172:7d866c31b3c5 44 }
AnnaBridge 172:7d866c31b3c5 45
AnnaBridge 172:7d866c31b3c5 46 void port_dir(port_t *obj, PinDirection dir)
AnnaBridge 172:7d866c31b3c5 47 {
AnnaBridge 172:7d866c31b3c5 48 uint32_t i;
AnnaBridge 172:7d866c31b3c5 49 obj->direction = dir;
AnnaBridge 172:7d866c31b3c5 50 for (i = 0; i < GPIO_PIN_MAX; i++) {
AnnaBridge 172:7d866c31b3c5 51 if (obj->mask & (1 << i)) {
AnnaBridge 172:7d866c31b3c5 52 if (dir == PIN_OUTPUT) {
AnnaBridge 172:7d866c31b3c5 53 GPIO_SetMode(NU_PORT_BASE(obj->port), 1 << i, GPIO_MODE_OUTPUT);
AnnaBridge 172:7d866c31b3c5 54 } else { // PIN_INPUT
AnnaBridge 172:7d866c31b3c5 55 GPIO_SetMode(NU_PORT_BASE(obj->port), 1 << i, GPIO_MODE_INPUT);
AnnaBridge 172:7d866c31b3c5 56 }
AnnaBridge 172:7d866c31b3c5 57 }
AnnaBridge 172:7d866c31b3c5 58 }
AnnaBridge 172:7d866c31b3c5 59 }
AnnaBridge 172:7d866c31b3c5 60
AnnaBridge 172:7d866c31b3c5 61 void port_mode(port_t *obj, PinMode mode)
AnnaBridge 172:7d866c31b3c5 62 {
AnnaBridge 172:7d866c31b3c5 63 uint32_t i;
AnnaBridge 172:7d866c31b3c5 64
AnnaBridge 172:7d866c31b3c5 65 for (i = 0; i < GPIO_PIN_MAX; i++) {
AnnaBridge 172:7d866c31b3c5 66 if (obj->mask & (1 << i)) {
AnnaBridge 172:7d866c31b3c5 67 pin_mode(port_pin(obj->port, i), mode);
AnnaBridge 172:7d866c31b3c5 68 }
AnnaBridge 172:7d866c31b3c5 69 }
AnnaBridge 172:7d866c31b3c5 70 }
AnnaBridge 172:7d866c31b3c5 71
AnnaBridge 172:7d866c31b3c5 72 void port_write(port_t *obj, int value)
AnnaBridge 172:7d866c31b3c5 73 {
AnnaBridge 172:7d866c31b3c5 74 uint32_t i;
AnnaBridge 172:7d866c31b3c5 75 uint32_t port_index = obj->port;
AnnaBridge 172:7d866c31b3c5 76
AnnaBridge 172:7d866c31b3c5 77 for (i = 0; i < GPIO_PIN_MAX; i++) {
AnnaBridge 172:7d866c31b3c5 78 if (obj->mask & (1 << i)) {
AnnaBridge 172:7d866c31b3c5 79 GPIO_PIN_DATA(port_index, i) = (value & obj->mask) ? 1 : 0;
AnnaBridge 172:7d866c31b3c5 80 }
AnnaBridge 172:7d866c31b3c5 81 }
AnnaBridge 172:7d866c31b3c5 82 }
AnnaBridge 172:7d866c31b3c5 83
AnnaBridge 172:7d866c31b3c5 84 int port_read(port_t *obj)
AnnaBridge 172:7d866c31b3c5 85 {
AnnaBridge 172:7d866c31b3c5 86 uint32_t i;
AnnaBridge 172:7d866c31b3c5 87 uint32_t port_index = obj->port;
AnnaBridge 172:7d866c31b3c5 88 int value = 0;
AnnaBridge 172:7d866c31b3c5 89
AnnaBridge 172:7d866c31b3c5 90 for (i = 0; i < GPIO_PIN_MAX; i++) {
AnnaBridge 172:7d866c31b3c5 91 if (obj->mask & (1 << i)) {
AnnaBridge 172:7d866c31b3c5 92 value = value | (GPIO_PIN_DATA(port_index, i) << i);
AnnaBridge 172:7d866c31b3c5 93 }
AnnaBridge 172:7d866c31b3c5 94 }
AnnaBridge 172:7d866c31b3c5 95
AnnaBridge 172:7d866c31b3c5 96 return value;
AnnaBridge 172:7d866c31b3c5 97 }
AnnaBridge 172:7d866c31b3c5 98
AnnaBridge 172:7d866c31b3c5 99 #endif