uc/OS II——多任务设计

(1)设计 开始任务

【1】/声明 开始任务 任务块

static  OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE];

【2】在app_cfg.h中

//设置任务的优先级
#define  APP_TASK_START_PRIO 2//开始任务为优先级2
//设置任务块大小
#define  APP_TASK_START_STK_SIZE 128

【3】编写 任务函数

//开始任务函数
static  void App_TaskStart(void* p_arg)
{(void) p_arg;//防止编译警告//初始化ucos时钟节拍OS_CPU_SysTickInit();//自己编写的函数
//使能ucos 的统计任务
#if (OS_TASK_STAT_EN > 0)//----统计任务初始化函数  OSStatInit();
#endif//建立其他的任务
/*
创建其他任务
*/while (1){//1秒一次循环OSTimeDlyHMSM(0, 0,1, 0);}
}
【4】在main函数中创建开始任务
OSTaskCreate(
App_TaskStart,
(void *)0,
&App_TaskStartStk[APP_TASK_START_STK_SIZE - 1],
APP_TASK_START_PRIO); 

(2)其他任务函数编写

【1】设置优先级和任务块大小

//设置任务的优先级
#define  APP_TASK_LED1_PRIO 8//开始任务为优先级2
//设置任务块大小
#define  APP_TASK_LED1_STK_SIZE 128

【2】编写任务函数

void Task_Led1(void* p_arg)
{(void) p_arg;     while (1){Led_On(LED1);OSTimeDlyHMSM(0, 0, 0, 500);Led_Off(LED1);OSTimeDlyHMSM(0, 0, 0, 500);}
}

【3】在开始任务中 创建

OSTaskCreateExt(
Task_Led1,//指向任务代码的指针
(void *)0,//任务开始执行时,传递给任务的参数的指针
(OS_STK *)&Task_Led1Stk[APP_TASK_LED1_STK_SIZE-1],//分配给任务的堆栈的栈顶指针 从顶向下递减
APP_TASK_LED1_PRIO,//分配给任务的优先级
APP_TASK_LED1_PRIO,//预备给以后版本的特殊标识符,在现行版本同任务优先级
(OS_STK *)&Task_Led1Stk[0],//指向任务堆栈栈底的指针,用于堆栈的检验
APP_TASK_LED1_STK_SIZE,//指定堆栈的容量,用于堆栈的检验
(void *)0,//指向用户附加的数据域的指针,用来扩展任务的任务控制块
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);//选项,指定是否允许堆栈检验,是否将堆栈清0,任务是否要进行浮点运算等等。

uc/OS II——多任务设计相关推荐

  1. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

  2. Lab 6:uC/OS II

    为什么80%的码农都做不了架构师?>>>    目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...

  3. linux串口互斥,UART0串口编程之在UC/OS—II中遭遇的危机

    一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来接收数据. 2.在进行串行通信时,双方遵循相同的通信 ...

  4. uc os ii与linux,uC/OS-II嵌入式实时操作系统的几大特点

    uC/OS-II嵌入式实时操作系统的几大特点 出处:网络 发布于:2018-09-12 14:46:03 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,主要 ...

  5. 【 uC/OS II 】uC/OS II 源代码阅读(os_task.c)任务管理

    前言 这个任务管理源代码,是整个系统最核心的部分,也是最难的部分,多看几遍吧.其中的核心结构体是: typedef struct os_tcb {OS_STK *OSTCBStkPtr; /* Poi ...

  6. 【嵌入式系统—实时操作系统】uC/OS II源码的官网下载

    要下载源码为:STM32F107-uC/OS-II源码包 Micrium官网的下载地址:Micrium_uC-Eval-STM32F107_uCOS-II 怎么找? 到官网的产品专区目录入口查找STM ...

  7. UC/OS II 任务管理(4)之任务创建

    任务的创建函数 ucosii之前的版本都只支持64个任务,但是V2.90版本支持的任务数量达到了256. 用法和原理都差不多.我这里就只介绍任务数不大于64的情况.当任务大于64的时候,只需要配置相关 ...

  8. uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()

    1. OSTaskCreate()     OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构.    ...

  9. UC/OS II 消息邮箱

    消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量.通常该指针指向一个包含了"消息"的特定数据结构.如果该指针为空,说明 ...

最新文章

  1. WPF学习笔记——设置ListBox选中项的背景颜色
  2. 如何使用应用程序库缓存
  3. python中列表数据汇总和平均值_python的列表List求均值和中位数实例
  4. eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
  5. 10 件在 PHP 7 中不要做的事情
  6. XP蓝屏代码集(转)
  7. 南阳oj-----Binary String Matching(string)
  8. 在EWF上启用一个Hibernate Once/Resume Many环境
  9. 16中国App年度排行榜及17年趋势预测
  10. k2p刷机丢失eeprom_刷机经验分享,K2P无线路由器救砖必备,无线和MAC恢复窍门
  11. 年会抽奖小游戏java_抽奖小游戏
  12. FJUT 3097(hdu 3333) 区间种类数 主席树+在线
  13. 01 Python学习--第一周--开课介绍、数据类型、数据运算、表达式、循环、三元运算、对象基本概念...
  14. 欢迎大家关注公众号【音视频开发训练营】
  15. FFmpeg执行命令时屏蔽输出
  16. 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!
  17. BC26 TCP透传
  18. 18春计算机基础在线作业,东大18春《计算机基础》在线作业二.doc
  19. 三维空间中绘制点、线、面、UV贴图,万能的BufferGeometry(three.js实战4)
  20. 默克高性能材料业务正式更名为“电子科技(Electronics)”

热门文章

  1. Python+Django毕业设计智能仓储设备管理系统(程序+LW+部署)
  2. SpringBoot/Mybatis/Druid, 多数据源MultiDataSource配置思路
  3. 【高性能计算】MPI
  4. 高级选项修复计算机,Win7高级启动选项修复计算机的方法(图文)
  5. 电脑如何快速将桌面文件转移到其他硬盘?
  6. 阿卡索携手法大大,电子合同降低行业获客成本
  7. 聊一款简单且精妙的微前端框架 ice stark(上)
  8. 不要再来问我小学、初中毕业想出去学习编程找到工作的问题了,你要做就去做,结果自己扛着就行了!
  9. 如何选择塑料水杯——塑料容器底部三角形内的数字密码
  10. 数领科技|如何恢复被损坏的电气设计图纸