By深圳市威睿晶科Felix
主要特性:
高级定时器与通用定时器的主要差别如下红色区域
●16位向上、向下、向上下自动装载计数器●16位可编程可以实时修改预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值●多达4个独立通道:─输入捕获─输出比较─PWM生成边缘或中间对齐模式─单脉冲模式输出●死区时间可编程的互补输出●使用外部信号控制定时器和定时器互联的同步电路●允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器●刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态●如下事件发生时产生中断DMA:─更新:计数器向上溢出向下溢出,计数器初始化通过软件或者内部外部触发─触发事件计数器启动、停止、初始化或者由内部外部触发计数─输入捕获─输出比较─刹车信号输入●支持针对定位的增量正交编码器和霍尔传感器电路●触发输入作为外部时钟或者按周期的电流管理如上所示,对于一般地应用是体现不出来它高端的地方了。
使用心得:由于V35库函数将定时器资源全部融合在一块了,所以显得stm32f10x_timc库特别庞
大,找功能函数很是麻烦,还容易搞混乱。面对这种情况寄存器操作就显得很方便了,所以以下程序我是直接参考寄存器说明来逐步配置的,阅读起来不太方便,但写起来方便,而且不会重复混乱,更容易理解到定时器的工作过程。
1首先是作为定时器的通用功能:定时定时功能的实现,是通过设置定时时钟为内部时钟源来实现,如手册上介绍:“如果禁止了从模式控制器SMS000,则CEN、DIRTIMx_CR1寄存器和UG
位TIMx_EGR寄存器是事实上的控制位,并且只能被软件修改UG位仍被自动清除。只要CEN位被写成’1’,预分频器的时钟就由内部时钟CK_INT提供。”
配置步骤如下:
voidTIM1Timi
gvoidRCC_APB2PeriphClockCmdRCC_APB2Periph_TIM1RCC_APB2Periph_GPIOAENABLE打开TIM1时钟TIM1CR10x380456bit0向上计数TIM1SMCR0xfff8sms000,禁止从模式控制器TIM1PSC7199设置预分频,公式fCK_PSCPSC150101Mhz,100us1TIM1ARR10000设置自动重装载值为10000,即溢出一次时间为1STIM1RCR0重复计数寄存器为0,这个是设置事件中断频率的,为0即溢出1次中断标志置位TIM1EGR1重新初始化计数器,即清空计数器(要是向上计数则清0,要是向下计数则
f填装自动装载值)TIM1SR0x0000清中断标志TIM1DIER1开启更新中断,即出现一次溢出事件中断一次TIM1CR10X001打开定时器1
这样就实现了最基本的定时功能,可以在r