STM32——SysTick定时器

一、定时器分类

        1、滴答(系统)定时器:systick     -- 内核提供

        2、基本定时器:定时      --STM32

        3、通用定时器:定时+PWM+输入捕获+编码    --STM32

        4、高级定时器:通用定时器+死区+刹车(电机)   --STM32

        5、窗口看门狗,独立看门狗本质上也是定时器

二、系统定时器实现精准计时/定时

举个例子:

定时炸弹   300

什么时候减到0  

更新一次数据的时间  t     300--299需要多长时间

1S更新多少次数据   f

t=1/f

重装载值    300

留给我跑的时间 : T=重装载值*t=重装载值/f

定时器重要概念:

重装载值,  计数频率   更新一次数周期   

        怎么配置能够延时是1ms呢?

 ARM+Cortex-M3与Cortex-M4权威指南   -- 9.5章

三、 系统滴答定时器讲解 – 内核

        处理器有一个24bit的定时器—SysTick,它从重装载值向下计数到0,然后在新的时钟边沿上,加载装载值到计数器,然后继续计数。

四、SysTick使用步骤

        1.  选择时钟源

                72M时钟 

        2、配置中断

                寄存器

        3、设置重装载值

                定时器频率 f=72M=72000000HZ

                更新一次数据的时间t=1/f=1/72000000s

                (1)需要一个1ms的定时,重装载值填啥?

                        T=1ms=ARR*t

                        解出来   ARR=T/t=0.001s/(1/72000000s)=0.001*72000000=72000

                (2)需要一个2ms的定时,重装载值填啥?

                        解出来   ARR=T/t=0.002s/(1/72000000s)=0.002*72000000=144000

                 (3)系统定时器最大定时周期:

                                T=2^24/f=2^24/72000000=0.23s (最多是24位)

五、使用SysTick定时器

 若只想产生周期性的SysTick中断,最简单的方法就是使用CMSIS-Core函数SysTick_Config:

                uint32_t SysTick_Confing(uint32_t ticks);

该函数将SysTick中断间隔设置为ticks,使能计数器使用处理器时钟(如果是72M就是72M,是30M就是30M)然后设置SysTick异常为最低优先级。

例如:(1)若要在30MHz的时钟频率下产生1KHz的SysTick异常(即产生1ms中断)则可以使用

  SysTick_Confing(SystemCoreClock / 1000);

变量SystemCoreClock 是一个,系统内核时钟频率。

中断服务函数 SysTick_Handler(void)的触发频率就变成了1kHz(即1ms)。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

膽小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值