9239|22

21

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

新手求助STM32的流水灯问题 [复制链接]

看《零死角玩转STM32》的初级篇中的流水灯,根据他的步骤写完程序,烧进去,结果灯全亮,不闪,后来干脆不高延时,改成如下所示还是全亮;
LED1( ON );     // 亮             LED1( OFF );    // 灭
LED2( ON );                         LED2( OFF );
LED3( ON );                           LED3( OFF );
后又改了一下
  LED1( ON );     // 亮            Delay(0x0FFFEF);               LED1( OFF );    // 灭           
LED2( ON );                        LED2( OFF );                       
LED3( ON );                          LED3( OFF );
结果只有LED1亮;
完整的程序如下

#include "stm32f10x.h"
#include "led.h"
//#define    MI_ERR    (-2)
void Delay(__IO u32 nCount);
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
  LED1( ON );     // 亮
  Delay(0x0FFFEF);
  LED1( OFF );    // 灭
  LED2( ON );
  LED2( OFF );
  LED3( ON );
  LED3( OFF );      
}
}
void Delay(__IO u32 nCount)  //简单的延时函数
{
for(; nCount != 0; nCount--);
}
此帖出自stm32/stm8论坛

最新回复

弱弱的问一句0x0FFFEF;为什么这样延迟呢?  详情 回复 发表于 2014-1-13 16:23
点赞 关注
 

回复
举报

6366

帖子

4928

TA的资源

版主

沙发
 
亮后面有延时,灭后面的延时呢?
此帖出自stm32/stm8论坛
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我把它改成这样还是全亮
int main(void)
{       
        /* LED 端口初始化 */
        LED_GPIO_Config();

        while (1)
        {
                LED1( ON );                          // 亮
                Delay(5000);
                LED1( OFF );                  // 灭
               
                LED2( ON );
                Delay(5000);
                LED2( OFF );
               
                LED3( ON );
                Delay(5000);
                LED3( OFF );      
        }
}

void Delay(int nCount)         //简单的延时函数
{
        for(; nCount != 0; nCount--);
}
此帖出自stm32/stm8论坛
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

4
 
void Delay(__IO u32 nCount)         //简单的延时函数
{
        for(; nCount != 0; nCount--);
上面是源程序的延时函数;我把它改成下面这种就全亮;
void Delay(int nCount)         //简单的延时函数
{
         for(; nCount != 0; nCount--);
}
此帖出自stm32/stm8论坛
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

5
 
是不是 延时不够,变成扫描显示了啊, 第一种和 最后一种的 全亮 是不是 亮度不一样啊,我是新手,猜的
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

6
 
LED1( OFF );  后面加上Delay(5000);
你的LED关掉后又立即ON了
此帖出自stm32/stm8论坛
 
 
 

回复

6366

帖子

4928

TA的资源

版主

7
 
给你说你也没看明白,
那么6楼说的你明白了吗
此帖出自stm32/stm8论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

8
 
你 LED1( OFF );宏写的有问题,贴出来看看
此帖出自stm32/stm8论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

9
 
#define LED_IOPORT        GPIOA        //mini2.0 pa0,1//mini3.0 Pa 2,3
#define LED2_IOBIT         GPIO_Pin_3
#define LED3_IOBIT         GPIO_Pin_2

#define        LED2_LIGHT        LED_IOPORT->ODR |= LED2_IOBIT
#define        LED2_DARK        LED_IOPORT->ODR &= ~LED2_IOBIT
#define        LED3_LIGHT        LED_IOPORT->ODR |= LED3_IOBIT
#define        LED3_DARK        LED_IOPORT->ODR &= ~LED3_IOBIT
此帖出自stm32/stm8论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 6楼 雅剑 的帖子

不明白!详细点,难道我的Delay函数没用
此帖出自stm32/stm8论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 7楼 tiankai001 的帖子

不明白,求大神详解!
此帖出自stm32/stm8论坛
 
 
 

回复

6366

帖子

4928

TA的资源

版主

12
 

回复 11楼 szengjiaqi 的帖子

LEDOFF后面也加个延时,然后试试
此帖出自stm32/stm8论坛
 
 
 

回复

110

帖子

0

TA的资源

一粒金砂(中级)

13
 
会不会延时函数被优化了
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

14
 

回复 10楼 szengjiaqi 的帖子

while (1)
        {
                LED1( ON );                          // 亮
        Delay(5000);
                LED1( OFF );                  // 灭
        Delay(5000);
               
        LED2( ON );
                Delay(5000);
                LED2( OFF );
               Delay(5000);
              
                LED3( ON );
                Delay(5000);
                LED3( OFF );  
               Delay(5000);   
        }

改成这样
此帖出自stm32/stm8论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

15
 
端口没配置好吧,还是时钟没打开
此帖出自stm32/stm8论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

16
 
多谢各位的解答我知道了错在哪里了,延时太短了
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

1

TA的资源

一粒金砂(中级)

17
 
delay 5000太少了 stm32太快了起碼5000*5000
此帖出自stm32/stm8论坛
 
 
 

回复

436

帖子

5

TA的资源

五彩晶圆(初级)

18
 
搞不清楚你的delay是不是太长还是太短,你干脆就不要用delay了,要么用timer来延时,更简单的,不要延时了,在调试模式下加断点,上一句是亮灯,下一句是灭灯,你加断点来看到底是不是按照你的想法和程序流程来的,确定是对灯的操作没问题了,再来搞定延时。不要灯操作也有问题,延时也有问题,然后一起调。问题一个一个的查,一个一个的解决。
此帖出自stm32/stm8论坛
 
 
 

回复

6069

帖子

4

TA的资源

版主

19
 
看楼主的程序好笑

while (1)
{
  LED1( ON );     // 亮    亮
  Delay(0x0FFFEF);
  LED1( OFF );    // 灭  看不到
  LED2( ON ); //           看不到
  LED2( OFF ); //看不到

  LED3( ON ); //看不到


  LED3( OFF );       //看不到


}
关键是你眼不够快。不是程序没写好。哈哈。
此帖出自stm32/stm8论坛
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

20
 

回复 4楼 szengjiaqi 的帖子

int 数据类型是16位,你的延时是Delay(5000);
超出范围了,将int改为unsigned int 就可以
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表