打印

尝试写个voidtask

[复制链接]
1728|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
void_c|  楼主 | 2009-6-23 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IDT, se, TI, ni, ck
尝试写个voidtask,没有空闲任务。
空闲时运行主函数。
移植atmega16+iaravr,atmega16+winavr,stm32+iararm

#include "config.h"

TTask TaskA,TaskB,TaskC;

void TaskAProc(void)  

    sei();                     //任务开始开中断
    while(1)
   {
       PORTD^=_BV(7);   
       TSK_Delay(VT_TICKS_PER_SEC/2);    
   }
}

void TaskBProc(void)  
{
    sei();                     //任务开始开中断
    while(1)
   {  
       PORTD^=_BV(6);     
       TSK_Delay(VT_TICKS_PER_SEC/3); 
   }
}

void TaskCProc(void)  
{
    sei();                    //任务开始开中断
    while(1)
    {
      PORTD^=_BV(5);        
      TSK_Delay(VT_TICKS_PER_SEC/4);   
    }
}

int main()
 {
     cli();                        //任务开始调度前,要关中断
     
     DDRD=_BV(7)|_BV(6)|_BV(5);
     PORTD=_BV(7)|_BV(6)|_BV(5);
          
     TCNT2 = 0;
     TCCR2=_BV(WGM21) | T2_CLK_DIV_128;
     OCR2=OCR2_INIT;
     TIFR|=_BV(OCF2);
     TIMSK=_BV(OCIE2);

#if STACK_DOUL==1                 //AVRIAR 双堆栈
     TSK_Init(&TaskA,TaskAProc,0,64,32);
     TSK_Init(&TaskB,TaskBProc,1,64,32);
     TSK_Init(&TaskC,TaskCProc,2,64,32);
#else                                      //AVRGCC 单堆栈
    TSK_Init(&TaskA,TaskAProc,0,64+32);
    TSK_Init(&TaskB,TaskBProc,1,64+32);
    TSK_Init(&TaskC,TaskCProc,2,64+32);
#endif
           
           
    TSK_Start();
    
    sei();                 //主程序开中断
    while(1)
    {   
     
         SleepIdle();       //任务空闲时休眠
        
    }
}

SIGNAL(TIMER2_COMP_vect)
{     
      VT_TicksHandler();
      TSK_Swap();     
}

相关链接:https://bbs.21ic.com/upfiles/img/20096/2009623113629274.rar

相关帖子

沙发
ayb_ice| | 2009-6-23 11:41 | 只看该作者

没有什么意义

前后台中简单的状态机就轻松搞定这些

使用特权

评论回复
板凳
void_c|  楼主 | 2009-6-23 12:55 | 只看该作者

同意楼上

确实如此。

只是自己学习而已。

voidtask本身一个目的是想把前后台系统与多任务系统结合起来。
(说这话大侠们又要笑了)
所以没有IDLE TASK,取而代之是MAIN TASK。
任务空闲时,运行主函数(即MAIN TASK)。

如果只看主函数,就好像是前后台系统一样。



使用特权

评论回复
地板
hyhjjg| | 2009-6-23 14:06 | 只看该作者

当心当机啊

使用特权

评论回复
5
hyhjjg| | 2009-6-23 14:06 | 只看该作者

呵呵,开个玩笑

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

38

帖子

0

粉丝