ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
17 июня
1309032 Топик полностью
Eddy_Em (12.05.2023 14:27, просмотров: 205) ответил POV на В SPL есть сетбит, а есть вритебит. Обращаются к разным регистрам. К одному можно до включения тактирования, кто второму только после.
Это же не про регистры, а про GPIO - либо GPIOx->ODR записать, либо GPIOx->BSRR (или GPIOx->BRR). Вот с MODER реально черт-те что. 

А для GPIO я и сам стандартные макросы написал: https://github.com/eddyem/stm32samples/blob/master/F1%3AF103/inc/Fx/common_macros.h#L46

#define pin_toggle(gpioport, gpios) do{ \
register uint32_t __port = gpioport->ODR; \
gpioport->BSRR = ((__port & (gpios)) << 16) | (~__port & (gpios));}while(0)

#define pin_set(gpioport, gpios) do{gpioport->BSRR = gpios;}while(0)
#define pin_clear(gpioport, gpios) do{gpioport->BSRR = ((gpios) << 16);}while(0)
#define pin_read(gpioport, gpios) (gpioport->IDR & (gpios) ? 1 : 0)
#define pin_write(gpioport, gpios) do{gpioport->ODR = gpios;}while(0)

Кажись, у пиков был регистр, который позволял на лету инвертировать нужные пины порта. У STM32 такого нет, вот и приходится выкручиваться - обеспечить хоть условную "атомарность".

eddy-em.livejournal.com github.com/eddyem