|
OSSemQuery()
|
名称:
OSSemQuery() 所属文件: Os_sem.c 原型: uint8 OSSemQuery(uint8 index) 功能描述: OSSemQuery() 函数获取某个信号量的值 编译开关: EN_OS_SEM_QUERY 调用者:用户任务 参数: index: 信号量索引 返回值:信号量的值 调用模块: OS_ENTER_CRITICAL, OS_EXIT_CRITICAL 注意:先建立信号量再使用。 void Task(void) { while ( 1 ) { if(OSSemQuery(0)>0) { /* 有信号量时处理信号量 */ } else { /* 没有信号量时进行其它处理 */ } } } |
|
OSSendSignal()
|
名称:
OSSendSignal() 所属文件: Os_core.c 原型: void OSSendSignal(unit8 TaskId) 功能描述: OSSendSignal() 无条件使指定任务就绪。如果指定任务的优先级比当前任务的优先级高,则高优先级的任务得以执行。 编译开关:无 调用者:用户任务 参数: TaskId: 任务 ID 返回值:无 调用模块: OSSched 示例: void Task(void) { while(1) { ShowChar = OSRunningTaskID()+'0'; OSSendSignal(0); OSWait(K_TMO,1); } } |
|
OSStart()
|
名称:OSStart() |
|
OSTimeTick()
|
名称:
OSTimeTick() 所属文件: Os_cpu.c 原型: void OSTimeTick(void) 功能描述:每次系统节拍, small RTOS 都执行 OSTimeTick() 函数。 OSTimeTick() 检查处于延时状态的任务是否到达延时时间,或者是正在等待的任务是否 9 超时。 编译开关:无 调用者:时钟中断或用户任务 参数:无 返回值:无 调用模块:无 注意:在任务或中断都可以调用 OSTimeTick(), 若在任务中调用,则任务的优先级应该很高(任务 ID 值很小),这是因为 OSTimeTick() 负责所有任务的延时操作。 示例: #if EN_OS_INT_ENTER >0 #pragma disable /* 除非最高优先级中断,否则必须加上这一句 */ #endif void OSTickISR(void) interrupt OS_TIME_ISR { #if TICK_TIMER_SHARING>1 static uint8 TickSum="0"; TickSum = (TickSum +1)% TICK_TIMER_SHARING if(TickSum!=0) return; #endif #if EN_OS_INT_ENTER>0 OS_INT_ENTER(); // 中断开始处理 #endif #if USER_TICK_TIMER_EN == 1 UserTickTimer(); // 用户函数 #endif #if EN_TIMER_SHARING >0 OSTimeTick(); // 调用系统时钟处理函数 #else OSIntSendSignal(TIME_ISR_TASK_ID); #endif OSIntExit();// 中断处理结束 } |
|
OSTaskDel()
|
名称:
OSTaskDel() 所属文件: Os_Core.c 原型: uint8 OSTaskDel(uint8 TaskID) small 功能描述:删除任务 例: void TaskB(void) { uint8 i; for (i = 0; i < 10; i++) { PC_DispChar(20, 10, (i % 10) + '0', DISP_FGND_LIGHT_GRAY); OSWait(K_TMO, 15); } OSTaskDel(OSRunningTaskID()); } void TaskD(void) { uint8 i; for (i = 0; i < 30; i++) { PC_DispChar(20, 5, (i % 10) + '0', DISP_FGND_LIGHT_GRAY); OSWait(K_TMO, 20); } OSTaskDel(0); } |
|
OSTaskSpend()
|
函数名称 : OS_TaskSuspend 功能描述 : 使指定任务休眠,但不进行任务切换 输 入 : TaskID : 任务 ID 原型: void OS_TaskSuspend(uint8 TaskID) small; 例: OS_TaskSuspend(OSRunningTaskID()); /* 任务进入等待状态 */ |
|
OSVersion()
|
名称:
OSVersion() 所属文件: Os.h 原型:宏 功能描述:取得当前 RTOS 的版本号 编译开关:无 调用者:用户任务、内核函数 参数:无 返回值: SMALL RTOS 的版本号为 *100, 如果当前版本号为 1.21, 则返回 121 调用模块:无 |
|
OSWait()
|
名称:
OSWait() 所属文件: Os.c 原型: uint8 OSWait(uint8 typ,uint8 ticks) 功能描述: OSWait() 函数使当前任务睡眠,它可以由以下方式恢复执行:指定 typ 为等待超时,在一个时间间隔后被唤醒;指定 typ 为等待信号,另一个任务或中断可以把它唤醒(通过 OSSendSignal() 或 OSIntSendSignal 或是它们的组合),若其中任意一个事件出现,则任务恢复执行。 编译开关:无 调用者:用户任务、内核函数 参数: typ: 等待事件类型。 K_SIG: 等待信号; K_TMO: 等待超时, 或者是其中任意值的按位 “ 或 ” 返回值: NOT_OK: 参数错误 TMO_EVENT: 超时到 SIG_EVENT: 有信号 调用模块: OSIntSendSignal, OSSched. 示例: void TaskB(void) { while(1) { ShowChar = OSRunningTaskID+'0'; OSSendSignal(0); OSWait(K_TMO,1); } } |
|
OS_ENTER_CRITICAL()
|
#define OS_ENTER_CRITICAL() EA=0,Os_Enter_Sum++ 关闭受 smallrtos 管理的中断,然后将变量 Os_Enter_Sum 加一。关中断是为了保护临界区代码。 |
|
OS_EXIT_CRITICAL()
|
#define OS_EXIT_CRITICAL() if(--Os_Enter_Sum==0
)
EA=1 打开受 smallrtos 管理的中断,然后将变量 Os_Enter_Sum 减一。关中断是为了保护临界区代码。 |
转载于:https://blog.51cto.com/dong4716138/1083409