多任务编程.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多任务编程

三种编程方式;While(1)大循环;定时器 中断编程;多任务编程;void tsk1() { led1=~led1; tsk1_time=10; } void tsk2() { led2=~led2; tsk2_time=20; } void tsk3() { led3=~led3; tsk3_time=100; };void tsk1() { led1=~led1; tsk1_time=10; } void tsk2() { led2=~led2; tsk2_time=20; } void tsk3() { led3=~led3; tsk3_time=100; };void tsk2() { switch(step2) { case 0: step2=1; 步骤1 break; case 1: step2=0; 步骤2 break; } tsk2_time=10; } ;?;#define TSK_MAX 10 //任务最大个数 typedef void (*FUNC)(int* step); //任务函数指针 typedef struct { unsigned char FLAG; //任务存在标志位,1任务存在,0 FUNC func; int CNT; //节拍计数器 int step; //步骤计数器 }TSK; //任务参数结构体 TSK tsk[TSK_MAX]; unsigned char tsk_cnt; //任务计数器; void TSK_STEP_Init() //节拍时钟初始化 1ms为节拍 { TA0CCTL0 = CCIE; // CCR0 interrupt enabled TA0CCR0 = 32; TA0CTL = TASSEL__ACLK + MC__UP + TACLR; // SMCLK, upmode, clear TAR } void TSK_CLEAR() //任务清零 { unsigned char i; for(i=0;iTSK_MAX;i++) { tsk[i].FLAG=0; tsk[i].func=0; tsk[i].CNT=0; tsk[i].step=0; } } void TSK_Init() //初始化 { tsk_cnt=0; TSK_CLEAR(); TSK_STEP_Init(); };void register_TSK(FUNC func,unsigned char PRIO) //注册任务 func 是任务 的回调函数 PRIO是优先级 { //优先级就是任务在结构体数组的位置,排得越前优先级越高 if(PRIOTSK_MAX) if(!tsk[PRIO].FLAG) { tsk[PRIO].FLAG=1; //任务存在标志位置1,表明该任务以存在 tsk[PRIO].func=func; tsk[PRIO].step=0; } } void DELET_TSK(TSK* tsk) //删除某个任务 { if(tsk-FLAG) { tsk-FLAG=0; tsk-func=0; tsk-CNT=0; tsk-step=0; } };void delay_step(int time) //节拍延时函数等价于将该任务的节拍计数器CNT置为N { tsk[tsk_cnt].CNT=time; } void TSK_SW() //从优先级最高的任务(第0个任务)到优先级最低的任务(第TSK_MAX-1个任务)依次扫描, { //若该任务存在(FLAG=1),同时该任务的节拍计数器CNT=0,调用该任务的回调函数。 for(tsk_cnt=0;tsk_cntTSK_MAX;tsk_cnt++) { if(tsk[tsk_cnt].FLAG) { if(tsk[tsk_cnt].CNT=0) tsk[tsk_cnt].func(tsk[tsk_cnt].step); } } }

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档