多线程框架

时间:2011-12-28来源:网络

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

关键词: 框架 线程

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版