?? 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 + -