以下为看视频笔记。。。。
1 线程状态转换图
线程初始状态是还没有运行, 当调用rt_thread_startup()后线程就是就绪态,系统根据就绪态的优先级来确定那个线程运行,
运行态执行完后就返回到就绪态。
当运行态需要共享资源时,调用图中1的函数后变为挂起态(也称阻塞态)。
运行态调用rt_thread_exit()后变为关闭态。
系统运行就在图中的状态之间转换,主要在就绪状态,运行状态,挂起状态三者之间转换。
当线程不需要运行时,可以调用rt_thread_exit()处于关闭态。
2 系统心跳
每一个操作系统中都存在一个“系统心跳”时钟,是操作系统中最小的时钟单位。这个时钟负.责系统和时间相关的一些操作。作为操作系统运行的时间尺度,心跳时钟是由硬件定时器的定时中断产生。
系统的心跳时钟我们也常称之为系统滴答或时钟节拍,系统滴答的频率需要我们根据cpu的处理能力来决定。
时钟节拍使得内核可以将线程延时若干个整数时钟节拍,以及线程等待事件发生时,提供等待超时的依据。
频率越快,内核函数介入系统运行的几率就越大,内核占用的处理器时间就越长,系统的负荷就变大;
频率越小,时间处理精度又不够;
我们在stm32平台上一般设置系统滴答频率为100HZ,即每个滴答的时间是10ms
在代码board.c里有STM32硬件定时器配置函数如下图,配置时钟为1 秒时间跳100次 = 100 Hz,一个时钟节拍为10毫秒。