基于STM32的Free-RT-OS的两种时基的认识以及重写ms,us级延时

STM32两种时基及延时函数重写

目录

两种时基

定时器重写ms和us级函数

Systick重写us ms级延时函数


两种时基

        在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值