STM32F4系列中总共有17个定时器,1个系统定时器sysTick,其中2个高级控制定时器,10个通用定时器,2个基本定时器,2个看门狗定时器。
2个看门狗定时器:看门狗定时器使用的是STM32芯片内部的32KHz时钟源LSI RC,具有独立的2个定时器,属于CortexM内核的定时器;
1个系统定时器:systick是一个24位定时器,属于CM4内核的一个外设,这个定时器放在NVIC中,主要为了给操作系统提供一个硬件上的中断,时钟频率 为168MHz(内核时钟频率)。systick一次最多可以计数为2^24个及(计数值放在STK_LOAD寄存器中),其中当前 STK_VAL的值从STM_LOAD中加载的值向下减1,到0后系统定时器就产生一次中断,同时硬件自动加载STK_LOAD的值到STK_VAL中,进行新的一轮计数;
2个基本定时器:在STM32中TIM6 TIM7是基本定时器。主要功能:1.基本定时功能,当累加的脉冲数量达到预定值时,能够触发中断或者触发DMA请求,2.专门用于驱动DAC。
TIM6 TIM7完全独立,其中涉及的寄存器值为:计数器寄存器TIM_CNT,预分频寄存器TIM_PSC,自动装载寄存器TIM_ARR, 其中对应的是当前的计数值,定时器预分频设置(计数脉冲周期),TIM6/TIM7定时器周期。在CubeMX中还可设置重复计数次数,用它可轻松控制定时器输出中断次数。
10个通用定时器:通用定时器具有PWM输出模式。通过设置寄存器值进行PWM输出:预分频寄存器TIM_PSC(输入时钟周期),自动装载寄存器TIM_ARR(定时器周期),计数器寄存器TIM_CNT(当前计数值),定时器比较寄存器TIMx_CRR(占空比设定值), 通过TIM_CNT计数值与TIMx_CRR比较,当0<TIM_CNT<TIMx_CRR的值时不断输出有效值否则TIMx_CRR<TIM_CNT<TIM_ARR时,输出为无效值;
2个高级控制定时器:STM32中的高级控制定时器(Tim1)是由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。
- 输入捕获
- 输出比较
- PWM生成
- 单脉冲模式输出
- 死区时间可编程的互补输出
- 使用外部信号控制定时器和定时器互连的同步电路
- 在指定数目的计数器周期之后更新定时器寄存器
- 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态
- 更新:计数器向上溢出或者向下溢出,计数器初始化。
- 触发事件(计数器启动,停止,初始化)
- 输入捕获
- 输出比较
- 刹车信号输入
- 已知一个波形求另一个未知波形(信号长度和占空比)
- 已知波形的信号长度和占空比产生一个相应的波形
- 增量正交编码器驱动电机获得动态信息(速度、加速度)
- 测量输入信号的脉冲宽度(输入捕获)
- 产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)....