单片机关键任务优先级的实现学习
发布时间
阅读量:
阅读量
在与整体产品进行联合调试过程中,各独立系统必须严格遵循总体要求进行数据输出,若存在时间偏差,将引发系统异常、控制失败等不稳定状况,甚至可能危及产品安全。
因此,必须保障部分关键任务的优先执行。通常情况下,单片机任务优先级的实现方式主要有两种:通过单片机中断服务中的中断函数来实现 和 借助实时操作系统完成任务调度 。
采用中断服务函数实现的任务优先级对单片机硬件资源有一定依赖性;而基于实时操作系统的任务调度方式,则仅需一个定时器即可实现多任务、多优先级的管理。
在参与某产品的联合调试过程中,总体要求为每5ms向总控发送一次关键数据。
当系统进入联合调试运行状态后,总控会触发超时报警,并提示通信超时。
经过排查,已排除硬件故障、电磁干扰以及程序逻辑错误导致数据未正常发送等问题。
通过比对报警时间发现,该报警出现的时间不具备规律性。使用示波器检测后发现,数据发送周期并未严格遵循5ms的时间间隔,在5ms的时间区间内任意时刻都可能发生关键数据的传输,无法准确预测下一次数据发送的具体时间。一旦系统在规定时间内未能接收到数据,则会触发报警机制。
通过对程序逻辑进行深入分析后确认,问题根源在于单片机运行任务采用顺序执行模式。只有当发送数据的任务轮到执行时才能完成数据发送。若其他任务占用过多执行时间,则会导致发送任务无法在5ms的时间窗口内再次获得运行机会,从而造成无
全部评论 (0)
还没有任何评论哟~
