?? main.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;
TIMSK&=0xFC;
#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=0;
TCCR0=(1<<WGM01)|0x05;
TIMSK|=2;
DDRB|=0x02;
while(1)
{
OSTimeDly(2);
t1++;
PORTB^=0x02;
}
}
void Task2(void *pdata)
{
unsigned char err=0;
pdata=pdata;
MCUCR=0x02;
GICR=0x40;
TCCR2=0x08; // CTC 模式, TOP=OCR2
OCR2=72; // 7372800/1024/72=100
TCCR2|=0x07; // 1024分頻
TIMSK|=0x80; // 比較中斷使能
while(1)
{
OSSemPend(T2sem,0,&err);
if(err==OS_NO_ERR)
t2++;
if(err==OS_TIMEOUT)
{};
GIFR|=0x40;
// OSTimeDly(10);
}
}
void Task3(void *pdata)
{
pdata=pdata;
while(1)
{
t3++;
OSTimeDly(4);
DDRD|=0x04;
PORTD|=0x04;
PORTD&=~0x04;
}
}
void Task4(void *pdata)
{
pdata=pdata;
MCUCR|=0x08;
GICR|=0x80;
while(1)
{
t4++;
OSTimeDly(8);
DDRD|=0x08;
PORTD|=0x08;
PORTD&=~0x08;
}
}
void Task5(void *pdata)
{
unsigned char err=0;
struct msgTask *p=( struct msgTask *)0;
pdata=pdata;
while(1)
{
p=( struct msgTask *)OSMboxPend(Tmbox,0,&err);
t5=p->cnt;
}
}
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);
OSTaskCreate(Task3,0,&Task3Stk[OS_USER_TASK_STK_SIZE-1],3);
OSTaskCreate(Task4,0,&Task4Stk[OS_USER_TASK_STK_SIZE-1],5);
OSTaskCreate(Task5,0,&Task5Stk[OS_USER_TASK_STK_SIZE-1],4);
T2sem=OSSemCreate(0);
Tmbox=OSMboxCreate((void *)0);
OSStart();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -