野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18451|回复: 16

为啥我的灯不能闪烁呢

[复制链接]
发表于 2018-9-25 16:55:41 | 显示全部楼层 |阅读模式
#include"led.h"
#include"stdint.h"

//初始化LED1
void  Init_LED1(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI, ENABLE);
     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT    ;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOI, &GPIO_InitStructure);
    GPIO_SetBits(GPIOI,GPIO_Pin_10);
}

//初始化LED2
void  Init_LED2(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT    ;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOF, &GPIO_InitStructure);
    GPIO_SetBits(GPIOF,GPIO_Pin_7);
}

//初始化LED3
void  Init_LED3(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
//    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT    ;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOF, &GPIO_InitStructure);
    GPIO_SetBits(GPIOF,GPIO_Pin_8);
}

//初始化LED4
void  Init_LED4(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT    ;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    GPIO_SetBits(GPIOC,GPIO_Pin_2);
}




#ifndef __LED_H
#define __LED_H

#include"stm32f4xx.h"

#endif /* _KEY_H */

#define LED1_ON        GPIO_ResetBits(GPIOI, GPIO_Pin_10)
#define LED2_ON        GPIO_ResetBits(GPIOF, GPIO_Pin_7)
#define LED3_ON        GPIO_ResetBits(GPIOF, GPIO_Pin_8)
#define LED4_ON        GPIO_ResetBits(GPIOC, GPIO_Pin_2)
#define LED1_OFF    GPIO_SetBits(GPIOI, GPIO_Pin_10)
#define LED2_OFF    GPIO_SetBits(GPIOF, GPIO_Pin_7)
#define LED3_OFF    GPIO_SetBits(GPIOF, GPIO_Pin_8)
#define LED4_OFF     GPIO_SetBits(GPIOC, GPIO_Pin_2)


void  Init_LED1(void);
void  Init_LED2(void);
void  Init_LED3(void);
void  Init_LED4(void);



#include "stm32f4xx.h"

#include "led.h"
//#include "key.h"

  
void Delay(uint32_t t)
{
    if(t != 0)
        t--;
}

int main(void)
{
    Init_LED1();
    Init_LED2();
    Init_LED3();
    Init_LED4();

    LED1_OFF;
    LED2_OFF;
    LED3_OFF;
    LED4_OFF;   
    Delay(0x1FFFFFF);
   
    LED1_ON;
    LED2_ON;
    LED3_ON;
    LED4_ON;
    Delay(0x1FFFFFF);

}


回复

使用道具 举报

 楼主| 发表于 2018-9-25 16:56:26 | 显示全部楼层
求大佬给分析下~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2018-9-25 17:54:56 | 显示全部楼层
控制LED灯亮灭放在循环里,你这执行一遍就没了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-25 18:42:32 | 显示全部楼层
笑你像狗 发表于 2018-9-25 17:54
控制LED灯亮灭放在循环里,你这执行一遍就没了

还是不行啊
回复 支持 反对

使用道具 举报

发表于 2018-9-25 21:59:33 来自手机 | 显示全部楼层
咸鱼之身 发表于 2018-9-25 18:42
还是不行啊

for 循环在哪里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-26 09:02:31 | 显示全部楼层
fire 发表于 2018-9-25 21:59
for 循环在哪里

int main(void)
{
       
        while(1)
        {
                Init_LED1();
                Init_LED2();
                Init_LED3();
                Init_LED4();

                LED1_OFF;
                LED2_OFF;
                LED3_OFF;
                LED4_OFF;       
                Delay(0xFFFFFF);
               
                LED1_ON;
                LED2_ON;
                LED3_ON;
                LED4_ON;
                Delay(0xFFFFFF);
    }
}

主函数里while循环还是不能闪烁
回复 支持 反对

使用道具 举报

发表于 2018-9-26 09:30:40 | 显示全部楼层
咸鱼之身 发表于 2018-9-26 09:02
int main(void)
{
       

Init_LED1();
Init_LED2();
Init_LED3();
Init_LED4();  
这部分放在while的外面,初始化一次就行了,不用一直初始化。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-26 09:43:14 | 显示全部楼层
fire 发表于 2018-9-26 09:30
Init_LED1();
Init_LED2();
Init_LED3();

还是不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 09:18:06 | 显示全部楼层
啥情况?
回复

使用道具 举报

 楼主| 发表于 2018-9-29 09:18:34 | 显示全部楼层
11111
回复

使用道具 举报

发表于 2018-9-29 12:03:03 | 显示全部楼层
#ifndef __LED_H #define __LED_H  #include"stm32f4xx.h"  #endif /* _KEY_H */  #define LED1_ON        GPIO_ResetBits(GPIOI, GPIO_Pin_10) #define LED2_ON        GPIO_ResetBits(GPIOF, GPIO_Pin_7)
回复 支持 反对

使用道具 举报

发表于 2018-9-29 12:03:51 | 显示全部楼层
#ifndef __LED_H #define __LED_H  #include"stm32f4xx.h"  #endif /* _KEY_H */   没把LED IO的定义包含进去
回复 支持 反对

使用道具 举报

发表于 2018-9-29 12:04:28 | 显示全部楼层
编译不报错?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 13:47:51 | 显示全部楼层

编译不报错
回复 支持 反对

使用道具 举报

发表于 2018-9-29 15:30:23 | 显示全部楼层

#ifndef __LED_H
#define __LED_H  


#include"stm32f4xx.h"  

#endif /* _KEY_H */   没把LED IO的定义包含进去
回复 支持 反对

使用道具 举报

发表于 2021-9-7 17:23:40 | 显示全部楼层
您好,请问您之前的问题,LED不闪烁的问题解决了吗?我刚学习这块,照着教学视频用固件库点亮LED,但也没有闪烁。。
回复 支持 反对

使用道具 举报

发表于 2021-9-7 17:38:33 | 显示全部楼层
编译器可能把Delay函数中的循环优化掉了,加上volatile关键字试试看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 14:00 , Processed in 0.036320 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表