📄 app.c
字号:
#include <ucos_ii.h> /*头文件统一包含*/
OS_STK TaskSSTK[OS_TASK_STK_SIZE]; /*定义任务堆栈*/
OS_STK Task1STK[OS_TASK_STK_SIZE];
OS_STK Task2STK[OS_TASK_STK_SIZE];
void io_init(void);
void TaskS(void *temp); /*声明任务*/
void Task1(void *temp);
void Task2(void *temp);
/*启动任务,负责后续任务的初始化工作*/
void TaskS (void *temp) {
OSTickISR_Init();
io_init();
OSTaskCreate(Task1, (void *)0, (OS_STK *)&Task1STK[OS_TASK_STK_SIZE - 1], 1);
OSTaskCreate(Task2, (void *)0, (OS_STK *)&Task2STK[OS_TASK_STK_SIZE - 1], 2);
while (1) {
PORTB ^= (1 << PB7);
OSTimeDly(10);
}
}
/*任务1,LD0指示闪烁*/
void Task1(void *temp) {
temp = temp;
while (1) {
PORTB ^= (1 << PB0);
OSTimeDly(20);
}
}
/*任务2,LD1指示闪烁*/
void Task2(void *temp) {
temp = temp;
while (1) {
PORTB ^= (1 << PB1);
OSTimeDly(30);
}
}
/*IO口初始化函数*/
void io_init(void) {
DDRA = 0x00; /*方向输入*/
PORTA = 0xFF; /*打开上拉*/
DDRB = 0xFF; /*方向输出*/
PORTB = 0xFF; /*高电平*/
DDRC = 0x00; /*不用的IO口建议设置为输入带上拉*/
PORTC = 0xFF;
DDRD = 0x00;
PORTD = 0xFF;
DDRE = 0x00;
PORTE = 0xFF;
DDRF = 0x00;
PORTF = 0xFF;
DDRG = 0x00;
PORTG = 0xFF;
}
void OSTickISR_Init (void) {
TCCR0 = (1 << CS00) | (1 << CS01) | (1 << CS02); /*设置时钟分频为1024 */
TIMSK = (1 << TOIE0); /*打开溢出中断 */
}
void OSTickISR_Handler (void) {
TCNT0 = 256 - (CPU_CLK_FREQ / OS_TICKS_PER_SEC / 1024);
OSTimeTick();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -