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

📄 main.c

📁 这是一个uC/OS的系统驱动程序
💻 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 + -