首页 > 其他分享 >单片机的裸机系统和多任务系统总结

单片机的裸机系统和多任务系统总结

时间:2023-05-19 20:25:31浏览次数:46  
标签:响应 中断 轮询 系统 裸机 单片机 事件 多任务

一、裸机系统

1.1轮询系统

 轮询系统是裸机编程时,先初始化好相关硬件,然后让主程序在一个死循环内不断循环,顺序完成各种事情。伪代码如下所示:

 1 int main(void)
 2 {
 3     /* 硬件相关初始化 */
 4     HardWareInit();
 5 
 6     /* 无限循环 */
 7     for(;;) {
 8         /* 处理事情1 */
 9         DoSomethin1();
10 
11         /* 处理事情2 */
12         DoSomethin2();
13 
14         /* 处理事情3 */
15         DoSomethin3();
16     }
17 }
18 轮询系统伪代码
轮询系统伪代码

轮询系统结构简单,适用于只需要顺序执行代码且不需要外部事件驱动就能完成的事。如果需要加入一些类似按键检测等外部事件用来模拟紧急报警等,系统实时性响应就不那么好了。

例如(事情3)是按键检测,当按键按下为报警,这时候需要立马响应并做紧急处理;如果此时程序执行到(事情1),且如果(事情1)执行时间要很久,那么当执行到(事情3)的时候,就会丢失掉一次事件,按键检测就会被漏掉。

1.2前后台系统

前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里称之为前台,main函数中的无限循环我们称之为后台。如下图所示:

 单片机顺序执行后台程序,如果有中断来临,那么中断会打断后台程序的正常执行,转而去执行中断服务程序。

在中断服务程序中标记事件,如果事件要处理的事情很短,则可以在中断服务程序中处理,如果事件要处理的事情比较多,则可以返回到后台程序里面处理。

相对于轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,高优先级的中断可以打断低优先级的中断,这可以大大提高程序的实时响应能力。

单如果软件逻辑过程过多,中断处理逻辑不合理时,也会导致后面的逻辑实时性降低。

1.3多任务系统

相比于前后台系统中后台顺序执行的程序主体,在多任务系统中,根据程序的功能,我们把程序的主题分割为一个个独立的,无限循环且不能返回的子程序,这个子程序我们称之为任务。

每一个任务都是独立的,互不干扰的,且具备自身的优先级,它由操作系统调度管理。

加入操作系统后,我们不用精心设计程序执行流,不用担心每个模块之间是否存在干扰。因此加入操作系统后我们的编程变得更加简单了。整个系统随之带来的额外开销就是操作系统占据的一些flash和ram。现在的单片机的flash和ram越来越大,足以抵挡rtos的开销。

1.4三种系统的软件模型区别

模型

事件响应  事件处理 特点
轮询系统 主程序 主程序 轮询响应事件,轮询处理事件
前后台系统 中断 主程序 实时响应事件,轮询处理事件
多任务系统 中断 任务 实时响应事件,实时处理事件

标签:响应,中断,轮询,系统,裸机,单片机,事件,多任务
From: https://www.cnblogs.com/futurelearning/p/17416074.html

相关文章