OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5846|回复: 9

跑马灯里delay_ms(500)括号里面的500指的的是灯亮500ms吗

[复制链接]

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-12-18
在线时间
2 小时
发表于 2018-12-18 16:09:31 | 显示全部楼层 |阅读模式
1金钱
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

这段程序里,500指的是灯亮的时间为500ms吗?

最佳答案

查看完整内容[请看2#楼]

是啊,函数名字不是写着了么/....具体得看你的晶振和时钟配置....
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-12-18 16:09:32 | 显示全部楼层
是啊,函数名字不是写着了么/....具体得看你的晶振和时钟配置....
猪猪熊呢?
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-12-18
在线时间
2 小时
 楼主| 发表于 2018-12-18 16:42:31 | 显示全部楼层
323232 发表于 2018-12-18 16:35
是啊,函数名字不是写着了么/....具体得看你的晶振和时钟配置....

在哪里看晶振和时钟的配置,我delay里面设置的时间,和实际灯亮的时间总是对应不上
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-12-18 16:44:43 | 显示全部楼层
jingjing1 发表于 2018-12-18 16:42
在哪里看晶振和时钟的配置,我delay里面设置的时间,和实际灯亮的时间总是对应不上

时钟的配置在软件里,配置RCC寄存器的函数里,自己找找吧,还有看看自己晶振多少M的,自己算算。
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-12-18 16:48:53 | 显示全部楼层
最简单的方法,将灯的引脚接到示波器上,然后用这个函数delay_ms(500);  看看中间跳变的时间是多少,比如说是xms,那么你就把函数改成delay_ms(2500/x);不就好了(500*(x/500))
猪猪熊呢?
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-12-18
在线时间
14 小时
发表于 2018-12-18 16:51:21 | 显示全部楼层
B5拉高500ms,E5拉低500ms
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-12-18
在线时间
2 小时
 楼主| 发表于 2018-12-18 17:07:36 | 显示全部楼层
323232 发表于 2018-12-18 16:48
最简单的方法,将灯的引脚接到示波器上,然后用这个函数delay_ms(500);  看看中间跳变的时间是多少,比如说 ...

好的 这是个好方法 谢谢
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-12-18
在线时间
3 小时
发表于 2018-12-18 17:44:08 | 显示全部楼层
你好,我是小白,第一次来stm32论坛,针对你这个问题,个人觉得有3个方法可以试验:
1、理解delay_ms(X)这个函数,看是不是x为1,就是延时1ms,如果这样那就是500ms;
2、使用软件调试,设置断点,单独看这个delay函数的运行时间是否为500ms;
3、你把500改成1000,然后带着LED灯实际看是不是间隔1s闪烁。
另外问1句,这个delay函数语句是不是要放到第二行,给个初始值,然后delay和初始值反向进行无限循环才是闪烁呀:比如亮,然后开始循环:持续1s,灭,再持续1s,如此循环。
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-12-18
在线时间
2 小时
 楼主| 发表于 2018-12-18 18:14:31 | 显示全部楼层
zwwstar 发表于 2018-12-18 17:44
你好,我是小白,第一次来stm32论坛,针对你这个问题,个人觉得有3个方法可以试验:
1、理解delay_ms(X) ...

1、delay这个函数应该是(x)x如果为1 那就是延时1ms
2、但是我实际中,led灯亮的时间和我设置的时间是不一样的,我设置了x=10000,那样的话应该是灯亮10s,但是实际中灯就是闪一下,所以这个问题就不知道怎么来解决了
3、这几句只是部分的程序,后面还有一些程序我没有粘贴上来,全部的程序是可以实现灯的闪烁的,我用的是while循环来实现的
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-12-18
在线时间
3 小时
发表于 2018-12-19 13:41:52 | 显示全部楼层
jingjing1 发表于 2018-12-18 18:14
1、delay这个函数应该是(x)x如果为1 那就是延时1ms
2、但是我实际中,led灯亮的时间和我设置的时间是 ...

噢,麻烦你把delay函数体发出来看看,按道理不应该就闪一下哇
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 17:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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