UCOS-II API 参考手册
本章提供了μC/OS-Ⅱ的用户指南。每一个用户可以调用的内核函数都按字母顺序加以说明,包括:
? 函数的功能描述 ? 函数原型
? 函数名称及源代码 ? 函数使用到的常量 ? 函数参数 ? 函数返回值
? 特殊说明和注意点
OSInit( )
所属文件 OS_CORE.C Void OSInit(void);
调用者 开关量 启动代码 无 OSinit()初始化μC/OS-Ⅱ,对这个函数的调用必须在调用OSStart()函数之前,而OSStart()函数真正开始运行多任务。
参数
无
返回值
无
注意/警告
必须先于OSStart()函数的调用
范例:
void main (void) {
.
OSInit(); /* 初始化 uC/OS-II */ .
OSStart(); /*启动多任务内核 */ }
μC/OS-II:实时操作系统内核
OSIntEnter( )
所属文件 OS_CORE.C Void OSIntEnter(void);
调用者 开关量 中断 无 OSIntEnter()通知μC/OS-Ⅱ一个中断处理函数正在执行,这有助于μC/OS-Ⅱ掌握中断嵌套的情况。OSIntEnter()函数通常和OSIntExit()函数联合使用。
参数
无
返回值
无
注意/警告
在任务级不能调用该函数。
如果系统使用的处理器能够执行自动的独立执行读取-修改-写入的操作,那么就可以直接递增中断嵌套层数(OSIntNesting),这样可以避免调用函数所带来的额外的开销。
范例一:
(Intel 80x86的实模式, 在大模式下编译,,real mode,large model)
ISRx PROC FAR
PUSHA ; 保存中断现场 PUSH ES PUSH DS ;
MOV AX, DGROUP ; 读入数据段 MOV DS, AX ;
CALL FAR PTR _OSIntEnter ; 通知内核进入中断 . .
POP DS ; 恢复中断现场 POP ES POPA
IRET ; 中断返回 ISRx ENDP
范例二:
(Intel 80x86的实模式, 在大模式下编译,, real mode , large model)
参考手册
ISRx PROC FAR
PUSHA ; 保存中断现场 PUSH ES PUSH DS ;
MOV AX, DGROUP ; 读入数据段 MOV DS, AX ;
INC BYTE PTR _OSIntNesting ; 通知内核进入中断 . . .
POP DS ; 恢复中断现场 POP ES POPA
IRET ; 中断返回 ISRx ENDP
μC/OS-II:实时操作系统内核
OSIntExit( )
所属文件 OS_CORE.C Void OSIntExit(void);
调用者 开关量 中断 无 OSIntExit()通知μC/OS-Ⅱ一个中断服务已执行完毕,这有助于μC/OS-Ⅱ掌握中断嵌套的情况。通常OSIntExit()和OSIntEnter()联合使用。当最后一层嵌套的中断执行完毕后,如果有更高优先级的任务准备就绪,μC/OS-Ⅱ会调用任务调度函数,在这种情况下,中断返回到更高优先级的任务而不是被中断了的任务。
参数
无
返回值
无
注意/警告
在任务级不能调用该函数。并且即使没有调用OSIntEnter()而是使用直接递增OSIntNesting的方法,也必须调用OSIntExit()函数。
范例:
(Intel 80x86 的实模式, 在大模式下编译, real mode , large model)
ISRx PROC FAR
PUSHA ; 保存中断现场 PUSH ES PUSH DS . .
CALL FAR PTR _OSIntExit ; 通知内核进入中断 POP DS ; 恢复中断现场 POP ES POPA
IRET ; 中断返回 ISRx ENDP