野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15780|回复: 12

为什么不能只用延时函数来让小灯实现闪烁效果呢?

[复制链接]
发表于 2016-8-27 20:41:01 | 显示全部楼层 |阅读模式
我今天刚看火哥第11节视频,就是用库函数点灯那一节的视频,火哥课后作业让实现一个小灯闪烁的效果,我用的延时函数,为什么不可以呢?
我的部分代码:
#include "stm32f4xx.h"
#include "bsp_led.h"

void delay(int z)
{
        int x;
        for(;z>0;z--)
                for(x=2000;x>0;x--);
}

int main()
{
       
        while(1)
       {
                        //开灯
        LED_GPIO_Config();
       
                        //关灯
        GPIO_ResetBits(GPIOH,GPIO_Pin_10);
        delay(1000);
        GPIO_SetBits(GPIOH,GPIO_Pin_10);
        delay(1000);
       }       
       
       
}


回复

使用道具 举报

 楼主| 发表于 2016-9-2 17:59:09 | 显示全部楼层
fire 发表于 2016-8-28 09:27
他的是软件延时,估计是延时的时间太短了。

LED_GPIO_Config();
这一句放错地方了,不该加在while循环里的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-27 20:43:44 | 显示全部楼层
至于第二题我就彻底懵逼了,表示学的太渣了,求指点
回复 支持 反对

使用道具 举报

发表于 2016-8-27 21:00:22 | 显示全部楼层
兄弟,能闪啊,闪烁效果很明显。。。
建议你把     LED_GPIO_Config();放到while循环外面
回复 支持 反对

使用道具 举报

发表于 2016-8-27 21:29:25 | 显示全部楼层
可以闪烁的  是不是你的延时太短!!!
回复 支持 反对

使用道具 举报

发表于 2016-8-27 22:22:37 来自手机 | 显示全部楼层
看回复,到底是能闪还是不能闪。
回复 支持 反对

使用道具 举报

发表于 2016-8-28 01:00:56 | 显示全部楼层
LED_GPIO_Config();在循环外面
回复 支持 反对

使用道具 举报

发表于 2016-8-28 08:27:44 | 显示全部楼层
#include "stm32f4xx.h"
#include "bsp_led.h"


void delay_ms(unsigned int xms)
{
        unsigned int i,j;
        for(i=0;i<xms;i++)
        for(j=0;j<25000;j++);
}

int main(void)
{

        while(1)
        {
                LED_GPIO_Config();
                GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN11);
                delay_ms(500);
                //GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN11);
                delay_ms(500);
                //GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN12);
                delay_ms(500);
        }
}//我觉得你的延时有点问题,这是我的代码,你看一下
回复 支持 反对

使用道具 举报

发表于 2016-8-28 08:29:03 | 显示全部楼层
看我的延时函数,这个代码有改动
回复 支持 反对

使用道具 举报

发表于 2016-8-28 09:27:54 来自手机 | 显示全部楼层
林泽彬 发表于 2016-8-28 08:29
看我的延时函数,这个代码有改动

他的是软件延时,估计是延时的时间太短了。
回复 支持 反对

使用道具 举报

发表于 2016-8-28 20:20:36 | 显示全部楼层
林泽彬 发表于 2016-8-28 08:27
#include "stm32f4xx.h"
#include "bsp_led.h"

初始化的函数都放在while(1),外面哈,不需要移植执行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-2 17:57:14 | 显示全部楼层
♂荻夜 发表于 2016-8-28 20:20
初始化的函数都放在while(1),外面哈,不需要移植执行

多谢提醒 受教了
回复 支持 反对

使用道具 举报

发表于 2016-9-2 18:35:21 | 显示全部楼层
帮顶!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 15:00 , Processed in 0.032348 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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