⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.c

📁 ucos在avr mega128上的移植
💻 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 + -