Ногодрыг на STM32, аналог digitalWrite под HAL

Всем добра.
Не понравилась реализация ногодрыга для HAL, решил упростить себе жизнь.
В итоге получился короткий макрос, который позволяет под HAL дрыгать ножками с простотой Ардуино.

#define digitalWrite(_pin,_state) HAL_GPIO_WritePin(_pin##_GPIO_Port,_pin##_Pin, _state)

В скобках указываем наименование пина (которое в stm32cube мы указываем в качестве label’a) и его состояние (0/1).
А лучше дополнительно дейфайним:

#define OFF GPIO_PIN_RESET
#define ON GPIO_PIN_SET

И убираем warning’и которые будут если в функцию будет передаваться не указанный где то в дебрях enum, а литерал (1/0).

Ну и собственно получаем работающий :

digitalWrite(myPin,ON);

За место унылого:

HAL_GPIO_WritePin(myPin_GPIO_Port,myPin_Pin, GPIO_PIN_SET);
1 лайк

Ну и собственно digitalWrite можно заменить на что угодно, скажем на output()

Только Bare metal, только Bit banding !!!