[英]STM32 blinking LED wrong register?
有谁知道为什么代码不起作用?
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
GPIOB->MODER &= ~(0x3u << 6u);
GPIOB->MODER |= (0x1u << 6u);
for (int i = 0; i < 1000; i++) {
GPIOB->ODR |= (0x1u << 0x3u);
}
我使用的是 STM 板 (STM32L432KC),它有一个集成 LED,称为 PB3 引脚(端口 26),但在闪烁后没有任何反应。 实际上应该有一个发光二极管。 我是否使用了正确的寄存器?
您在ODR
设置了一点但从未清除它,因此它不会闪烁,您需要在开/关转换之间有一个延迟才能明显看到它在闪烁。
在可能的情况下写入BSRR
寄存器而不是ODR
是一种很好的做法,这样可以避免读取-修改-写入周期。
如果该代码是您的整个main()
那么您可能想用while(1)
替换for (int i = 0; i < 1000; i++)
while(1)
,您通常不想在嵌入式上下文中从main
返回.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.