[英]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.