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

📄 main.c

📁 汽车测功机源肛码.单片机用的是LPC2104. 实现测速,对涡流机的控制,马达的控制.
💻 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 + -