### ucosii API参考手册知识点概述 #### 1. OSInit() **功能描述:** `OSInit()`函数用于初始化μC/OS-Ⅱ实时操作系统内核。此函数的调用应在任何其他μC/OS-Ⅱ内核函数之前进行,并且必须在调用`OSStart()`之前执行,`OSStart()`函数是真正启动多任务环境的函数。 **函数原型:** ```c void OSInit(void); ``` **所属文件:** `OS_CORE.C` **调用者:** 启动代码 **开关量:** 无 **参数:** 无 **返回值:** 无 **特殊说明和注意点:** - 必须在调用`OSStart()`之前调用`OSInit()`。 - `OSInit()`函数不接受任何参数,也不返回任何值。 **示例代码:** ```c void main(void) { ... OSInit(); /* 初始化uC/OS-II */ ... OSStart(); /* 启动多任务内核 */ } ``` --- #### 2. OSIntEnter() **功能描述:** `OSIntEnter()`函数用于通知μC/OS-Ⅱ内核一个中断处理函数正在执行。通过该函数,μC/OS-Ⅱ可以追踪中断嵌套的情况,这对于正确处理中断和服务是非常重要的。 **函数原型:** ```c void OSIntEnter(void); ``` **所属文件:** `OS_CORE.C` **调用者:** 中断 **开关量:** 无 **参数:** 无 **返回值:** 无 **特殊说明和注意点:** - 在任务级别不能调用此函数。 - 如果处理器支持原子操作,则可以直接递增`OSIntNesting`变量,从而减少函数调用带来的额外开销。 - 必须与`OSIntExit()`函数配对使用。 **示例代码(范例一):** ```c ISRx PROC FAR PUSHA; 保存中断现场 PUSH ES PUSH DS ... CALL FAR PTR OSIntEnter; 通知内核进入中断 ... POP DS; 恢复中断现场 POP ES POPA IRET; 中断返回 ISRx ENDP ``` **示例代码(范例二):** ```c ISRx PROC FAR PUSHA; 保存中断现场 PUSH ES PUSH DS ... INCBYTE PTR OSIntNesting; 通知内核进入中断 ... POP DS; 恢复中断现场 POP ES POPA IRET; 中断返回 ISRx ENDP ``` --- #### 3. OSIntExit() **功能描述:** `OSIntExit()`函数用于通知μC/OS-Ⅱ内核一个中断处理程序已完成执行。当最后一个嵌套的中断完成时,如果有更高优先级的任务准备运行,μC/OS-Ⅱ将执行任务调度并可能将控制权交给该更高优先级的任务。 **函数原型:** ```c void OSIntExit(void); ``` **所属文件:** `OS_CORE.C` **调用者:** 中断 **开关量:** 无 **参数:** 无 **返回值:** 无 **特殊说明和注意点:** - 不允许在任务级别调用此函数。 - 即使没有调用`OSIntEnter()`而直接修改`OSIntNesting`变量,也需要调用`OSIntExit()`。 **示例代码:** ```c ISRx PROC FAR PUSHA; 保存中断现场 PUSH ES PUSH DS ... ... CALL FAR PTR OSIntExit; 通知内核中断处理完成 POP DS; 恢复中断现场 POP ES POPA IRET; 中断返回 ISRx ENDP ``` --- #### 4. OSMboxAccept() **功能描述:** `OSMboxAccept()`函数用于检查特定的消息邮箱是否包含待处理的消息。与`OSMboxPend()`不同的是,如果消息邮箱中没有可用消息,该函数不会导致调用任务挂起。通常由中断调用此函数,因为在中断上下文中不允许等待消息。 **函数原型:** ```c void* OSMboxAccept(OS_EVENT* pevent); ``` **所属文件:** `OS_MBOX.C` **调用者:** 任务或中断 **开关量:** `OS_MBOX_EN` **参数:** - `pevent`:指向要检查的消息邮箱的指针。 **返回值:** - 如果消息已到达,返回指向该消息的指针。 - 如果消息邮箱中没有消息,返回空指针。 **特殊说明和注意点:** - 在使用前,必须先创建消息邮箱。 - `pevent`参数应该是在创建消息邮箱时返回给用户的指针。 **示例代码:** ```c OS_EVENT* CommMbox; void Task(void* pdata) { void* msg; pdata = pdata; for(;;) { ... msg = OSMboxAccept(&CommMbox); if (msg != NULL) { ... } ... } } ``` 以上是根据给定的部分内容生成的相关知识点总结。这些知识点涵盖了μC/OS-Ⅱ实时操作系统中几个关键函数的功能、使用方法及其注意事项。对于学习和使用μC/OS-Ⅱ来说,这些信息都是非常宝贵的参考资料。
剩余75页未读,继续阅读
- 粉丝: 7
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- COMSOL石墨烯 钙钛矿太阳能电池仿真模型 光电耦合模型,文章复现
- 三菱FX5UPLC全部最新手册(编程、通讯、模拟量、定位、硬件等手册)
- 模块化多电平MMC-驱动永磁同步电机-变频 高频正弦注入法抑制子模块电容电压波动 Matlab-2021b,子模块个数为N=4,直流侧电压Udc=680V
- 电池充电放电控制 Matlab simulink仿真搭建模型: 介绍:该模型介绍了在案例研究中实现的电池充电 放电控制,该案例研究涉及直流总线 (恒定电压)、电池、公共负载和双向双开关降压-开压 DC
- 机器学习(预测模型):大学生运动员受伤率和运动表现的影响数据集
- JAVA音像店租赁管理系统的设计与实现(源代码+论文)
- 光储并网直流微电网simulink仿真模型,光伏采用mppt实现最大功率输出 储能由蓄电池和超级电容构成的混合储能系统 为了确保微网并网时电能质量,采用二阶低通滤波法对光伏输出功率进行抑制,
- 电梯厅门悬挂组件sw19可编辑全套技术资料100%好用.zip
- 机器学习(预测模型):1970年至2023年全球各国的关键健康指标
- CeLiangBaoYan个人文件
- 天然气水合物降压开采,基于COMSOL热-流-固多场耦合实现,同时可以表征开采过程中的储层孔隙度、渗透率的演化,考虑水平井筒环空高压充填石英砂层,有水平井和压裂水平井模型
- JAVA医药管理系统设计(论文+源代码+数据库)
- 高精度镜片摩擦清洗机sw17全套技术资料100%好用.zip
- fluent金属熔凝最强学习资料 1.流动传热传质 2.激光移动热源 3.金属熔化凝固 4.宏观偏析 5.激光熔覆 6.udf代码讲解
- 政府办公自动化系统-高分毕设
- Pem电解槽等温阳极单侧流道模型,水电解槽模块与自由与多孔介质流模块耦合,参数化建模 comsol电弧放电模型 水平集两相流、流体传热、相变、马兰戈尼、电磁力、表面张力、反冲压力,温度场耦合流场,c