⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task_config.h

📁 在基于avr内核的单片机上实现MP3播放器的功能
💻 H
字号:
#define  idle_id  0

uint8  OSRdyTbl ;        // asm("r2");    //任务运行就绪表 
uint8  OSTaskRunningPrio ;//asm("r3");    //正在运行的任务 


unsigned char Stack0_idle[180]; 
unsigned char Stack1[400]; 
//unsigned char Stack2[100]; 
//unsigned char Stack3[100]; 

#define OS_TASKS 2   //id+1 设定运行任务的数量 
struct TaskCtrBlock 
{ 
  unsigned int OSTaskStackTop;  //保存任务的堆栈顶 
  unsigned int OSWaitTick;      //任务延时时钟 
} TCB[OS_TASKS]; 




void OSTaskCreate(void (*Task)(void),unsigned char *Stack,unsigned char TaskID) 
{ 
  unsigned char i;                      

*Stack--=(unsigned int)Task;         //将任务的地址低位压入堆栈, 
*Stack--=(unsigned int)Task>>8;    //将任务的地址高位压入堆栈
  *Stack--=0x00;                     //R1 __zero_reg__             
  *Stack--=0x00;                     //R0 __tmp_reg__ 
  *Stack--=0x80;                      //psw                  

//SREG 在任务中,开启全局中断         
  for(i=0;i<30;i++)    //在 avr-libc 中的 FAQ中的 What registers are used by the C compiler? 
    *Stack--=0;                    //描述了寄存器的作用     
  TCB[TaskID].OSTaskStackTop=(unsigned int)Stack;    //将人工堆栈的栈顶,保存到堆栈的数组中 但是这并不是的栈顶
  OSRdyTbl|=1<<TaskID;      //任务就绪表已经准备好 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -