2019年10月25日 星期五

[STM32] GPIO Output

GPIO Output 有兩種方式:

1. GPIO bit set/reset register (GPIOx_BSRR)

GPIOx_BSRR可以直接(不需要先讀出目前的值)對單獨1個bit做修改,不會影響到其他bit.
若要設定GPIOx的pin 0時,直接在BS0或BR0填入1.



ex.
以STM32F427為例,控制GPIOD的pin腳PD2.

/*Low, set 0*/
*((uint32_t*)0x40020C1A) = ((uint16_t)0x0004);
/*High,set 1*/
*((uint32_t*)0x40020C18) = ((uint16_t)0x0004);

0x40020C1A的來源:從BS(0x40020C18) + offset 2byte = BR(0x40020C1A)






----------------------------------------------------------------------------------

2. GPIO output data register (GPIOx_ODR)

用GPIOx_ODR改1 bit就要一次改2 bytes.
若要設定GPIOx的pin 0時,必須先讀出目前的值,再做'OR'或'AND'運算.

/*Set 1*/
GPIOx->ODR = GPIOx->ODR | 0x01;
/*Set 0*/
GPIOx->ODR = GPIOx->ODR & 0xFFFE;



















沒有留言:

張貼留言