X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm32f1%2Fao_arch_funcs.h;h=502fb140b47cb1777ef126aad4378324073ec2e4;hb=cea0f40fff14b9d2085e0026a68b742a4b114cb9;hp=35e9374fc66ffd9fdf79dfd15f05d030170f1387;hpb=58f013162125b2143a5a9f1c0544cb20817e9524;p=fw%2Faltos diff --git a/src/stm32f1/ao_arch_funcs.h b/src/stm32f1/ao_arch_funcs.h index 35e9374f..502fb140 100644 --- a/src/stm32f1/ao_arch_funcs.h +++ b/src/stm32f1/ao_arch_funcs.h @@ -19,6 +19,16 @@ #ifndef _AO_ARCH_FUNCS_H_ #define _AO_ARCH_FUNCS_H_ +#define AO_EXTI_MODE_RISING 1 +#define AO_EXTI_MODE_FALLING 2 +#define AO_EXTI_MODE_PULL_NONE 0 +#define AO_EXTI_MODE_PULL_UP 4 +#define AO_EXTI_MODE_PULL_DOWN 8 +#define AO_EXTI_PRIORITY_LOW 16 +#define AO_EXTI_PRIORITY_MED 0 +#define AO_EXTI_PRIORITY_HIGH 32 +#define AO_EXTI_PIN_NOCONFIGURE 64 + static inline void ao_enable_port(struct stm_gpio *port) { @@ -71,6 +81,29 @@ ao_enable_output(struct stm_gpio *port, int bit, uint8_t v) STM_GPIO_CR_CNF_OUTPUT_PUSH_PULL); } +static inline void +ao_gpio_set_mode(struct stm_gpio *port, int bit, int mode) +{ + uint8_t cnf; + + if (mode == AO_EXTI_MODE_PULL_NONE) + cnf = STM_GPIO_CR_CNF_INPUT_FLOATING; + else { + cnf = STM_GPIO_CR_CNF_INPUT_PULL; + ao_gpio_set(port, bit, mode == AO_EXTI_MODE_PULL_UP); + } + stm_gpio_conf(port, bit, + STM_GPIO_CR_MODE_INPUT, + cnf); +} + +static inline void +ao_enable_input(struct stm_gpio *port, int bit, int mode) +{ + ao_enable_port(port); + ao_gpio_set_mode(port, bit, mode); +} + #if USE_SERIAL_1_SW_FLOW || USE_SERIAL_2_SW_FLOW || USE_SERIAL_3_SW_FLOW #define HAS_SERIAL_SW_FLOW 1 #else