新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 最小的多线程框架

最小的多线程框架

作者:时间:2010-05-18来源:网络收藏

case 0:

break;

case 8://最高优先级

//任务8

break;

case 7:

//任务7

break;

……

case 2:

//任务2

break;

case 1:

//任务1

break;

}

}

}

六、程序编写方法

1、主函数

void main(void)

{

InitialMCU();

ActObjReadySet = 0;

while(1){

ActObjScheduler();

}

}

2、中断函数

void ISR_Timer(void)

{

TmrCtr ++;

if(TmrCtr > 5){//40ms

TmrCtr = 0;

ActObjSet(8); //让定时执行的任务就绪

}

}

void ISR_AD(void)

{

_adf = 0;

ADValue = _adrh;

ActObjSet(3);//让计算任务就绪

}

3、任务函数

和其它函数没有区别

void AlarmOut()

{

if(AlarmOutctr > 0){

AlarmOutctr --;

PFD_OUT = !PFD_OUT;

TmrStart(4,15);//1s

}else{

ConctrolStat = END_STAT;

PFD_OUT = 0;

}

}

七、使用任务调度的优势

1、多个同时就绪时,高优先级先执行。

2、高优先级,最长等待时间是上一个正执行的完成时间

3、因为主循环时间最长时是最长线程的执行时间,所以有些中断中执行的代码可以移到任务中。

4、可以减少条件语句。

5、使软件结构更合理,清晰。

八、结语:

本文介绍的方法在HOLTEK系列8位MCU和NXP的LPC900中有数十个项目的应用。并且在这基础上把switch改为函数指针,加上事件队列和事件延迟后,在LPC2000的ARM上成功应用。


上一页 1 2 下一页

关键词: 框架 线程 最小

评论


相关推荐

技术专区

关闭