Initial commit

Dependencies:   FastPWM

Committer:
lypinator
Date:
Wed Sep 16 01:11:49 2020 +0000
Revision:
0:bb348c97df44
Added PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lypinator 0:bb348c97df44 1 /* mbed Microcontroller Library
lypinator 0:bb348c97df44 2 * Copyright (c) 2006-2013 ARM Limited
lypinator 0:bb348c97df44 3 *
lypinator 0:bb348c97df44 4 * Licensed under the Apache License, Version 2.0 (the "License");
lypinator 0:bb348c97df44 5 * you may not use this file except in compliance with the License.
lypinator 0:bb348c97df44 6 * You may obtain a copy of the License at
lypinator 0:bb348c97df44 7 *
lypinator 0:bb348c97df44 8 * http://www.apache.org/licenses/LICENSE-2.0
lypinator 0:bb348c97df44 9 *
lypinator 0:bb348c97df44 10 * Unless required by applicable law or agreed to in writing, software
lypinator 0:bb348c97df44 11 * distributed under the License is distributed on an "AS IS" BASIS,
lypinator 0:bb348c97df44 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
lypinator 0:bb348c97df44 13 * See the License for the specific language governing permissions and
lypinator 0:bb348c97df44 14 * limitations under the License.
lypinator 0:bb348c97df44 15 */
lypinator 0:bb348c97df44 16 #include "hal/gpio_api.h"
lypinator 0:bb348c97df44 17
lypinator 0:bb348c97df44 18 static inline void _gpio_init_in(gpio_t *gpio, PinName pin, PinMode mode)
lypinator 0:bb348c97df44 19 {
lypinator 0:bb348c97df44 20 gpio_init(gpio, pin);
lypinator 0:bb348c97df44 21 if (pin != NC) {
lypinator 0:bb348c97df44 22 gpio_dir(gpio, PIN_INPUT);
lypinator 0:bb348c97df44 23 gpio_mode(gpio, mode);
lypinator 0:bb348c97df44 24 }
lypinator 0:bb348c97df44 25 }
lypinator 0:bb348c97df44 26
lypinator 0:bb348c97df44 27 static inline void _gpio_init_out(gpio_t *gpio, PinName pin, PinMode mode, int value)
lypinator 0:bb348c97df44 28 {
lypinator 0:bb348c97df44 29 gpio_init(gpio, pin);
lypinator 0:bb348c97df44 30 if (pin != NC) {
lypinator 0:bb348c97df44 31 gpio_write(gpio, value);
lypinator 0:bb348c97df44 32 gpio_dir(gpio, PIN_OUTPUT);
lypinator 0:bb348c97df44 33 gpio_mode(gpio, mode);
lypinator 0:bb348c97df44 34 }
lypinator 0:bb348c97df44 35 }
lypinator 0:bb348c97df44 36
lypinator 0:bb348c97df44 37 void gpio_init_in(gpio_t *gpio, PinName pin)
lypinator 0:bb348c97df44 38 {
lypinator 0:bb348c97df44 39 gpio_init_in_ex(gpio, pin, PullDefault);
lypinator 0:bb348c97df44 40 }
lypinator 0:bb348c97df44 41
lypinator 0:bb348c97df44 42 void gpio_init_in_ex(gpio_t *gpio, PinName pin, PinMode mode)
lypinator 0:bb348c97df44 43 {
lypinator 0:bb348c97df44 44 _gpio_init_in(gpio, pin, mode);
lypinator 0:bb348c97df44 45 }
lypinator 0:bb348c97df44 46
lypinator 0:bb348c97df44 47 void gpio_init_out(gpio_t *gpio, PinName pin)
lypinator 0:bb348c97df44 48 {
lypinator 0:bb348c97df44 49 gpio_init_out_ex(gpio, pin, 0);
lypinator 0:bb348c97df44 50 }
lypinator 0:bb348c97df44 51
lypinator 0:bb348c97df44 52 void gpio_init_out_ex(gpio_t *gpio, PinName pin, int value)
lypinator 0:bb348c97df44 53 {
lypinator 0:bb348c97df44 54 _gpio_init_out(gpio, pin, PullNone, value);
lypinator 0:bb348c97df44 55 }
lypinator 0:bb348c97df44 56
lypinator 0:bb348c97df44 57 void gpio_init_inout(gpio_t *gpio, PinName pin, PinDirection direction, PinMode mode, int value)
lypinator 0:bb348c97df44 58 {
lypinator 0:bb348c97df44 59 if (direction == PIN_INPUT) {
lypinator 0:bb348c97df44 60 _gpio_init_in(gpio, pin, mode);
lypinator 0:bb348c97df44 61 if (pin != NC) {
lypinator 0:bb348c97df44 62 gpio_write(gpio, value); // we prepare the value in case it is switched later
lypinator 0:bb348c97df44 63 }
lypinator 0:bb348c97df44 64 } else {
lypinator 0:bb348c97df44 65 _gpio_init_out(gpio, pin, mode, value);
lypinator 0:bb348c97df44 66 }
lypinator 0:bb348c97df44 67 }