这里所谓的内核就是软件定时器,要想设计出简单易用的软件定时器,至少要做到不增加代码的耦合度。
Background和Foreground
一般小型系统由Background和Foreground构成。Background称为任务区,Foreground称为中断区。对实时性要求很高的操作要由中断区的中断服务程序来完成。位于Background区域的任务响应时间取决于超级循环(Super-Loops)执行一次的时间,也称之为扫描周期ScanCycleTime。扫描周期并不固定,任务执行过程中扫描周期的最大值意味着任务最坏的响应时间。
典型的小型系统任务区执行伪代码如下,
int main(void)
{
内核初始化;
外设初始化;
while(1){
/*超级循环(Super-Loops)*/
内核调度;
任务1;
任务2;
任务3;
}
}
内核Kernel
内核主要为应用层的任务提供调度。主要由系统时钟sysClock和看门狗时钟watchdog的相关函数构成。
本章提到的函数原型可在ml_kernel.h中找到。
系统时钟SysClock
microLite要求开发人员设置定时中断来实现超时控制delay与延时sleep功能。
时钟节拍中断频率由tickRate决定,在MLKernel.Init的第一个参数设置,可设置为1000或100,表示每秒产生的tick数目,一般使用1000。microLite使用的时间单位为tick&#x