rawosAPI使用手册.docx

上传人:b****8 文档编号:9882400 上传时间:2023-05-21 格式:DOCX 页数:36 大小:23.80KB
下载 相关 举报
rawosAPI使用手册.docx_第1页
第1页 / 共36页
rawosAPI使用手册.docx_第2页
第2页 / 共36页
rawosAPI使用手册.docx_第3页
第3页 / 共36页
rawosAPI使用手册.docx_第4页
第4页 / 共36页
rawosAPI使用手册.docx_第5页
第5页 / 共36页
rawosAPI使用手册.docx_第6页
第6页 / 共36页
rawosAPI使用手册.docx_第7页
第7页 / 共36页
rawosAPI使用手册.docx_第8页
第8页 / 共36页
rawosAPI使用手册.docx_第9页
第9页 / 共36页
rawosAPI使用手册.docx_第10页
第10页 / 共36页
rawosAPI使用手册.docx_第11页
第11页 / 共36页
rawosAPI使用手册.docx_第12页
第12页 / 共36页
rawosAPI使用手册.docx_第13页
第13页 / 共36页
rawosAPI使用手册.docx_第14页
第14页 / 共36页
rawosAPI使用手册.docx_第15页
第15页 / 共36页
rawosAPI使用手册.docx_第16页
第16页 / 共36页
rawosAPI使用手册.docx_第17页
第17页 / 共36页
rawosAPI使用手册.docx_第18页
第18页 / 共36页
rawosAPI使用手册.docx_第19页
第19页 / 共36页
rawosAPI使用手册.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

rawosAPI使用手册.docx

《rawosAPI使用手册.docx》由会员分享,可在线阅读,更多相关《rawosAPI使用手册.docx(36页珍藏版)》请在冰点文库上搜索。

rawosAPI使用手册.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2