STM32 的GPIO流水灯,程序下进去后,4个LED先全部都亮,然后才逐个点亮;我不太明白,怎么开始会全部都亮

#include"stm32f10x_lib.h"GPIO_InitTypeDefGPIO_InitStructure;//声明GPIO_InitStructurevoi... #include "stm32f10x_lib.h"

GPIO_InitTypeDef GPIO_InitStructure;//声明GPIO_InitStructure

void LED_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //开GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_2 | GPIO_Pin_3 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // 设定输出速率2MHZHz
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOE
}

void Delay(u32 nCount) //延时函数
{
for(; nCount != 0; nCount--);
}

int main(void)
{
LED_Init();
while(1)
{

GPIO_ResetBits(GPIOE, GPIO_Pin_1);//set GPIOE.1=0
Delay(0x8ffff);
GPIO_SetBits(GPIOE, GPIO_Pin_1);//set GPIOE.1=1
//Delay(0x4ffff);

GPIO_ResetBits(GPIOE, GPIO_Pin_0);//set GPIOE.0=0
Delay(0x8ffff);
GPIO_SetBits(GPIOE, GPIO_Pin_0);//set GPIOE.0=1
//Delay(0x4ffff);

GPIO_ResetBits(GPIOE, GPIO_Pin_2);//set GPIOE.2=0
Delay(0x8ffff);
GPIO_SetBits(GPIOE, GPIO_Pin_2);//set GPIOE.2=1
//Delay(0x4ffff);

GPIO_ResetBits(GPIOE, GPIO_Pin_3);//set GPIOE.3=0
Delay(0x8ffff);
GPIO_SetBits(GPIOE, GPIO_Pin_3);//set GPIOE.3=1
//Delay(0x4ffff);
}
}
展开
 我来答
dull_man
2011-05-03 · TA获得超过317个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:65.9万
展开全部
(仅供参考)由于你设置推挽输出,也就是说没有上下拉(8中模式里输入有上下拉),在《数据手册》里的解释推挽输出初始化时,输出0或1,其实是0,这样的话,你的开始红灯都全部亮下,就不难理解了。所以你若想在开始的时候不想让他都亮(按照你的思路走),你可以对你的几个引脚进行拉高,即对ODR或者BSRR进行操作即可。
GPIO_SetBits(GPIOE, GPIO_Pin_1);//Init函数把几个脚都添加进去即可
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式