?? main.c
字號(hào):
#include "core.h"
#include "uart.h"
#define TASK_STACK_LEN_Medium 64 //任務(wù)堆棧大小(最小要大于35 + Function_Nest_Depth*2)
#define TASK_STACK_LEN_Large 100
INT8U TASK0_STACK[TASK_STACK_LEN_Medium];
INT8U TASK1_STACK[TASK_STACK_LEN_Medium];
INT8U TASK2_STACK[TASK_STACK_LEN_Medium];
INT8U TASK3_STACK[TASK_STACK_LEN_Medium];
INT8U TASK4_STACK[TASK_STACK_LEN_Medium];
INT8U TASK5_STACK[TASK_STACK_LEN_Medium];
INT8U TASK6_STACK[TASK_STACK_LEN_Large];
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK0(void)
{
while(1)
{
OS_DelayTick(1);
PORTC ^= 0X01;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK1(void)
{
while(1)
{
OS_DelayTick(2);
PORTC ^= 0X02;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK2(void)
{
while(1)
{
OS_DelayTick(3);
PORTC ^= 0X04;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK3(void)
{
while(1)
{
OS_DelayTick(4);
PORTC ^= 0X08;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK4(void)
{
while(1)
{
OS_DelayTick(5);
PORTC ^= 0X10;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
//const INT8U str1[]="This is a mini avr RTOS!";
//const INT8U strVer[]="miRTOS Version 0.1";
void TASK5(void)
{
INT8U ch;
// INT8U i;
//
// for(i=0;i<23;i++)
// Uart_Putc(str1[i]);
//
// ch = 0x0d;
// Uart_Putc(ch);
// ch = 0x0a;
// Uart_Putc(ch);
//
// for(i=0;i<18;i++)
// Uart_Putc(strVer[i]);
//
// ch = 0x0d;
// Uart_Putc(ch);
// ch = 0x0a;
// Uart_Putc(ch);
while(1)
{
ch = Uart_Getc();
Uart_Putc(ch);
PORTC ^= 0X20;
}
}
/*
***********************************************************
*函 數(shù) 名:
*功 能:
*輸入?yún)?shù): 無(wú)
*輸出參數(shù): 無(wú)
*返 回 值: 無(wú)
*==========================================================
*日 期: 2006.01.01
*作 者: frankie.hu
*修改記錄:
***********************************************************
*/
void TASK6(void)
{
INT8U i;
INT8U j = 0;
INT16U value = 0;
static INT8U buf[4];
const INT8U pos[4]={0x38,0x34,0x2c,0x1c};
const INT8U DigitNumber[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//const INT8U DigitNumber[10] = {0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,0x80,0x82};
while(1)
{
OS_DelayTick(1);
j++;
if (j == TASK_SWITCH_FREQ)
{
j = 0;
value++;
if (value >= 3600)
value = 0;
}
buf[3] = value%60;
buf[1] = value/60;
buf[2] = DigitNumber[buf[3]/10];
buf[3] = DigitNumber[buf[3]%10];
buf[0] = DigitNumber[buf[1]/10];
buf[1] = DigitNumber[buf[1]%10];
if (j < TASK_SWITCH_FREQ/2)
{
buf[0] = buf[0]&0x7F;
buf[1] = buf[1]&0x7F;
buf[2] = buf[2]&0x7F;
buf[3] = buf[3]&0x7F;
}
i = j&0x03;
PORTB = buf[i];
PORTD = pos[i]|(PORTD&0xC0);
}
}
void main(void)
{
PORTC = 0x07;
DDRC = 0x07;
PORTD = 0xFC;
DDRD = 0xFC;
PORTB = 0xFF;
DDRB = 0xFF;
Uart_Init();
OS_Init();
OS_CreateTask(TASK0,TASK0_STACK+TASK_STACK_LEN_Medium,0);
OS_CreateTask(TASK1,TASK1_STACK+TASK_STACK_LEN_Medium,1);
OS_CreateTask(TASK2,TASK2_STACK+TASK_STACK_LEN_Medium,2);
OS_CreateTask(TASK3,TASK3_STACK+TASK_STACK_LEN_Medium,3);
OS_CreateTask(TASK4,TASK4_STACK+TASK_STACK_LEN_Medium,4);
OS_CreateTask(TASK5,TASK5_STACK+TASK_STACK_LEN_Medium,5);
OS_CreateTask(TASK6,TASK6_STACK+TASK_STACK_LEN_Large,6);
OS_Start();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -