test.c

来自「关于UCOS在PIC18F458上的测试移植范例,编译是在MICCHIP的C18」· C语言 代码 · 共 90 行

C
90
字号
#include    "includes.h"
#include    <timers.h>
OS_STK  TestTaskStk[100L];
OS_STK  PUTIOTaskStk[100L];
OS_STK  SemTaskStk[100L];
OS_EVENT *SecFlag;
OS_EVENT *Flag;
void PUTIOTask(void *pdata);
void TestTask(void *pdata);
void HardWareInit(void);

void HardWareInit(void)
{
   ADCON1 = 0X00001110;
   PORTA = 0x0000000;
   TRISAbits.TRISA4 = 0;
   TRISAbits.TRISA5 = 0;
   TRISBbits.TRISB0 = 1;
   TRISBbits.TRISB4 = 0;
   PORTBbits.RB4 = 0;
}
void PUTIOTask(void *pdata)
{
   INT8U err;
    for(;;)
    {
       OSSemPend(SecFlag, 0, &err);
       //PORTBbits.RB4 = 1;
       PORTAbits.RA5 = 1;
       //PORTAbits.RA4 = 0;
      // OSTimeDly(60);
     }
}
void SemTask(void *pdata)
{
   INT8U TimCntr = 0;
    for(;;)
    {
       OSTimeDly(2);
       PORTBbits.RB4 = 1;
       TimCntr++;
       if(TimCntr == 20)
         {
           OSSemPost(SecFlag);
           TimCntr = 0;
          } 
     }
}
void TestTask(void *pdata)
{
    pdata = pdata;
    // enable interrupts
    OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1);
    WriteTimer0(-25000);

    // Initialize statistics task
    OSStatInit();

    // Start up other tasks
    OSTaskCreate(PUTIOTask, (void *)0, &PUTIOTaskStk[0], 9);
    OSTaskCreate(SemTask, (void *)0, &SemTaskStk[0], 6);
    //Initialize PORTC
    //ADCON1=0X00001110;
    //PORTA = 0x0000000;
    //TRISAbits.TRISA4 = 0;
    //TRISAbits.TRISA5 = 0;
    //TRISBbits.TRISB0 = 1;
    //TRISBbits.TRISB4 = 0;
    //PORTBbits.RB4 = 0;
    // task loop
    HardWareInit();
    for(;;)
    {
        //PORTBbits.RB4 = 1;
        PORTAbits.RA5 = 0;
        //PORTAbits.RA4 = 0;
        OSTimeDly(20);
    }
}

void main (void)
{
    INTCONbits.GIEH = 0;
    OSInit();
    OSTaskCreate(TestTask, (void *)0, &TestTaskStk[0], 4);
    SecFlag = OSSemCreate(0);
    OSStart();
}

⌨️ 快捷键说明

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