OpenEdv-开源电子网

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

关于能否控制跑马灯闪烁次数的疑问?

[复制链接]

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
发表于 2022-1-13 14:20:20 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 ZCYZSHNR 于 2022-1-13 14:24 编辑

给的标准例程是while(1)死循环让跑马灯持续闪烁,只是稍加修改,那加一个while循环控制闪烁次数理论上可行(其他循环如for循环也试过),但烧录进去跑马灯是始终在闪烁,不是像预计那样闪烁三次就停止,while语句的控制条件毫无作用,不知道是什么原因能让主程序一直运行,还请大佬指教一二!
(看过一个相关贴子是也是想如何让跑马灯停下来,看回复貌似并没有做出合理解答)


20220113142123.png

最佳答案

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

你试下把return 0 改成while(1)死循环试试
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4305
金钱
4305
注册时间
2019-9-4
在线时间
896 小时
发表于 2022-1-13 14:20:21 | 显示全部楼层
你试下把return 0  改成while(1)死循环试试
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2022-1-13 14:33:41 | 显示全部楼层
结论:可以,纯粹的C语言逻辑处理
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 14:43:55 | 显示全部楼层
bin133 发表于 2022-1-13 14:33
结论:可以,纯粹的C语言逻辑处理

请问你烧录进去板子试验过了?我反正不行。。。
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2022-1-13 14:47:00 | 显示全部楼层
ZCYZSHNR 发表于 2022-1-13 14:43
请问你烧录进去板子试验过了?我反正不行。。。

我指的是控制跑马灯闪烁次数可以,不是你的代码可以
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 14:56:59 | 显示全部楼层
bin133 发表于 2022-1-13 14:47
我指的是控制跑马灯闪烁次数可以,不是你的代码可以

哦,感谢你的回复
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 15:08:02 | 显示全部楼层
A571157242 发表于 2022-1-13 14:44
你试下把return 0  改成while(1)死循环试试

原来那标准例程不就是死循环么,所以灯会一直闪啊,我想让灯闪三四次就结束那种实验现象,不知道有没理解到你的意思
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-1-13 15:25:20 | 显示全部楼层
本帖最后由 LcwSwust 于 2022-1-13 15:27 编辑

A571157242 说得对,程序运行return 0会使单片机复位。
应将最后的
return 0;
改为
while(1);
return 0;
专治疑难杂症
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 15:28:12 | 显示全部楼层
LcwSwust 发表于 2022-1-13 15:25
A571157242 说得对,程序运行return 0会使单片机复位。
应将最后的
return 0;

牛哇牛哇,谢谢了
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 15:47:46 | 显示全部楼层
A571157242 发表于 2022-1-13 14:20
你试下把return 0  改成while(1)死循环试试

大佬,能提点一二,不加return 0;的话灯还是会一直闪,只有让程序一直去执行死循环才能让跑马灯停下来么,有其他方法建议能提点一下么,万分感谢
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-12-7
在线时间
9 小时
 楼主| 发表于 2022-1-13 15:59:59 | 显示全部楼层
LcwSwust 发表于 2022-1-13 15:25
A571157242 说得对,程序运行return 0会使单片机复位。
应将最后的
return 0;

大佬,不知能否再提点一二,不加return 0;的话灯还是会一直闪,单片机是自动复位?只有让程序一直去执行死循环才能让跑马灯停下来么,有其他方法建议能提点一下么,万分感谢
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-1-13 16:14:16 | 显示全部楼层
ZCYZSHNR 发表于 2022-1-13 15:59
大佬,不知能否再提点一二,不加return 0;的话灯还是会一直闪,单片机是自动复位?只有让程序一直去执行 ...

main返回之后,具体是不是复位我也不清楚,估计要从汇编代码上找一找,也可能是执行了未知的代码。
从现像看,就是复位了。
我所使用的单片机:51、AVR、STM32程序中的main函数最后都会有死循环while(1),从不让main执行到返回。
其它方法我没去考虑,while(1)挺好啊,要不写个for(;;);?
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 06:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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