前言
介绍stm32定时器的使用
定时器基本概念
定时器既然叫做定时器,最核心的功能就是计时,stm32都是单核的只有一个线程的cpu。定时器的引入也是降低cpu负担,定时器独立于cpu存在。
如果定时器频率为1000Hz,那么每隔1/1000=1ms,定时器计数值就会+1或者-1。
计数值不能无限增长,计数值需要内存空间来存储,这个内存空间的大小就是常说的多少位的寄存器中的多少位。例如16位寄存器取值范围为0~65535。
定时器分类
每个stm32 mcu基本上都有一个sytick定时器和若干其他定时器(包括看门狗定时器)。
H743除了基本定时器、通用定时器、高级控制定时器,还具备:低功耗定时器和高分辨率定时器。
以F407为例:
基本定时器的使用
结构简单,比通用定时器少,主要两个功能:
1.基本定时功能,生成一个时基
2.专门用来驱动数模转换器DAC外设
定时器时钟
定时器时钟的提供由其挂在的总线提供,APB1或者APB2,外设总线的频率还不是定时器的工作频率,定时器的工作频率需要在外设总线频率上进行一次分频(PSC 预分频器)。
定时器的工作频率 = 外设总线频率/(PSC+1)
定时频率=定时器工作频率/(CNT+1)
代码实现
TIM_Base_InitTypedef结构体,基本定时器只关心预分频器和定时器周期,基本定时器一般只支持向上计数,CounterMode也可以不关心。