我试图弄清楚如何切换Nucleo板上的LED,但我就是看不到用户的LED切换。从网上看,这似乎就是你所要做的。还有人遇到过这个问题吗?
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
int main(void)
{
int counter = 0;
SystemInit();
GPIO_InitTypeDef temp;
temp.GPIO_Mode = GPIO_Mode_OUT;
temp.GPIO_OType = GPIO_OType_PP; // Push Pull
temp.GPIO_Pin = GPIO_Pin_5;
temp.GPIO_Speed = GPIO_Low_Speed;
temp.GPIO_PuPd = GPIO_PuPd_NOPULL;
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_Init( GPIOA, &temp );
while( 1 )
{
if ( counter++ > 10000 )
{
GPIO_ToggleBits( GPIOA, GPIO_Pin_5 );
counter = 0;
}
}
}发布于 2018-07-07 14:03:03
你必须要写
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);以便启用GPIOA。
发布于 2018-07-07 14:09:54
您不能使用AHB2时钟控件启用AHB1外设时钟。
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
^^^^ ^^^“我就是看不到用户发光二极管开关。”
即使您正确地启用了GPIO时钟,您切换输出的速度也非常快(MHz顺序),并且counter没有明显的作用。如果你的目标是一个闪烁的LED,那是行不通的;你只会看到一个亮度略低于全亮度的LED --你需要在每个切换之间有一个延迟。
发布于 2018-07-07 14:48:20
Clifford是绝对正确的,LED正在“切换”到快速的方式。STM32F401RE应该是以168 The的频率运行。将您的计数器值从10.000更改为例如50.000.000,以查看LED以适当的速率切换。
https://stackoverflow.com/questions/51220353
复制相似问题