STM32中GPIOx_BSRR同时置位复位同一引脚时输出电平如何?
STM32 GPIOx_BSRR同时置位复位同一引脚的结果及原因
实验结论:当同时对同一引脚执行置位(低16位写1)和复位(高16位写1)操作时,最终引脚输出高电平,和你实际测试的结果一致。
核心原因:这是STM32 GPIO外设的硬件设计规则决定的。根据STM32官方参考手册对GPIOx_BSRR的定义:当同一引脚对应的置位位(BSy,低16位)和复位位(BRy,高16位)同时被写入1时,置位操作的优先级高于复位操作,硬件会优先执行置位动作,复位动作被直接忽略。
举个具体代码例子,假设操作PA0引脚:
GPIOA->BSRR = (1 << 0) | (1 << 16); // 同时置位PA0(低16位第0位)和复位PA0(高16位第0位)
执行这段代码后,PA0引脚的输出会是高电平,因为硬件层面优先响应置位指令。
这个规则是STM32硬件的固有逻辑,所有支持BSRR寄存器的STM32系列芯片都遵循这一设计。
内容的提问来源于stack exchange,提问作者wavegee Ha
相关产品推荐
相关产品推荐

