ucos2 事件 任务的通讯和同步 信号量 互斥量 消息邮箱 消息队列

OS_EventTO()使一个等待超时的任务进入就绪状态事件控制块链表也有空和工作中的2种区分,类似于任务控制块,就不多说了七、信号量详细重要组成:类型 cnt 信号量指针为空 控制块1.创建信号量OSSemCreat(cnt)————设置类型 设置初始化计数 设置指向缓冲区为空 初始化事件控制块 返回信号量指针2.请求信号量OSSemPend(信号量指针 时限 错误信息) 信号量无效时,任务会等待OSsemAccept(信号量) 信号量无效时,任务直接继续运行3.释放信号量OSSemPost(信号量指针)4.删除信号量OSSemDel(信号量名、条件选项、错误信息)5.查询信号量状态OSSemQuery()八、优先级反转和互斥量优先级反转:ab等待状态,c运行;c最低优先级,在c没有释放信号量的情况下,a运行了,,那a会等待,然后c运行了在释放信号量之前有个任务b运行了,那b只得在a之前运行了。好像b的优先级比a高了。出现这种情况是因为低优先级的任务使用信号量的过程中被打断,不能释放信号量。解决方法就是c使用信号量的时候提高优先级(因为在使用信号量比a的优先级要高),释放信号量再恢复原来的优先级。九、互斥量任务可用互斥量,来实现对资源的独占 数据类型要为互斥量类型 cnt分为高8字节和低8字节,低8位0xff表示信号有效,高8位记录了临时的提升的优先级。1.创建互斥量OSMutexCreat(提升的优先级 错误信息)2.请求互斥量OSMutexPend(互斥量指针 超时 错误信息)OSMutexAccept(互斥量指针 错误信息) 互斥量无效任务会继续运行3.释放互斥量OSMutexPost(互斥量指针)4.获取互斥量的当前状态OSMutexQuery(互斥量指针 存储的数据结构)5.删除互斥量OSMutexDel(互斥量指针 直接删除还是等待任务执行完删 错误信息)十、消息邮箱1.OSMboxCreat(msg)消息邮箱 :设置类型为消息邮箱类型;设置指针为空,或指向缓冲区;设置cnt为0;初始化ECB2.OSMboxPost(消息邮箱的指针, 消息缓冲区指针)发送消息邮箱

那段岁月,无论从何种角度读你,你都完美无缺,

ucos2 事件 任务的通讯和同步 信号量 互斥量 消息邮箱 消息队列

相关文章:

你感兴趣的文章:

标签云: