rt_thread_sleep/delay() 的参数 tick,单位为 1 个系统时钟节拍(OS tick)。 rt_thread_mdelay() 的参数 ms,单位为 1ms。 函数的返回值为 RT_EOK。 使得线程进入休眠,即调用这三个函数中的一个,也是让出 CPU 权限的一种方式,可以让低优先级的线程能够得到执行。 如果高优先级的线程没有让出 CPU 的操作...
一般无操作系统的情况下,经验丰富的工程师可能会使用状态机加定时器等实现任务的非阻塞延时,使用软件定时器加回调函数实现简单的定时任务等。在操作系统中,可以统一使用系统延时rt_thread_mdelay来解决问题,操作方法类似于最开始学习单片机时的delay()函数一样,无需担心任务卡死。在简单的应用中,如果使用多个任务,完全...
一般无操作系统的情况下,经验丰富的工程师可能会使用状态机加定时器等实现任务的非阻塞延时,使用软件定时器加回调函数实现简单的定时任务等。在操作系统中,可以统一使用系统延时rt_thread_mdelay来解决问题,操作方法类似于最开始学习单片机时的delay()函数一样,无需担心任务卡死。在简单的应用中,如果使用多个任务,完全...
调度器如果主动去执行rt_thread_delay或者rt_thread_mdelay会发生什么事情? 我们知道,我们如果要让线程释放资源,只需要调用上述两个函数,就可以切换到其他线程,同时我们的理解上常常会认为这个就是一个等待延时函数,从而当做延时函数来使用,实际上来说,当在调度锁中执行这个delay函数,实际上是无效的,也就是说,无论de...
rt_thread_mdelay函数的作用是以毫秒为单位进行延迟。它的原理主要是通过循环执行一定的指令,以达到预期的延迟时间。具体的实现方式可能因不同的硬件平台和编译器而有所不同,但大致思路是利用CPU的时钟周期来计算出需要执行的指令数量,从而实现延迟功能。 在RT-Thread中,rt_thread_mdelay函数的实现可能涉及到系统时钟、...
rt_thread_delay函数 因为rt_thread_mdelay()函数里面存在调度器调度的函数,所以本次调度器的运行过程,从rt_thread_mdelay()开始分析。 在RT_thread函数中,定时器控制模块的设计很有意思,在系统中会创建一个定时器链表rt_timer_list,系统所有新创建并且激活的定时器都会以超时时间排序的方式插入到定...
启动线程:rt_thread_startup 获得当前线程:rt_thread_self 使线程让出处理器资源:rt_thread_yield(相同优先级,让出时间片) 使线程睡眠:rt_thread_sleeprt_thread_delayrt_thread_mdelay 挂起和恢复:rt_thread_suspendrt_thread_resume 控制线程:rt_thread_control ...
本文记录RT-Thread的时钟相关知识,包括时钟节拍、RT-Thread定时器工作机制以及定时器的管理方式,在定时器方面有硬件定时器和软件定时器,这里不讲硬件定时器,硬件定时器只需学习裸机时候的硬件定时器即可。后面进行实际的操作时采STM32L475VET6,RTT&正点原子联合出品潘多拉开发板进行实验。
rt_thread_delay(),rt_sem_take(), rt_mutex_take() 等函数使得运行状态的线程进入到挂起状态。 rt_thread_resume(), rt_sem_release() 等函数使得挂起状态的线程返回到就绪状态。 rt_thread_delete/detach() 函数将挂起状态的线程更改为关闭状态。
在操作系统中,可以统一使用系统延时rt_thread_mdelay来解决问题,操作方法类似于最开始学习单片机时的delay()函数一样,无须担心任务卡死。在简单的应用中,如果使用多个任务,完全可以不用考虑系统会卡死。当然,该操作系统还有更高级的功能,此处不作赘述。 资料准备...