uCOSII学习使用记录

uCOSII学习使用记录

最近学习和使用uCOSII, 在这里做一下笔记

  1. 串口中断

中断处理前添加

OS_ENTER_CRITICAL();
OSIntNesting++;
OS_EXIT_CRITICAL();

退出中断后

OSIntExit();
  1. 有人移植了2.86或者2.88版本后,发现跑的时间长了,会出现某些任务跑步了了,是需要设置将中断改为0就可以了,似乎嵌套多了也会出现这样的问题

  2. V2.86版本有一个BUG

86版本是这样的

 if (OSLockNesting == 0)
  {                      /* ... scheduler is not locked                  */
           OS_SchedNew();
           if (OSPrioHighRdy != OSPrioCur) 
           {          /* No Ctx Sw if current task is highest rdy     */
               OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
               OSCtxSwCtr++;                          /* Increment context switch counter             */
               OS_TASK_SW();                          /* Perform a context switch                     */
        }
 }

88版本

if (OSLockNesting == 0u)
 {                     /* ... scheduler is not locked                  */
        OS_SchedNew();
        OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
        if (OSPrioHighRdy != OSPrioCur) 
        {          /* No Ctx Sw if current task is highest rdy     */
            OSCtxSwCtr++;                          /* Increment context switch counter             */
            OS_TASK_SW();                          /* Perform a context switch                     */
        }
 	}
  1. 信号量,邮箱,消息队列,互斥信号量,消耗必须大于建立,邮箱是指针

使能邮箱功能后建立

OS_EVENT * msg_mbox;   //事件指针
msg_mbox = OSMboxCreate((void*)0); //创建消息邮箱 将地址返回 msg_mbox中

// 创建事件
OSMboxPost(msg_mbox, &g_msg_value);//将键值发送到邮箱中,邮箱地址msg_mbox

//等待事件
msg = OSMboxPend(msg_mbox, 0, &err);
  1. 移植编译发现大量错误,去掉ucosii.c文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值