时钟中断是rt-thread的线程调度器的驱动力(二)

2014-11-24 07:57:42 · 作者: · 浏览: 1
。由此可见,在设置了软件定时器模式时(默认情况下,rt-thread使用硬件定时器),这个timer_thread线程也是rt_thread操作系统线程调度的驱动引擎.
4 如何设置系统时钟中断间隔
查看rt-thread操作系统的用户手册时,上面有提到rt_thead操作系统的时钟每个tick的默认间隔为10ms,那么这个10 ms双是如何来的呢
答案是在/bsp/stm32f20x/drivers/board.c源文件中,且看SysTick_Configuration函数的实现:
[cpp]
/*******************************************************************************
* Function Name : SysTick_Configuration
* Description : Configures the SysTick for OS tick.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SysTick_Configuration(void)
{
RCC_ClocksTypeDef rcc_clocks;
rt_uint32_t cnts;
RCC_GetClocksFreq(&rcc_clocks);//获得系统的晶振频率
cnts = (rt_uint32_t)rcc_clocks.HCLK_Frequency / RT_TICK_PER_SECOND;//计算出多少次晶振才是一个tick时间片
SysTick_Config(cnts);//配置系统tick
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//配置时钟源
}
由上述代码可见,rt_thread的系统tick是由RT_TICK_PER_SECOND这个宏来配置的,RT_TICK_PER_SECOND在头文件rtconfig.h文件中定义,如下:
[cpp]
/* Tick per Second */
#define RT_TICK_PER_SECOND 100
此参数的含义是1秒包含多少个tick, 这里默认是100,则默认情况下1秒包含100个tick,那么即每个tick为10ms,现在明白了吧
如果我们要修改每个tick的时间隔,则只需要修改RT_TICK_PER_SECOND这个宏的值即可.