目录
两种时基
在STM32的裸机开发中,没有操作系统这个概念,特别是在用CUBEMX配置生成项目时,默认都是选择了systick做为hal的时基。而当用了FREE RT OS时则强行绑定了systick做为其任务调度的时基。
在操作系统中,时基被用做计数,systick是1ms一个脉冲,vTaskDelay使若任务挂起等若干内核级的函数用的就是这个。(内核封装了很多层,最终可以找到systick的中断回调就是为OS提供"心跳")
在HAL库中,用到时基的地方,目前我在开发中还只知道在延时函数HAL_Delay() 有用到HAL库的时基。 HAL库时基的频率默认是1KHZ,1ms产生定时中断计数值加1。
在cubeMX配置TIM6作为HAL库时基时。默认生成的代码是预分频系数为系统时钟频率-1,装载为999,每1us计数值加1,1ms产生一次中断。全局维护一个u32类型的变量 utick。在中断函数中调用
HAL_IncTick();使得utick自增1。
在以TIM6充当时基时:TIM6的初始化
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
RCC_ClkInitTypeDef clkconfig;
uint32_t uwTimclock, uwAPB1Prescaler = 0U;
uint32_t uwPrescalerV
STM32两种时基及延时函数重写

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



