为什么我的单片机程序没有加while(1)这个循环,它确能自己循环?怎么才能让实验室不循环?

为什么我的单片机程序没有加while(1)这个循环,它确能自己循环?怎么才能让实验室不循环?,第1张

其实这个事没什么很神秘,你觉着不可思议是因为你不熟悉CPU内部的原理孝掘。

你可以自己试一下这个事情,在你的开发环境里软件调试状态,把程序调进出单步运行,最好是在反汇编状态下运行,扒稿看程序在进行main循环之前做了什么,在你的while循环结束之后它又做了什么。如巧此核果你试过之后还不明白,可以追问。

任何程序都可能出现死循环,不是C语言特有的。

出现死循环的可能性很多,除了常见和较悔盯谈低级的编码错误,还有不可控的外部条件引起,比如读磁盘遇到坏区反复读也陷入死循环。

避免死循环的方法,只能是编写代码时考虑周到,时刻想着如果死循环应怎么处理,在代码埋入预防措施,比如用时钟中断计时或消息之类(此时宁愿执行慢也要防跳不出陷阱),跟程序员的经验有则腊关,没有绝对有效的方法。

不是所有死循环都是有害的,有些业务必须处于碧碰死循环中等待事务触发,基于事件的程序就往往如此,像网络通讯,肯定要死循环不断检测通讯端口有没有数据传入。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12376604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存