看看代码有毛病吗

2019-10-11 15:26发布

这是主函数
# include "led.h"
void delay(int i)
{
        while(i--);
}
int main (void)
{
        LED_Init();
       
          
                 while(1)
                 {
                 
                                GPIO_ResetBits(GPIOC,GPIO_Pin_All);
                                delay(60000);
                                GPIO_SetBits(GPIOC,GPIO_Pin_All);
                 }
                 
}
# include "led.h"
# include "stm32f10x_gpio.h"
void LED_Init()
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        SystemInit ();
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_All;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE );
        GPIO_Init(GPIOC,&GPIO_InitStructure);
}
想写一个led灯闪烁的程序 但是程序下载进去之后led灯只闪烁了六次之后不闪了是什么原因


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
正点原子
1楼-- · 2019-10-11 19:35
                                GPIO_ResetBits(GPIOC,GPIO_Pin_All);
                                delay(60000);
                                GPIO_SetBits(GPIOC,GPIO_Pin_All);
改为:
                                GPIO_ResetBits(GPIOC,GPIO_Pin_All);
                                delay(60000);
                                GPIO_SetBits(GPIOC,GPIO_Pin_All);
                                delay(60000);
gsndragon
2楼-- · 2019-10-11 20:58
仿真看下卡哪了
周亚龙
3楼-- · 2019-10-12 02:37
 精彩回答 2  元偷偷看……
寂寞小奥特曼
4楼-- · 2019-10-12 04:32
GPIO_ResetBits(GPIOC,GPIO_Pin_All);
   delay(60000);
GPIO_SetBits(GPIOC,GPIO_Pin_All)

你程序走到GPIO_SetBits的之后 由于放在while循环里面  程序立马就会跑到GPIO_ResetBits将所有的引脚拉低  时间太短肉眼无法观察到,在GPIO_SetBits后面再加个延时函数就行了
lym32
5楼-- · 2019-10-12 09:25
寂寞小奥特曼 发表于 2017-3-12 18:28
GPIO_ResetBits(GPIOC,GPIO_Pin_All);
   delay(60000);
GPIO_SetBits(GPIOC,GPIO_Pin_All)

还是不行 还是只闪烁了六次就不闪了
773208906
6楼-- · 2019-10-12 14:15
你在SETBIT后面再加个延时啊

一周热门 更多>