### 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币余额
- 我的收藏
- 我的下载
- 下载帮助