-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一次中断的软件定时器的回调函数,不能被高优先级的任务打断 #1817
Comments
需要说得更清晰些 |
额...是这样的,在rtconfig.h中 我将RT_TIMER_THREAD_PRIO设为5,在执行软件定时器的回调函数中(#define RT_USING_TIMER_SOFT 1 应该时软件定时器),释放一个信号量,另一个任务的级别设为1,用来接收信号量,在软件定时器释放回调函数后,程序并没有马上跳到另一个更高优先级的任务执行.而是执行完回调函数之后,才去执行另一个优先级高的任务.另外,这个定时器是RT_TIMER_FLAG_ONE_SHOT类型的
还有一件事是,我发现start一个ONE_SHOT定时器,在还没有到达执行回调函数的时间时(就是比如定时5s,现在是3s),这个时候stop这个ONE_SHOT定时器,可是到了5s后,依然会执行回调函数. |
突然意识到您是熊谱翔老师吗??? 很崇拜和尊敬您,感谢您开发的rtt系统 |
timer thread说白了,还是一个线程。所以当一个线程优先级超过timer thread时,必然会去抢占timer thread。 而对于单次定时器,你可以跟踪下(例如记录一些时间戳),看看具体发生了什么。 |
另外还发现一次中断的软件定时器,再没达到定时时间的时候,不能取消执行回调函数,周期的软件定时器就可以
The text was updated successfully, but these errors were encountered: