rawosAPI使用手册.docx
- 文档编号:9882400
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:36
- 大小:23.80KB
rawosAPI使用手册.docx
《rawosAPI使用手册.docx》由会员分享,可在线阅读,更多相关《rawosAPI使用手册.docx(36页珍藏版)》请在冰点文库上搜索。
rawosAPI使用手册
文档作者:
常鹏飞
函数raw_enter_interrupt()在raw_system.c文件中
参数无
功能此函数在进入中断一开始的时候调用
说明调用此函数的时候必须处于关中断关状(响应中断的,最开始进入中断时硬件保证是关中断状态)因为其函数体中没有
RAW_SR_ALLOC();
RAW_CRITICAL_ENTER();
…
RAW_CRITICAL_EXIT();
函数raw_finish_int()在raw_system.c文件中
参数无
功能当中断退出的时候调用
说明在抢占模式下,在最外层中断退出时可能引发任务切换
函数raw_time_tick()在raw_system.c文件中
参数无
功能在时钟中断处理函数中调用
说明在时钟中断处理函数中调用
函数raw_system_time_get()在raw_system.c文件中
参数无
功能返回系统的已经运行时钟数
说明系统运行时钟数在达到0xffffffff后会翻头到0
函数RAW_U32raw_system_time_set(RAW_U32time)在raw_system.c文件中
参数RAW_U32time
功能设置系统运行时钟数
说明
函数RAW_U16raw_os_init()在raw_sched.c文件中
参数无
功能raw_os初始化时调用,成功返回RAW_SUCCESS
说明
函数RAW_U16raw_os_start()在raw_sched.c文件中
参数无
功能raw_os正式启动运行
说明理论上讲这个函数永远不会返回,若返回说明出错,返回RAW_SYSTEM_ERROR
函数raw_task_create在raw_task.c文件中
参数RAW_TASK_OBJ*task_obj指向要创建任务的RAW_TASK_OBJ的指针
RAW_U8*task_name任务的名字
RAW_VOID*task_arg传给任务的参数
RAW_U8task_prio任务的优先级,数越小优先级越大
RAW_U16time_slice分配给任务的时间片,用于时间片调度,指定意味用默认值
PORT_STACK*task_stack_base堆栈的起始地址
RAW_U32stack_size堆栈的大小
RAW_TASK_ENTRYtask_entry任务的入口
RAW_U8auto_start标记是否立即运行?
?
?
RAW_AUTO_START1(task_state会置为RAW_RDY状态,将该任务加入就绪队列,最后进行调度检查)
RAW_DONT_START0(task_state会置为RAW_SUSPENDED状态)
功能创建一个任务,如果创建这个任务有更高的优先级,那么它会立即得到运行
返回值RAW_IDLE_EXIT空闲任务的优先级独占,不允许其它任务再使用这个优先级
RAW_OS_STOPPEDraw_os还没有开始运行
RAW_SUCCESS成功创建任务
RAW_NULL_OBJECTRAW_TASK_OBJ类型指针为空
RAW_BYOND_MAX_PRIORITY优先级溢出
RAW_NULL_POINTER空指针(task_stack_base、task_entry为空时)
函数raw_task_stack_check在raw_task.c中
参数RAW_TASK_OBJ*task_obj指向要检查堆栈任务的RAW_TASK_OBJ的指针
RAW_U32*free_stack指向的变量用于保存剩余堆栈元素数(注,不是字节数)
功能检测指定任务剩余堆栈元素数
说明此函数需在RAW_SYSTEM_CHECK宏开关打开情况下,才能使用
返回值RAW_NULL_OBJECT当task_obj为空指针时
RAW_NULL_POINTER当free_stack为空指针时
RAW_SUCCESS调用成功返回
函数raw_disable_sche在raw_task.c文件中
参数无
功能禁止调度器调度
说明此函数不能在中断处理函数中调用(为什么?
?
?
)
我认为是因为raw_disable_sche和raw_enable_sche设计的本意是在任务态下配对使用达到临界区(大范围/粒度性的原子性操作)的目的,防止其之间的执行被其它任务打断。
所以可以在中断处理函数中调用,只是没有逻辑意义。
返回值RAW_NOT_CALLED_BY_ISR在中断处理函数中调用(不应在ISR中调用)
RAW_SCHED_OVERFLOWraw_disable_sche调用次数溢出
RAW_SUCCESS调用成功返回
函数raw_enable_sche在raw_task.c文件中
参数无
功能开启调度器调度
说明此函数不能在中断处理函数中调用(原因同raw_disable_sche)
返回值RAW_NOT_CALLED_BY_ISR在中断处理函数中调用(不应在ISR中调用)
RAW_SCHED_INVALIDraw_enable_sche和raw_disable_sche没有严格配对使用
RAW_SCHED_LOCKED调度器仍处于上锁状态
RAW_SUCCESS调用成功返回
函数raw_sleep在raw_task.c文件中
参数RAW_U32dly睡眠的时钟数(非0)
将当前任务放在同等优先级就绪队列最后(0)
功能让调用此函数的任务睡眠指定时间
说明
返回值RAW_NOT_CALLED_BY_ISR在中断处理函数中调用(不应在ISR中调用)
RAW_SUCCESS成功调用返回
函数raw_task_suspend在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr指向要暂停挂起的任务的RAW_TASK_OBJ
功能挂起暂停指定的任务
说明不能挂起IDLE空闲任务
返回值RAW_NULL_OBJECT当task_ptr为空指针时
RAW_SUSPEND_TASK_NOT_ALLOWED试图挂起暂停IDLE空闲任务(不能挂起IDLE空闲任务)
RAW_SCHED_LOCKED调度器处于上锁状态
RAW_SUSPENDED_AGAIN重复让指定任务暂停挂起
RAW_STATE_UNKNOWN未知状态
RAW_SUCCESS成功调用返回
函数raw_task_resume在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr指向要唤醒的任务的RAW_TASK_OBJ
功能唤醒被raw_task_suspend暂停挂起的任务(应只唤醒被raw_task_suspend暂停挂起的任务)
说明
返回值RAW_NULL_OBJECT当task_ptr为空指针时
HAS_NOT_SUSPEND指定任务没有处于suspend状态
RAW_STATE_UNKNOWN未知状态
RAW_SUCCESS成功调用返回
函数raw_task_priority_change在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr指向要改变优先级任务的RAW_TASK_OBJ
RAW_U8new_priority指定的新优先级
RAW_U8*old_priority指定的变量用于保存老优先级
功能动态改变指定任务的优先级
说明
返回值RAW_NULL_OBJECTtask_prt或old_priority为空指针时
RAW_CHANGE_PRIORITY_NOT_ALLOWED原来任务的优先级越界或新指定为空闲任务的优先级
RAW_SUCCESS成功调用返回
函数raw_task_delete在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr指向要删除任务的RAW_TASK_OBJ
功能删除指定任务并引发任务切换
说明不能删除占有互斥量或信号量的任务?
?
?
不能在ISR中调用该函数(逻辑不符?
?
?
)
返回值RAW_NULL_OBJECTtask_ptr指针为空
RAW_NOT_CALLED_BY_ISR不能在ISR中调用
RAW_DELETE_TASK_NOT_ALLOWED不允许删除空闲任务
RAW_SCHED_LOCKED调度器处于上锁状态
RAW_STATE_UNKNOWN任务处于未知状态
RAW_SUCCESS成功调用返回
函数raw_set_task_user_point在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr,指向要设置用户数据区任务的RAW_TASK_OBJ
RAW_VOID*user_point指向用户数据区
功能设置用户数据区
说明
返回值
函数raw_get_task_user_point在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr,指向要返回用户数据区任务的RAW_TASK_OBJ
功能返回用户数据区
说明
返回值指向用户数据区的指针
函数raw_task_time_slice_change在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr,指向要改变时间片任务的RAW_TASK_OBJ
RAW_U16new_time_slice新的时间片(为0,则用TIME_SLICE_DEFAULT设置)
功能改变指定任务的时间片
说明
返回值RAW_NULL_OBJECTtask_ptr指针为空指针
RAW_SUCCESS成功调用返回
函数raw_set_sched_way在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr,指向要改变调度方式任务的RAW_TASK_OBJ
RAW_U8policy调度方式
SCHED_FIFO
SCHED_RR
功能改变指定任务的调度方式
说明
返回值RAW_NULL_OBJECTtask_ptr为空指针
RAW_INVALID_SCHED_WAY无效调用方式,目前只能为(SCHED_FIFO或SCHED_RR)
RAW_SUCCESS成功调用返回
函数raw_get_sched_way在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr,指向要获取调度方式任务的RAW_TASK_OBJ
RAW_U8*policy_ptr指向的变量用来保存调度方式
功能获取指定任务的调度方式
说明
返回值RAW_NULL_OBJECTtask_ptr或policy_ptr为空指针
RAW_SUCCESS成功调用返回
函数raw_task_wait_abort在raw_task.c文件中
参数RAW_TASK_OBJ*task_ptr指向要中止任务的RAW_TASK_OBJ
功能中止指定任务等待睡眠挂起状态,进入就绪状态
说明只能中止处于DLY或SUSPEND或PEND状态的任务?
?
?
返回值RAW_NULL_OBJECTtask_ptr为空指针
RAW_STATE_UNKNOWN任务处于未知状态
RAW_SUCCESS调用成功返回
函数raw_task_identify在raw_task.c文件中
参数无
功能获取当前运行的任务
说明
返回值返回当前运行的任务
函数raw_iter_block_task在raw_task.c文件中
参数LIST*object_head,等待任务队列的头结点
RAW_VOID(*debug_function)(RAW_TASK_OBJ*),对每个任务的debug函数
RAW_U8opt>0唤醒每个等待任务,0则什么也不做
功能对处于等待semphore,event,mutex,queue,block,bytememory上任务进行调试
说明
返回值无
函数raw_get_system_global_space在raw_task.c文件中
参数无
功能获取raw_os(系统全局变量)数据段+bss段空间大小
说明主要是计算raw_os系统内部全局变量所占空间大小
返回值raw_os数据段+bss段空间大小
函数raw_mutex_create在raw_mutex.c文件中
参数RAW_MUTEX*mutex_ptr,指向要创建的互斥量RAW_MUTEX
RAW_U8*name_ptr,互斥量的名字
RAW_U8policy,
RAW_U8ceiling_prio
功能创建一个互斥量(感觉用初始化更为恰当)
说明
返回值RAW_NULL_OBJECTmutex_ptr为空指针时
RAW_MUTEX_NO_POLICYpolicy不合法,其只能为
RAW_MUTEX_CEILING_POLICY(优先级天花板模式)
RAW_MUTEX_INHERIT_POLICY(优先级继承模式)
RAW_MUTEX_NONE_POLICY
三者之一
RAW_SUCCESS成功调用返回
函数raw_mutex_get在raw_mutex.c文件中
参数RAW_MUTEX*mutex_ptr,指向要获取的互斥量
RAW_U32wait_option获取方式选项(或超时值)
RAW_NO_WAIT0x00000000不等待
RAW_WAIT_FOREVER0xFFFFFFFF永久等待
闭区间[0x00000001,0xFFFFFFFE]为超时值
功能尝试获取指定互斥量
说明
返回值RAW_NULL_OBJECTmutex_ptr为空指针时
RAW_NOT_CALLED_BY_ISR在ISR中调用(此函数不允许在ISR中调用)
RAW_ERROR_OBJECT_TYPEmutex_ptr指向的不是MUTEX互斥量类型
RAW_NO_PEND_WAIT没有成功获取MUTEX互斥量,无等待返回
RAW_SCHED_DISABLE调度器处于上锁状态
RAW_SUCCESS成功调用返回
函数raw_mutex_put在raw_mutex.c文件中
参数RAW_MUTEX*mutex_ptr指向要释放的MUTEX互斥量
功能释放指定的MUTEX互斥量
说明
返回值RAW_NULL_OBJECTmutex_ptr为空指针
RAW_ERROR_OBJECT_TYPE类型错误,mutex_ptr指向的对象不是RAW_MUTEX_OBJ_TYPE类型
RAW_MUTEX_NOT_RELEASE_BY_OCCYPY不是由占用该MUTEX互斥量的任务进行释放
RAW_SUCCESS成功调用返回
函数raw_mutex_delete在raw_mutex.c文件中
参数RAW_MUTEX*mtxcb指向要删除的MUTEX互斥量
功能删除指定的MUTEX互斥量
说明
返回值RAW_NULL_OBJECTmtxcb为空指针
RAW_ERROR_OBJECT_TYPEmtxcb指向的对象不是MUTEX互斥量类型
函数raw_semaphore_create在raw_sem.c文件中
参数RAW_SEMAPHORE*semaphore_ptr,指向要创建初始化指定的SEM信号量
RAW_U8*name_ptr,SEM信号量的名字
RAW_U32initial_countSEM信号量可用资源数,取值范围[0,0xFFFFFFFE]
功能创建初始化指定的SEM信号量
说明
返回值RAW_NULL_OBJECTsemaphore_ptr为空指针
RAW_SEMAPHORE_OVERFLOW当SEM信号量资源数量初始化值initial_value为0xFFFFFFFF时,溢出
RAW_SUCCESS成功调用返回
函数raw_semaphore_put在raw_sem.c文件中
参数RAW_SEMAPHORE*semaphore_ptr指向要释放的SEM信号量
功能释放指定的SEM信号量,并唤醒优先级最高的等待任务
说明
返回值RAW_NULL_OBJECTsemaphore_ptr为空指针
RAW_ERROR_OBJECT_TYPEsemaphore_ptr指向的对象不是SEM信号量类型
RAW_SEMAPHORE_OVERFLOWSEM信号量的值已经是0xFFFFFFFF,溢出
RAW_SUCCESS成功调用返回
函数raw_semaphore_put_all在raw_sem.c文件中
参数RAW_SEMAPHORE*semaphore_ptr指向要释放的SEM信号量
功能释放指定的SEM信号量,并唤醒所有的等待任务
说明
返回值RAW_NULL_OBJECTsemaphore_ptr为空指针
RAW_ERROR_OBJECT_TYPEsemaphore_ptr指向的对象不是SEM信号量类型
RAW_SEMAPHORE_OVERFLOWSEM信号量的值已经是0xFFFFFFFF,溢出
RAW_SUCCESS成功调用返回
函数raw_semaphore_get在raw_sem.c文件中
参数RAW_SEMAPHORE*semaphore_ptr指向尝试要获取的SEM信号量
RAW_U32wait_option
RAW_NO_WAIT0x00000000不能获取时,立即返回
RAW_WAIT_FOREVER0xFFFFFFFF不能获取时,永久等待
[1,0xFFFFFFFE]不能获取时,超时等待时间
功能尝试获取指定SEM信号量
说明
返回值RAW_NULL_OBJECTsemaphore_ptr为空指针时
RAW_NOT_CALLED_BY_ISR此函数不应在ISR中调用(作为一个通用原则,凡是会引起睡眠等待(任务切换的)不应该在ISR中调用)
RAW_ERROR_OBJECT_TYPEsemaphore_ptr指向的对象不是SEM互斥量类型
RAW_SUCCESS成功调用返回
函数raw_semaphore_delete在raw_sem.c文件中
参数RAW_SEMAPHORE*semaphore_ptr指向要删除的SEM信号量
功能删除指定的SEM信号量
说明
返回值RAW_NULL_OBJECTsemaphore_ptr为空指针
RAW_ERROR_OBJECT_TYPEsemaphore_ptr指向的对象不是SEM信号量类型
RAW_SUCCESS成功调用返回
函数raw_event_create在raw_event.c文件中
参数RAW_EVENT*event_ptr,指向要创建初始化的EVENT事件标志组
RAW_U8*name_ptr,EVENT事件标志组名字
RAW_U32flags_initEVENT事件标志组的初始值
功能创建初始化指定的EVENT事件标志组
说明
返回值RAW_NULL_OBJECTevent_ptr为空指针时
RAW_SUCCESS成功调用返回
函数raw_event_get在raw_event.c文件中
参数RAW_EVENT*event_ptr,指向尝试获取的EVENT事件标志组
RAW_U32requested_flags,EVENT事件标志组中要检查的标志
RAW_U8get_option,
RAW_AND所有标志全部满足
RAW_AND_CLEAR所有标志全部满足且清除
RAW_OR所有标志满足之一即可
RAW_OR_CLEAR所有标志满足之一即可且清除
RAW_U32wait_option
RAW_NO_WAIT0x00000000若不能获取,立即返回
RAW_WAIT_FOREVER0xFFFFFFFF若不能获取,永久等待
[0x00000001,0xFFFFFFFE]若不能获取,超时等待时间
功能尝试获取指定的EVENT事件标志组
说明
返回值RAW_NULL_OBJECTevent_ptr为空指针
RAW_NOT_CALLED_BY_ISR此函数不能在ISR中调用
RAW_NO_THIS_OPTIONget_option不是下列值之一
RAW_AND
RAW_OR
RAW_AND_CLEAR
RAW_OR_CLEAR
RAW_ERROR_OBJECT_TYPEevent_ptr指向的对象不是EVENT事件组类型
RAW_NO_PEND_WAIT不能正确获取,立即返回
RAW_SCHED_DISABLE调度器处于上锁状态
RAW_SUCCESS成功调用返回
函数raw_event_set在raw_event.c文件中
参数RAW_EVENT*event_ptr,指向要设置的EVENT事件标志组
RAW_U32flags_to_set,标记要操作的位
RAW_U8set_optionRAW_AND清除指定位
RAW_OR设置指定位
功能对指定的EVENT事件标志组进行设置清除操作
说明
返回值RAW_NULL_OBJECTevent_ptr为空指针
RAW_NO_THIS_OPTIONset_option只能为RAW_AND或RAW_OR之一
RAW_EVENT_OBJ_TYPEevent_ptr指向的对象不是EVENT事件标志组类型
RAW_SUCCESS成功调用返回
函数raw_event_delete在raw_event.c文件中
参数RAW_EVENT*event_ptr指向要删除的RAW_EVENT事件标志组
功能删除指定的RAW_EVENT事件标志组
说明
返回值RAW_NULL_OBJECTevent_ptr指向空指针
RAW_ERROR_OBJECT_TYPEevent_ptr指向的对象不是EVENT事件标志组类型
RAW_SUCCESS成功调用返回
函数raw_queue_create在raw_queue.c文件中
参数RAW_QUEUE*p_q,指向要创建初始化的QUEUE消息队列数
RAW_U8*p_name,QUEUE消息队列数的名字
RAW_VOID**msg_start,QUEUE消息队列数的起始地址
RAW_U32numberQUEUE消息队列中的消息数
功能创建初始化指定的QUEUE的消息队列
说明
返回值RAW_NULL_OB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- rawosAPI 使用手册
![提示](https://static.bingdoc.com/images/bang_tan.gif)