关于开发中如何防止死等程序导致其它任务运行不了方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于开发中如何防止死等程序导致其它任务运行不了
方法
在嵌入式软件开发中,比如单片机的程序,我们一定会写到一个大的死循环的程序,也就是轮询IO口,通常用
while(1)
{
}
来实现大循环,程序就会在while(1)中不断的循环执行一些任务,但是,任务与任务之间如果存在延时,就会大大的削弱整个架构的实时性,虽然现在的高级单片机ARM已经具有了多线程的机制,但是避免不了的依然是要写死循环,也就是说,表面上看到程序是一起在跑的,其实是把时间切成若干份,然后进行调度,在linux内核中,fork一条进程需要调度,do_thread 也需要进行调度。
最近在工作上遇到一个这样的问题,串口协议要求比如等到IO口为低电平,数据才能发送。关于这个问题,没别的方法,按照那个架构来说只能死等while(等到IO口低电平输出),但是这样就会遇到一个问题,如果一直死等,万一IO没有低电平输出,那幺就会发生丢包的可能以及其他任务会被直接影响到运行,毕竟单片机一般采用的架构都是顺序执行的,但是看到有工