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

📄 main.c.bak

📁 本RTOS参考 usOS-II, ARM-RTX
💻 BAK
字号:
#include "include.h"
/**************************************************************************************
* 函数原型:
* 函数功能:
* 输入参数:
* 输出参数:
* 函数说明:
**************************************************************************************/

OS_TID  TaskA_ID;
OS_TID  TaskB_ID;
OS_TID  TaskC_ID;
OS_TID  TaskD_ID;

/**************************************************************************************
函数名称:InitT0
函数功能:定时器0初始化
输入参数:
输出参数:
函数说明:T0工作于模式1,16位计数器,1ms中断一次
**************************************************************************************/
void InitT0(void)
{  
   TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
   TMOD |= 0x01;              //T0工作于模式1
   TH0=T0H_COUNTER;         //
   TL0=T0L_COUNTER;
   
   Timer0Run();             //TR0=1;T0开始计数
   //PT0=1;                 //T0中断优先级高
   IrqAll_Enable();         //打开总中断
   IrqT0_Enable();          //打开T0中断允许
}

/**************************************************************************************
函数名称:InT0
函数功能:定时器0中断服务程序
输入参数:
输出参数:
函数说明:1ms中断一次
**************************************************************************************/
//void InT0(void) interrupt 1 //using 1
//{ IrqT0_Unable();
  
//  TH0=T0H_COUNTER;
//  TL0=T0L_COUNTER;
    
//  IrqT0_Enable();
//}



void  MainInit(void)
{   
   
   InitT0();
}

//void AutoAdd(char *buf, char n)
//{char i;
//   for(i=0; i<n; i++,buf++)
//   {
//     (*buf)++;
//     if(i==1)
//       //OSWait(K_TMO,5);
//       os_dly_wait(ms(100));
//     (*buf)++;
//   }
//     
//}

void TaskA(void)
{char a;

    while (1)
    {
        a++;
        //OSWait(K_TMO,5);
        P1 = P1^B0000_0001;
        os_dly_wait(ms(1000));
    } 
}

void TaskB(void)
{char b;
    while (1)
    {
        b++;
        //OSWait(K_TMO,10);
        os_evt_wait_or ( 0x01,  ms(60000) );
        P1 = P1^B0000_0010;
        //os_dly_wait(ms(4000));
    }
}


void TaskC(void)
{char c;
 //char buf[3];
    while (1)
    {
        
        c++;
        //AutoAdd(buf, 3);
        //OSWait(K_TMO,15);
        P1 = P1^B0000_0100;
        os_dly_wait(ms(8000));
    }
}

void TaskD(void)
{char d=0;
 //char buf[3];
    while (1)
    {
        
        d++;
        
//        if(d==5)
//        {
//           OSTaskResume(1);
//           OSTaskSuspend(3);
//        }
        
        //AutoAdd(buf, 3);
        //OSWait(K_TMO,15);
        
        os_evt_set(0x01, TaskB_ID);
        P1 = P1^B0000_1000;
        os_dly_wait(ms(16000));
    }
}

/*
//main~TaskA, main~TaskB, main~TaskC, main~TaskD
//init~TaskA, init~TaskB, init~TaskC, init~TaskD

*/
uint8 xdata taskA_stack[50];
uint8 xdata taskB_stack[50];
uint8 xdata taskC_stack[50];
uint8 xdata taskD_stack[50];


void init (void)
{
    
    //在 os_sys_init 中调用 OSInit(SP);
    
    //OSTaskCreate(TaskA, 0);
    //OSTaskCreate(TaskB, 1);
    //OSTaskCreate(TaskC, 2);
    TaskA_ID=os_tsk_create_user( TaskA, 0, taskA_stack, sizeof(taskA_stack) );
    TaskB_ID=os_tsk_create_user( TaskB, 1, taskB_stack, sizeof(taskB_stack) );
    TaskC_ID=os_tsk_create_user( TaskC, 2, taskC_stack, sizeof(taskC_stack) );
    TaskD_ID=os_tsk_create_user( TaskD, 3, taskD_stack, sizeof(taskD_stack) );
    
    //os_dly_wait(ms(100));
    
    //os_tsk_delete_self ();
    MainInit();
    
    //OSTaskSuspend(TaskB_ID);
    DelayNop(1);
    
}
//44.2368MHz
void main(void)
{//char ie_par;

    DelayNop(1);

    os_sys_init(init);
    
    //MainInit();
    
    
    while(1)
    {
      
      DelayNop(1);
      PCON = PCON | 0x01;   // CPU进入休眠状态
      
      //ie_par=IE;
      DelayNop(1);
    }
      
}

⌨️ 快捷键说明

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