Delay 函数和空闲线程钩子函数是 RT-Thread 中重要的功能模块,有助于实现任务调度和系统优化。Delay 函数允许任务在一定时间内延迟执行,从而实现任务之间的时间控制和同步。空闲线程及其钩子函数则提供了在系统空闲时间内执行额外操作的机会,如任务监控、能耗优化等。合理利用 Delay 函数和空闲线程钩子函数可以提高系统的性能和稳定性,是 RT-Thread 应用开发中不可或...
理解rt_thread_delay 参数的含义,特别是其时间单位: rt_tick_t 是RT-Thread 中定义的一个数据类型,用于表示系统时钟节拍的数量。系统时钟节拍(tick)是 RT-Thread 操作系统内部用于时间管理的基本单位。 如果参数不是以秒为单位,提供转换为秒的方法或公式: 由于rt_thread_delay 的参数是以时钟节拍(tick)为单位的...
阻塞延时函数在thread.c中定义。 voidrt_thread_delay(rt_tick_t tick) {structrt_thread *thread;/*获取当前线程的线程控制块*/thread= rt_current_thread; (1)/*设置延时时间*/thread->remaining_tick = tick; (2)/*进行系统调度*/rt_schedule(); (3) } (1)获取当前线程的线程控制块。rt_current_t...
离下个中断时间点还差些时候 */if((next_timeout-current_tick)<RT_TICK_MAX/2){/* get the delta timeout tick */next_timeout=next_timeout-current_tick;//计算还差多长时间rt_thread_delay(next_timeout);//休眠差的这段时间}}/* check software timer 检查是否该产生超时事件 */rt_soft_timer_...
当处于运行状态的线程调用rt_thread_delay(),rt_sem_take(),rt_mutex_take(),rt_mb_recv() 等函数或者获取不到资源时, 将进入到挂起状态(RT_THREAD_SUSPEND); 处于挂起状态的线程,如果等待超时依然未能获得资源或由于其他线程释放了资源,那么它将返回到就绪状态。
线程挂起可以由多种方法实现:线程调用rt_thread_delay()、rt_thread_suspend()等函数接口可以使得线程主动挂起,放弃CPU使用权,当线程调用rt_sem_take(),rt_mb_recv()等函数时,资源不可使用也会导致调用线程被动挂起。 当线程已经是挂起态的时候无法调用rt_thread_suspend()函数,已经是挂起态的线程调用rt_thread_...
只有当延时的时间片超时后才会在rt_thread_timeout函数里将任务再次唤醒,并由调度器再次调度到本任务才会获得CPU资源,而此时会从当时挂起的程序点接着执行,也就是rt_schedule的返回操作,并接着在rt_thread_sleep里执行返回,直到返回到用户任务调用rt_thread_delay的地方。所以总结一下其实就是三个步骤实现的任务延时...
rt_thread_delay(next_timeout);//休眠差的这段时间 } } /* check software timer 检查是否该产生超时事件 */ rt_soft_timer_check(); } } #endif 如果要继续往下面分析,就得继续分析rt_soft_timer_check();的实现源码了,这里我们就不继续分析下去,因为到目前为止,我们对于 RT-Thread 系统定时器的初始化...
rt_thread_delay(RT_TICK_PER_SECOND/2); } } 这样编写程序后,编译通过,烧写后却发现LED根本无法按照预期进行工作,这是因为我们还缺少工作没有做。 打开board.c,可以看到它上面有几句注释,根据注释,修改如下: #include <rthw.h> #include <rtthread.h> #include "stm32f10x_rcc.h" // rtthread tick ...
rt_err_t rt_thread_delay(rt_tick_t tick); 这个函数会让当前线程延迟一些时间。 参数: 参数描述 tick 延迟值,滴答值 返回值 返回成功或失败 任务阻塞延迟示例 vTaskDelay(500*RT_TICK_PER_SECOND/1000); // 延迟500ms 任务绝对延迟 rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t ...