STM32GENERIC/STM32/cores/arduino/stm32/stm32_gpio.h

58 lines
1.1 KiB
C
Raw Normal View History

2017-04-09 21:55:07 -07:00
#ifndef STM32_GPIO_H
#define STM32_GPIO_H
#include "stm32_def.h"
#include "variant.h"
2017-04-10 09:24:58 -07:00
#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2
#define INPUT_PULLDOWN 0x3
2017-04-09 21:55:07 -07:00
#ifndef GPIO_SPEED_FREQ_VERY_HIGH
#define GPIO_SPEED_FREQ_VERY_HIGH GPIO_SPEED_FREQ_HIGH
#endif
#ifdef __cplusplus
extern "C"{
#endif
typedef struct {
GPIO_TypeDef *port;
uint32_t pin_mask;
} stm32_port_pin_type;
extern const stm32_port_pin_type port_pin_list[NUM_PINS];
void stm32_gpio_clock(GPIO_TypeDef *port);
inline void digitalWrite(uint8_t pin, uint8_t value) {
if (pin >= sizeof(port_pin_list) / sizeof(port_pin_list[0])) {
2017-04-09 21:55:07 -07:00
return;
}
stm32_port_pin_type port_pin = port_pin_list[pin];
HAL_GPIO_WritePin(port_pin.port, port_pin.pin_mask, value ? GPIO_PIN_SET : GPIO_PIN_RESET);
}
2017-04-09 22:10:33 -07:00
inline int digitalRead(uint8_t pin) {
if (pin >= sizeof(port_pin_list) / sizeof(port_pin_list[0])) {
2017-04-09 22:10:33 -07:00
return 0;
}
stm32_port_pin_type port_pin = port_pin_list[pin];
return HAL_GPIO_ReadPin(port_pin.port, port_pin.pin_mask);
}
2017-04-09 21:55:07 -07:00
#ifdef __cplusplus
}
#endif
#endif