delay函数的问题,好久了么有解决

2019-07-21 07:42发布

原子哥的delay函数是用的滴答定时器,好是挺好的,但是我前一段时间发现个问题就是,我主函数里面用到delay函数 定时器中断也用到delay函数,导致延时不正常了,如果只有主函数用延时函数的话是正常的。主函数和定时器中断同时用就不正常了。我初步分析了一下,当主函数正在延时的过程中,这个时候定时器中断了,并且进入了一个中断函数中的延时函数,由于主函数还没有运行完delay函数,进入中断中的延时函数时导致滴答定时器寄存器里面的有关数据丢失,所以导致不准确了,这种情况怎么避免?难道必须的用软件定时吗?有没有别的方法解决这个问题。呼叫各位大神。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
正点原子
1楼-- · 2019-07-21 08:26
是会有影响。因为默认的delay是不可重入的。
所以,中断里面和其他地方一起要用delay的话,自己重写一个给中断用吧
szczyb1314
2楼-- · 2019-07-21 13:06
 精彩回答 2  元偷偷看……
Electronic
3楼-- · 2019-07-21 18:29
函数重入的问题,你实在要在中断中延时就用查询定时器的计数器延时吧
edmund1234
4楼-- · 2019-07-21 20:16
我是从来不建议用这类delay函数的, 但就事论事, 不管是什么函数, 只要是主线程跟中断都会调用的话就一定要考虑重入, 要是觉得复杂, 那就多写一个int_delay函数, 独立的给中断用啊
47933673
5楼-- · 2019-07-21 22:53
szczyb1314 发表于 2018-11-18 16:50
中断函数尽可能快,为啥要在中断里面加延时?

因为我中断里面有一个IIC通讯,没间隔50ms需要检测一次,iic通讯scl  sda需要延时
47933673
6楼-- · 2019-07-21 23:57
edmund1234 发表于 2018-11-19 00:02
我是从来不建议用这类delay函数的, 但就事论事, 不管是什么函数, 只要是主线程跟中断都会调用的话就一定 ...

谢谢

一周热门 更多>