📄 main.c
字号:
/*
描 述:uCos操作系统多任务综合实验
说 明:1. 测试uCos系统多任务并行运行情况
2. 测试任务包括:Led跑马灯试验任务、Lcd段码显示试验任务、pwm控制直流电机试验任务、Lcm液晶显示试验任务
3. 源文件分布说明:
..\项目目录\uCOS-II PORT\ : uCos系统源文件(与硬件相关),在向at91sam7s64平台移植过程中需修改的代码文件
..\项目目录\uCOS-II\ : uCos系统源文件(与硬件无关),在向at91sam7s64平台移植过程中不需修改的代码文件
..\项目目录\include\ : 主要头文件定义
..\项目目录\include\Sam7s64 : atmel公司提供的at91sam7s64封装源代码及头文件
..\项目目录\include\uCos : uCos头文件,其中os_cfg.h为uCos系统配置文件,includes.h为总头文件
..\项目目录\CPU : 非uCos系统文件,at91sam7s64底层初始化操作代码文件
..\项目目录\BSP : 非uCos系统文件,基于at91sam7s64平台的硬件初始化代码文件
..\项目目录\APP : 非uCos系统文件,用户应用程序目录, 所有用户应用代码均在这个目录下
4. 具体用户应用(Led跑马灯试验任务、Lcd段码显示试验任务、pwm控制直流电机试验任务、Lcm液晶显示试验任务)
参考各自试验源代码。
记 录:1. changyj 创建工程 2007-10-09:18:00
2. changyj 完成工程 2007-10-11
*/
#include <includes.h>
#define TASK_STK_SIZE 32 // 任务堆栈大小
// * 任务优先级定义(应该注意各任务优先级不能相同,具体参考uCOS系统源代码
#define TASK_PRI_LED 1 // LED显示任务优先级
#define TASK_PRI_LCD 2 // LCD显示任务优先级
#define TASK_PRI_PWM 3 // PWM直流电机任务优先级
#define TASK_PRI_LCM 4 // LCM液晶显示任务优先级
//* 任务编号(ID)定义
#define TASK_TID_LED 1 // LED显示任务
#define TASK_TID_LCD 2 // LCD显示任务
#define TASK_TID_PWM 3 // PWM直流电机任务
#define TASK_TID_LCM 4 // LCM液晶显示任务
//* 任务堆栈定义
OS_STK TaskStackLed[TASK_STK_SIZE]; // LED显示任务堆栈
OS_STK TaskStackLcd[TASK_STK_SIZE]; // LCD显示任务堆栈
OS_STK TaskStackLcm[TASK_STK_SIZE]; // PWM直流电机任务堆栈
OS_STK TaskStackPwm[TASK_STK_SIZE]; // LCM液晶显示任务堆栈
void main (void)
{
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF; // 禁止所有中断
OSInit(); // 初始化 uC/OS-II
CPU_Init(); // 初始化处理器指定块
BSP_Init(); // 初始化 BSP 函数
// 创建LED显示任务
OSTaskCreateExt(TaskLed,
(void *)0,
(OS_STK *)&TaskStackLed[TASK_STK_SIZE-1],
TASK_PRI_LED,
TASK_TID_LED,
(OS_STK *)&TaskStackLed[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
// 创建LCD显示任务
OSTaskCreateExt(TaskLcd,
(void *)0,
(OS_STK *)&TaskStackLcd[TASK_STK_SIZE-1],
TASK_PRI_LCD,
TASK_TID_LCD,
(OS_STK *)&TaskStackLcd[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
// 创建PWM直流电机任务
OSTaskCreateExt(TaskPwm,
(void *)0,
(OS_STK *)&TaskStackPwm[TASK_STK_SIZE-1],
TASK_PRI_PWM,
TASK_TID_PWM,
(OS_STK *)&TaskStackPwm[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
// 创建lcm液晶屏显示任务
OSTaskCreateExt(TaskLcm,
(void *)0,
(OS_STK *)&TaskStackLcm[TASK_STK_SIZE-1],
TASK_PRI_LCM,
TASK_TID_LCM,
(OS_STK *)&TaskStackLcm[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
// 启动多任务
OSStart();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -