我测试了所有四个内置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