嵌入式技术william hill官网
直播中

建立建利12

8年用户 1329经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

rt_thread_mdelay能在哪些回调函数的环境中使用?

rt_thread_mdelay这个函数,在普通线程、软件定时器、串口中断的回调函数三个环境中中,哪个环境可以使用?

回帖(2)

mintsy

2022-5-12 09:19:28
rt_thread_mdelay 的作用是使线程休眠,也就是调用该函数后可以使当前线程挂起一段指定的时间,当这个时间过后,线程会被唤醒并再次进入就绪状态。所以在普通的线程中是可以使用的。

在中断回调函数中不能使用延时,因为中断需要快进快出,如果在中断中使用延时的话会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了,因此所有的中断回调函数尽量不要调用延时函数(或者说不能调用延时函数)。

软件定时器不知道你想在那个地方调用延时函数,因为软件定时器本来就是到达定时的时间后软中断,在软件定时器的回调函数中也不能调用延时函数,通常会在软件定时器的回调函数中释放一个信号量,然后在另一个线程中去获取该信号量,以达到同步的效果。
举报

小麦地

2022-5-12 09:19:36
普通线程,软件定时器中可用;uart中断回调不能用。

软件定时器本质上是个线程,默认优先级为4。不过,我不建议在软件定时器中用延时,会影响其他定时器的回调。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分