📄 testucosii.c
字号:
#include <avr/io.h>
#include "ucos_ii.h"
//
OS_STK Task1Stk[OS_USER_TASK_STK_SIZE]={0};
OS_STK Task2Stk[OS_USER_TASK_STK_SIZE]={0};
//OS_STK Task3Stk[OS_USER_TASK_STK_SIZE]={0};
//OS_STK Task4Stk[OS_USER_TASK_STK_SIZE]={0};
//OS_STK Task5Stk[OS_USER_TASK_STK_SIZE]={0};
//
volatile unsigned char t1=0;
volatile unsigned char t2=0;
//volatile unsigned char t3=0;
volatile unsigned char t4=0;
//volatile unsigned char t5=0;
//volatile unsigned char t6=0;
//
OS_EVENT *T2sem=(OS_EVENT *)0;
OS_EVENT *Tmbox=(OS_EVENT *)0;
//
struct msgTask
{
unsigned char cnt;
unsigned char *s;
};
//
struct msgTask T5mbox={1,"Hello"};
struct msgTask *pMsgTsk=&T5mbox;
//
void Task1(void *pdata)
{
pdata=pdata;
/*
#if OS_TICKS_PER_SEC <= (F_CPU/1024/256)
#error "OS_TICKS_PER_SEC < (F_CPU/1024/256) "
#endif
OCR0=F_CPU/1024/OS_TICKS_PER_SEC;
*/
TCNT0=256-(8000000/OS_TICKS_PER_SEC/256); //TCNT0=256-(8000000/OS_TICKS_PER_SEC/1024);
TCCR0=0x07; //1024分频
TIMSK = _BV(TOIE0);
//
MCUCR=0x10;
SREG|=0x80;
//
DDRG=0x1f;
PORTG=0x1f;
//
while(1)
{
PORTG&=0x1b;
OSTimeDly(33);
PORTG|=0x04;
OSTimeDly(33);
//OSTimeDlyHMSM(0, 0, 1, 0);
t1++;
//PORTC^=0x10;
}
}
//
void Task2(void *pdata)
{
//unsigned char err=0;
pdata=pdata;
//
DDRC=0xff;
PORTC=0xff;
while(1)
{
t2++;
//OSTimeDlyHMSM(0, 0, 1, 0);
PORTC= ~_BV(PC6);
PORTC= _BV(PC7);
OSTimeDly(40);
PORTC= ~_BV(PC7);
PORTC= _BV(PC6);
OSTimeDly(40);
}
}
//
int main(void)
{
OSInit();
OSTaskCreate(Task1,0,&Task1Stk[OS_USER_TASK_STK_SIZE-1],1);
OSTaskCreate(Task2,0,&Task2Stk[OS_USER_TASK_STK_SIZE-1],2);
OSStart();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -