我測試了所有四個內置LED和外部LED的代碼。 所有指示燈都亮起,但不閃爍。 這是我的代碼:stm32f4發現板LED不閃爍
#include "stm32f4xx.h"
void WaitaMoment (int time)
{
for (time = 0; time > 0; time--);
}
int main(void)
{
RCC -> AHB1ENR |= RCC_AHB1ENR_GPIODEN;
GPIOD -> MODER |= GPIO_MODER_MODER14_0;
GPIOD -> OTYPER &= ~ (GPIO_OTYPER_OT_14);
GPIOD -> OSPEEDR |= GPIO_OSPEEDER_OSPEEDR14;
GPIOD -> PUPDR &= ~ (GPIO_PUPDR_PUPDR14);
//int time;
while(1)
{
GPIOD -> BSRRL |= GPIO_BSRR_BS_14;
//for (time=0; time < 200000; time++);
WaitaMoment(200000);
GPIOD -> BSRRH |= GPIO_BSRR_BR_14;
WaitaMoment(200000);
//for (time=0; time < 200000; time++);
}
}
我的問題是什麼?
我不知道| =爲GPIOD - > BSRRL&BSRRH是正確的。試試=而不是| =。除此之外,最有可能的是您的GPIO設置不正確。該行:GPIOD - > MODER | = GPIO_MODER_MODER14_0;什麼是GPIO_MODER_MODER14_0定義爲?應該是0x01我認爲GP輸出模式。另外,你只是在對它進行「或」操作,但是你操作它的價值是什麼? – DiBosco
從「公開聲明」:#define GPIO_MODER_MODER14_0((uint32_t)0x10000000)。所以它被設置爲通用輸出模式。我在這裏放了=標誌,但沒有任何變化。我還把= BSRRL和BSRRH之前,並沒有改變。 – Juliano
您的調試器確認MODER設置正確嗎?你沒有告訴我它是什麼東西。我的下一個猜測是你試圖切換錯誤的GPIO。沒有看到原理圖就不可能知道。 – DiBosco