📄 app.c
字号:
#include "OS_Includes.h"
//PORTB bit4-bit7 for to drive LED1-LED4.
#define LED1_ON() (PORTB |= (0x1<<4))
#define LED1_OFF() (PORTB &= ~(0x1<<4))
#define LED2_ON() (PORTB |= (0x1<<5))
#define LED2_OFF() (PORTB &= ~(0x1<<5))
#define LED3_ON() (PORTB |= (0x1<<6))
#define LED3_OFF() (PORTB &= ~(0x1<<6))
#define LED4_ON() (PORTB |= (0x1<<7))
#define LED4_OFF() (PORTB &= ~(0x1<<7))
#define INIT_LED_Drv() (DDRB |= 0xf0) //PORTB bit4-bit7 used to LED1-LED4
void TaskA(void);
#define TaskAPrio 1 //声明任务TaskA(void)的优先级。
OS_STK TaskAStk[MAX_STK_SIZE]; //声明任务TaskA(void)的堆栈空间。
void TaskB(void);
#define TaskBPrio 2 //声明任务TaskB(void)的优先级。
OS_STK TaskBStk[MAX_STK_SIZE]; //声明任务TaskB(void)的堆栈空间。
void TaskC(void);
#define TaskCPrio 3 //声明任务TaskC(void)的优先级。
OS_STK TaskCStk[MAX_STK_SIZE]; //声明任务TaskC(void)的堆栈空间。
void main(void)
{
OSInitSP();
OSInit(); //初始化OS任务控制块(initialization OSTCB)。
OSTaskCreate(TaskA,&TaskAStk[MAX_STK_SIZE],TaskAPrio); //建立任务TaskA(void)。
OSTaskCreate(TaskB,&TaskBStk[MAX_STK_SIZE],TaskBPrio); //建立任务TaskB(void)。
OSTaskCreate(TaskC,&TaskCStk[MAX_STK_SIZE],TaskCPrio); //建立任务TaskC(void)。
INIT_LED_Drv();
OSStart(); //起动OS。
while (1)
{
LED1_ON();
OSTaskResume(TaskAPrio);
OSTaskSuspend(OS_TASK_Me);
OSTimeDly(1);
LED1_OFF();
OSTimeDly(1);
}
}
void TaskA(void)
{
while (1)
{
OSTaskResume(Task_main_Prio);
// OSTaskSuspend(OS_TASK_Me);
LED2_ON();
OSTimeDly(2);
LED2_OFF();
OSTimeDly(2);
}
}
void TaskB(void)
{
while (1)
{
LED3_ON();
OSTimeDly(3);
LED3_OFF();
OSTimeDly(3);
}
}
void TaskC(void)
{
while (1)
{
LED4_ON();
OSTimeDly(5);
LED4_OFF();
OSTimeDly(5);
}
}
//hook function for user App --- 时钟节拍回掉函数
void AppTickHook()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -