STM32 HAL库 系统滴答与延时函数

1 .1系统滴答定时器

系统滴答定时器(SysTick),为内核定时器,是一个24位的递减计数器,其中可以选择1或8(8更多)分频,由AHB总线上的时钟经过分频到达VAL递减计数器,当VAL=0时,计数完成,标志位置1。还用重装载值,当VAL=0后,VAL计数器可以重新装载LOAD的值。

1.2系统滴答的寄存器与标志位 

系统滴答定时器的寄存器如图所示,其中较为关键的是CLK源寄存器并不是选择时钟源,而是选择分频,因为系统滴答定时器的来源只有AHB总线。

1.3延时函数初始化

延时函数的初始化在hal库中默认为系统滴答定时器进行了8分频,其中G-FAC-US是一个全局变量,表示1mhz下1us的计时次数(1次)。此时的时钟频率是72/8=9MHZ,因此此时需要让g_fac_us计数9次。若不分频就是72次。

1.4延时函数

在初始化函数中得到了当前频率的1us的计次数,赋给重装计数器,并清空计数器进行使能,再判断ctrl是否完成计数。

补充,再delay_us中,使用了两种进行位操作的方式,两者本质一模一样,但是第一种可读性与维护性不强,第二种则是逻辑性不强,没有第一种简单粗暴。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值