OpenEdv-开源电子网

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

求助跑马灯实验小问题

[复制链接]

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-8-10 16:47:11 | 显示全部楼层 |阅读模式
3金钱
刚看完原子哥跑马灯实验的视频我有个疑问。
int main(void)
{
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_3);
delay(500);

GPIO_SetBits(GPIOC,GPIO_Pin_3);
delay(500);
}
}

假设PA.3  和Pc.3连接LED。但是C语言不是顺序执行么?为什么会两个灯一起亮两个灯一起灭??@正点原子

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-8-10 16:47:12 | 显示全部楼层
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2017-8-10 17:06:04 | 显示全部楼层
你这个程序能跑马吗?仔细再学习一下要不就马跑了!
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-10 17:08:40 | 显示全部楼层
烟酒不沾 发表于 2017-8-10 17:06
你这个程序能跑马吗?仔细再学习一下要不就马跑了!

额,,没懂你什么意思,因为我是节选的,初始化和定义等等部分就不要在意啦,讨论的是逻辑问题。
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-10 17:14:24 | 显示全部楼层

也就是说其实流程是
先第一个等亮;
第二个灯亮
延时500ms;
然后第一个灯灭,
第二个灯灭。

是这样一个意思嘛???
回复

使用道具 举报

19

主题

126

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-8-12
在线时间
50 小时
发表于 2017-8-10 17:51:02 | 显示全部楼层
你就不可以先把完整程序弄上来吗?要不然你哪些程序有,哪些没有都不知道,怎么讨论
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-8-4
在线时间
4 小时
发表于 2017-8-10 23:33:31 | 显示全部楼层
你这个程序灯应该一直不亮吧,led灯是电平控制的,你GPIO_SetBits(GPIOA,GPIO_Pin_3)A3会一直是高电平,订会一直灭。
跑马灯应该在while中先使led1亮,led2灭,然后延时(延时时间要超过人眼的视觉暂存时间才能看到效果),led1灭,led2亮,延时。这才是跑马灯
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-11 08:32:06 | 显示全部楼层
路人甲乙丙丁 发表于 2017-8-10 23:33
你这个程序灯应该一直不亮吧,led灯是电平控制的,你GPIO_SetBits(GPIOA,GPIO_Pin_3)A3会一直是高电平, ...

奥我明白你的意思了,是我少打了一个流程。
不过现在不考虑什么是跑马灯,我就想两个灯一起亮,一起灭。那可你的这个回答我可不可以理解为流程是这样:
1、LED1亮;
2、及短延时(肉眼不可见);
3、LED2亮;
4、肉眼可见延时;
5、LED1灭;
6、肉眼不可见延时;
7、LED2灭;

可以这么理解嘛??
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-11 08:34:15 | 显示全部楼层
魑魅魍魉 发表于 2017-8-10 17:51
你就不可以先把完整程序弄上来吗?要不然你哪些程序有,哪些没有都不知道,怎么讨论

其实我就是想知道,
SET(LED1);
SET(LED2);
delay(500);//延时500ms
RESET(LED1);
RESET(LED2);

在这个流程中,SET(LED1)和SET(LED2)是同步执行还是有个肉眼不可见延时的顺序执行?
回复

使用道具 举报

29

主题

311

帖子

0

精华

高级会员

Rank: 4

积分
747
金钱
747
注册时间
2016-5-21
在线时间
199 小时
发表于 2017-8-11 08:39:23 | 显示全部楼层
q247341184 发表于 2017-8-11 08:34
其实我就是想知道,
SET(LED1);
SET(LED2);

在线仿真,单步执行
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3862
金钱
3862
注册时间
2017-3-7
在线时间
1686 小时
发表于 2017-8-11 08:42:05 | 显示全部楼层
不可能真正意义上的同步执行,执行一条命令都要时间,没延时的话肉眼是看不到差别的
回复

使用道具 举报

17

主题

231

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2085
金钱
2085
注册时间
2016-8-8
在线时间
362 小时
发表于 2017-8-11 09:07:16 | 显示全部楼层
y因为执行一条语句时间太快 你感觉不到 所以看起来是同步执行 debug单步看下就明白了
黑夜给了我黑色的眼睛,我却用它来寻找白花花的银子,黄灿灿的金子,以及红彤彤的毛爷爷
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-3-20
在线时间
9 小时
发表于 2017-8-11 09:27:28 | 显示全部楼层
延时时间太短
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-11 10:13:30 | 显示全部楼层
守候ocean 发表于 2017-8-11 09:07
y因为执行一条语句时间太快 你感觉不到 所以看起来是同步执行 debug单步看下就明白了

懂了,非常感谢
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-11 10:13:42 | 显示全部楼层

理解了,非常感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-20 15:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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