📄 test.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -