1、程序框架简介
根据多年的编程经验来看,单片机的程序框架大体分为三种分别是顺序执行架构、分时轮询架构和RTOS.(如果还有什么特别的框架欢迎大家留言学习)
顺序执行架构:该框架或许是我们大部分初学者最常用的一种代码编写格式了,比如说首先执行我们的按键检测,然后执行显示数码管,然后去做其他事情!这样一个任务一个任务执行,任务较少时该架构比较简单稳定,当任务比较复杂,逻辑分析就相对比较麻烦,而且程序之间耦合也比较大!需要开发者对程序足够的熟悉,且不便于扩展!
分时轮询架构:这可能是大部分有一定编程基础的程序员或者对小资源单片机进行开发所选用的一种程序架构,今天这也是我们介绍的主题,后面会进行详细介绍。
RTOS:这可能是大部分单片机编程老鸟所选用的一种架构了,RTOS对任务的管理非常丰富,能够让CPU获得一个更大的利用率!那么我们常用的有FreeRTOS,uCos,等等,一般会获得商业使用权等等,也有免费的!
上述的程序框架,各有优劣,需要我们根据具体的情况来选用对应的框架!
2、分时轮询框架详解
从名字上看该框架是通过时间事件发出消息,主任务通过轮流查询对应的时间事件进行运行,因为我们大部分的状态程序都是以时间为节点进行转移和控制的,那么该框架就能够使用,并且我们的中断仅仅是外部给予的一种信号,我们对应的中断服务函数里面进行处理便好,比如:我们的串口接受,当相应接受中断,我们便可以接受到缓存,然后置位相应的标志位,时间任务便会查询、处理。
缺点:该框架的缺点也是很明显的,就是对任务中特殊事件的处理不够及时,不过对于大部分我们大部分项目都还是可以接受的,并不需要实时的处理!
好了,废话不多说,上代码!
//TaskManage.h
#ifndef __TASKMANAGE__#define __TASKMANAGE__/************************************************************ * Fuction :数据类型定义区 * Author :(公众号:最后一个bug) ***********************************************************/#define TRUE (1)#define FALSE (0)#ifndef NULL#define NULL