完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在现有的很多入门教程中,程序延时都是使用delay()函数,就是让CPU在空转,什么事情都不做。这个方法在演示实验或者一些简单的应用还可以使用,但是应用到实际的复杂项目中,就不行了。这会消耗大量的CPU资源,导致程序的响应速度慢,很多信号来不及处理,导致控制异常。各位有经验的把你们的经验分享下,大家也可以讨论一下,在实际项目中,你们是如何处理这样的问题呢?有什么技巧吗?
另加说明:在一个程序中,有的程序可以放在中断中执行,可是比如矩阵键盘怎么办?矩阵键盘的去抖延时如何实现? |
|
相关推荐
6个回答
|
|
有一种比较好的方式:一个硬件定时器,产生多个软件定时器,如 5ms 、10ms 、50ms 、500ms 、1s 等。
具体做法是: 在硬件定时器中断中使软件定时器计数器自加,当加到延时值时,把软件定时器标志置 1 。 在 main 函数的 while 循环中 扫描 各个软件定时器的标志,如果 为 1 则执行 相应 语句,并把标志清 0 。 感觉 这种方法 起到了 部分操作系统的功能,当然最好的方法还是用操作系统。。。
最佳答案
|
|
|
|
现在绝大数是用硬件定时的 方法如楼上所说
|
|
|
|
顶一个,同问
|
|
|
|
|
|
|
|
cuyebiren 发表于 2016-12-12 16:14 谢谢指导,十分感谢! |
|
|
|
虽是好贴,但分享者太少了! 顺便说一下,主程序查询标志位时,要注意进入标志位后的程序执行时间,最近我也在学习寻找解决如上问题的方法,多线程的处理方法应该能满足这些要求
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:14 , Processed in 0.525934 second(s), Total 53, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号