raw_osAPI使用手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

文档作者:常鹏飞函数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_OBJRAW_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_OBJRAW_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_OBJRAW_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_OBJRAW_U8policy调度方式SCHED_FIFOSCHED_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_OBJRAW_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_U8opt0唤醒每个等待任务,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_MUTEXRAW_U8*name_ptr,互斥量的名字RAW_U8policy,RAW_U8ceiling_prio功能创建一个互斥量(感觉用初始化更为恰当)说明返回值RAW_NULL_OBJECTmutex_ptr为空指针时RAW_MUTEX_NO_POLICYpolicy不合法,其只能为RAW_MUTEX_CEILING_POLIC

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功