EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
高手带你解析STM32 BSRR BRR ODR 寄存器
- u# c9 w' l3 J( a" Z" u. q0 U0 X# h
一、用法 经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高、低电平。 #define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define SET_BL_LOW() GPIOA->BRR=GPIO_Pin_012 其作用类似于如下两个库函数, void GPIO_SetBits(GPIO_Typedef* GPIOx, uint16_t GPIO_Pin) void GPIO_ResetBits(GPIO_Typedef* GPIOx, uint16_t GPIO_Pin) 12 而且实际上这两个库函数就是通过修改BSRR,BRR寄存器的值来实现对 IO 口设置的。如下便是输出高电平的函数体: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Pin)); GPIOx->BSRR = GPIO_Pin; }12345678 因此,使用宏或者库函数本质上都是一样的。区别在于使用宏更快,而使用函数更灵活。
" Q' C! w: w+ k6 Y$ D1 M |