c - STM32闪烁的LED错误寄存器?

标签 c stm32 microcontroller

有人知道为什么代码不起作用吗?

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()那么你可能想更换 for (int i = 0; i < 1000; i++)while(1) ,您通常不想从 main 返回在嵌入式上下文中。

关于c - STM32闪烁的LED错误寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63958330/

相关文章:

在 C 中通过数组调用函数?

c - 用户未与 Richtextbox 交互

c++ - 如何修复 STM32F3 上 SPI 的片选时序?

STM32 和 SD 卡(FATFS 和 SPI)

c - 寻找一种工具来告诉我 C 中的计算需要哪些整数宽度才不会溢出

c - 如何向扬声器发送声音

c - 最轻的像素

c - 如何在不为函数指针使用 typedef 的情况下声明函数指针数组?

eclipse - 在地址 "0xXXXXXX"中断,没有可用的调试信息,或在程序代码之外

tcp - 如何将 lwIP tcp/ip 堆栈与微 Controller stm32f4(客户端)一起使用