ucosii运用实例

来源:互联网 发布:网络拓扑环形结构 编辑:程序博客网 时间:2024/06/05 07:02

一、实例准备:工程中包含ucosii的3个文件夹:CONFIG、CORE、PORT。并main中#include "includes.h"。

二、基本框架:

//设置任务堆栈大小#define LED_STK_SIZE     64#define LED1_STK_SIZE    64#define LCD_STK_SIZE     64#define KEY_STK_SIZE     64#define TOUCH_STK_SIZE   64#define START_STK_SIZE   512//设置任务优先级#define LED_TASK_Prio       6#define LED1_TASK_Prio      5#define LCD_TASK_Prio       4#define KEY_TASK_Prio       2#define TOUCH_TASK_Prio     7#define START_TASK_Prio     10//任务堆栈OS_STK  TASK_LED1_STK[LED_STK_SIZE];OS_STK  TASK_LED_STK[LED1_STK_SIZE];OS_STK  TASK_LCD_STK[LCD_STK_SIZE];OS_STK  TASK_START_STK[START_STK_SIZE];OS_STK  TASK_KEY_STK[KEY_STK_SIZE];OS_STK  TASK_TOUCH_STK[TOUCH_STK_SIZE];//任务声明void TaskStart(void *pdata);void TaskLed(void *pdata);void TaskLed1(void *pdata);void TaskLCD(void *pdata);void TaskKey(void *pdata);void TaskTouch(void *pdata);

main()包含的代码:

OSInit();   //UCOSII初始化OSTaskCreate( TaskStart,(void *)0,(OS_STK *)&TASK_START_STK[START_STK_SIZE-1],START_TASK_Prio );OSStart();//UCOSII启动//开始任务void TaskStart(void * pdata){pdata = pdata; OS_ENTER_CRITICAL();   OSTaskCreate(TaskLed, (void * )0, (OS_STK *)&TASK_LED_STK[LED_STK_SIZE-1], LED_TASK_Prio);OSTaskCreate(TaskLed1, (void * )0, (OS_STK *)&TASK_LED1_STK[LED1_STK_SIZE-1], LED1_TASK_Prio); OSTaskSuspend(START_TASK_Prio);//suspend but not deleteOS_EXIT_CRITICAL();}

编写任务:

<span style="font-size:12px;">//任务1//控制DS0的亮灭.void TaskLed(void *pdata){while(1){LED0=!LED0;OSTimeDlyHMSM(0,0,0,500);}}</span>

systick配置遵循原子配置,在ucosii文件os_cfg.h头文件定义每秒节拍。



 

0 0
原创粉丝点击