📄 main.c
字号:
/**********************************************************************************
* 项目名称: 汽车底盘测功机
* 项目负责人: 饶阳胜
* 项目开始日期: 05-6-7
*==================================================================================
* 说明:
* 1 本项目对OS_FLAG.C文件中OSFlagPend()
* 原函数返回的是当前事件标志组的状态,改变后的函数返回是被改变了的事件标志
* 详细情况,请看OSFlagPend()
* 2 系统时钟定义为每秒钟200次
* 3 每0.02秒进行一次控制.
*==================================================================================
* 任务说明:
* ------------------------------------------------
* 序号 优先级 任务名称 任务作用
* ------------------------------------------------
* 1 5 RecieveCommandTask 处理上位机命令
* ------------------------------------------------
* 2 8 PowerTask 恒功率控制
* ------------------------------------------------
* 3 11 ForceTask 恒扭矩控制
* ------------------------------------------------
* 4 14 SpeedTask 恒速度控制
* ------------------------------------------------
* 5 17 DemaTask 标定
* ------------------------------------------------
* 6 20 WaitTask 待机
* ------------------------------------------------
*==================================================================================
* 调试说明:
* 1
*
**********************************************************************************/
#include "CGJ.H" // 包含总的头文件
#include "i2c.h" // 包含I2C头文件
#include "math.h"
#include "DataBuffer.h"
#include "control.h"
/**********************************************************************************
* 函数名称: main()
* 功 能: 主控函数
* 入口参数: 无
* 出口参数: 无
* 调用模块: TargetInit 目标板硬件初始化
* CommInit 串口模块初始化(基于<<嵌入式系统构件>>)
* OSInit uC/OS初始化
* OSTaskCreate 创建任务
* OSSemCreate 创建信号量
* OSFlagCreate 创建事件标志组
* OSStart 多任务开始运行
* 全局变量:
* 设计者: 饶阳胜
* 日 期: 05-5-23
* 说 明:
**********************************************************************************/
int main(void)
{
INT8U err; // 临时变量
TargetInit(); // 初始化相对于此应用的目标板设置(没有开中断)
OSInit(); // 对uC/OS-II初始化
I2cInit(100000); // 初始化I2C中间件,速率为100K
CommInit(); // 串口模块初始化,一定要在调用OSInit()后调用此函数
BufferInit();
OSTaskCreate(RecieveCommandTask,
(void *)0,
&RecieveCommandTaskStk[RECIEVE_COMMAND_TASK_STK_SIZE - 1],
RECIEVE_COMMAND_TASK_PRIO); // 建立接收命令任务
OSTaskCreate(PowerTask,
(void *)0,
&PowerTaskStk[POWER_TASK_STK_SIZE - 1],
POWER_TASK_PRIO); // 建立恒功率任务
OSTaskCreate(ForceTask,
(void *)0,
&ForceTaskStk[FORCE_TASK_STK_SIZE - 1],
FORCE_TASK_PRIO); // 建立恒扭矩任务
OSTaskCreate(SpeedTask,
(void *)0,
&SpeedTaskStk[SPEED_TASK_STK_SIZE - 1],
SPEED_TASK_PRIO); // 建立恒速度任务
OSTaskCreate(DemaTask,
(void *)0,
&DemaTaskStk[DEMA_TASK_STK_SIZE - 1],
DEMA_TASK_PRIO); // 建立标标定任务
OSTaskCreate(WaitTask,
(void *)0,
&WaitTaskStk[WAIT_TASK_STK_SIZE - 1],
WAIT_TASK_PRIO);
OSTaskCreate(RoadSimulTask, // 建立道路模拟阻力任务
(void *)0,
&RoadSimulTaskStk[ROAD_SIMUL_TASK_STK_SIZE - 1],
ROAD_SIMUL_TASK_PRIO);
uart0 = OSMutexCreate(uart0_prio,&err);
task_status = OSFlagCreate(0,&err); // 建立任务状态事件标志组
OSStart(); // 开始运行多任务
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -