时间触发和状态机思想的嵌入式系统 分析都给大家传上去了

来源:互联网 发布:slack mac下载 编辑:程序博客网 时间:2024/04/29 19:58
今天我给大家讲一下:
时间触发的嵌入式系统 :

我先给大家了一个程序:这个程序是在PC机上测试过,大家给点意见!
   #include "stdio.h"  #define TASKmax   5
   typedef unsigned long   u32;
   typedef unsigned int    u16;
    typedef unsigned char   u8;  
   struct Task     
   {        
          void (*Ptask)(void);     
        u8 delay;        
       u8 period;      
        u8 Runme;      

  };


struct Task task[TASKmax];
u8   Task_G;
u8   Task1_time= 10;//10ms
u8   Task2_time= 20;

void task1(void)

{        

   int i=0;      
  for(i=0;i<2;i++)   
 {        
    printf("1\r\n");       

 }

}


void task2(void )

{     

   char j=0;       
   for(j=0;j<2;j++)    
    {        
        printf("2\r\n");       

     };

}

u8 TASK_dele(u8 cn){  

  if(task[cn].Ptask ==0)        

     return 0;                

     task[cn].Ptask= 0x00;     

     task[cn].delay= 0;    
     task[cn].period= 0;      
    task[cn].Runme= 0;   

    return 1;

}

void Task_tr(void )
{   
     u8 taskIndex;       
     for(taskIndex=0;taskIndex< TASKmax;taskIndex++)      
   {              
      if(task[taskIndex].Runme>0)       
      {        
         (*task[taskIndex].Ptask)();                                                 


           task[taskIndex].Runme--;         
        }               

           if(task[taskIndex].period==0)                 

           TASK_dele(taskIndex);      

     }              

 }

u8 task_add(void (*function)(),
u8 delay,u8 period)
{      
     u8 dex=0;     
     while((task[dex].Ptask!=0) && (dex< TASKmax))        dex++;       

     if(dex==TASKmax)    

     return 0;        

     task[dex].Ptask= function;   

     task[dex].delay= delay;     
     task[dex].period= period;   
     task[dex].Runme= 1;   

     return 1;

}

void Task_ref(void )//任务控制
{        
     u8 Task_tran;       
     Task_tran=Task_G;    
    switch(Task_tran)    
    {             

       case  task11:                    //时间判断                   

      //  break;              

       case  task12:                   //时间判断                    

      //如果到了就到下一个状态                   

       break;                

       default:break;      

     }

}


void main()

{              

      //初始化定时器   控制标志位       
      //初始化须要的变量    
      //增加任务      
     //while(1);  
     task_add(task1,10,1); 
     task_add(task2,30,2);     
     //Task_tr();定时器   控制标志位 

    }//以上是系统和基本思想,可以根据自己的程序更改。

http://bbs.eeworld.com.cn/thread-67442-1-1.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 她来看我的演唱会 快穿:娇养反派大佬做替身 不努力种田就要和相公继承皇位了 穿书末世之我是金手指 转生恶少后的魔幻日常 穿书后我成了反派男二的铁血妈粉 带着超市重返年代 新婚夜,我被冷冰冰的王爷读心了 修仙女配拿了反派剧本 影后的假面童话 克死前夫后我成了心软的神 新婚夜,我治好了失明太子的隐疾 沦陷野玫瑰 完球!我的崽居然是反派 重生后她被憨憨相公娇宠了 师祖回归,徒弟各个是疯批大佬 植物人老公苏醒后,她只想逃 他怎么可能是魔尊 农家小团宠:带着空间撩大佬 快穿做个好婆婆 医路芳华 满级真千金:一品女法医 惊!举重妖精被电竞奶狗缠上了 团宠小农女:带着功德空间去逃荒 被迫快穿后我只想当咸鱼 顶流影帝竹马来讨债 穿越后,太子妃靠种田轰动全京城 高考结束后我和死对头HE了 掉马后满级大佬被迫在热搜上开挂 农门悍妻:黑心莲夫君求抱抱 今日宜婚 嗜酒成瘾 肆意诱哄 快穿之反派女配是bug 落水后,我抢了未来首辅的婚! 玄学大佬在八零年代暴富了! 亚人娘补完手册 大女主爽文女配觉醒之后 太上长老她在线带娃 猎命人 夫人被迫觅王侯