关于STM32的通用定时器的学习总结

定时器的俩大作用就是输入捕获以及输出比较,主要参考程序为PWM输出实验以及触摸按键实验。

第一:

无论是用作输出还是输入,都必须首先初始化定时器
在这里插入图片描述关于STM32的通用定时器的学习总结_第1张图片
TIM_TimeBaseInitStructure
这个结构体主要包含上图中的几个参数,主要确定:
TIM_ClockDivision APBx的时钟分频数(决定定时器的时钟f(DTS) 与APBx时钟f(CK_INT) 的比例关系),
TIM_CounterMode 计数模式,
TIM_Period 计数器的自动重装值ARR,
TIM_Prescaler 预分频值(决定计数器的时钟与定时器时钟的比例关系),
TIM_RepetitionCounter在通用定时器中用不到,暂不介绍!

第二:

当用作输入捕获时,使用**TIM_ICInit()**函数进行通道的初始化。
在这里插入图片描述
TIM_ICInitTypeDef 类型的结构体变量主要包含以下参数:
TIM_Channel:说明使用哪个通道x作为输入(1~4)
TIM_ICFilter:说明 当前输入通道的ICxF这一位的设置,主要是设定2个值,一是设定输入通道Tlx进行采样的频率f(SAMPLING);二是设定数字滤波器的长度N,具体讲解可以参考寄存器TIMx_CCMR1的说明(STM32F10x中文参考手册)以及STM32F10x开发指南–库函数版本 第223页关于ICxF 的具体讲解。
TIM_ICPolarity:设置TIMx_CCER中相应的CCxP位,设定为上升沿捕获还是下降沿捕获,还是上升沿和下降沿都可以捕获。
TIM_ICPrescaler:设置TIMx_CCER中相应的ICxPSC位,设置输入的预分频系数,如果不分频,检测到每一个边沿都触发一次捕获;如果是2分频,表示2个事件触发一次捕获。
TIM_ICSelection:设置TIMx_CCER中相应的CCxS位,定义x这个通道的方向(输入/输出),如果是输入,同时确定输入脚ICx的选择。具体可以看通用定时器的框图。
关于STM32的通用定时器的学习总结_第2张图片

第三:

当用作输出比较通道时,根据使用的通道不同(1~4)使用不同的通道模式初始化函数,TIM_OC1InitTIM_OC2InitTIM_OC3InitTIM_OC4Init分别代表通道1-4.以TIM_OC1Init()举例说明。在这里插入图片描述

TIM_OCInitTypeDef结构体包含以下参数:(我们主要用以下三个)
TIM_OCMode 设置比较输出模式,设定TIMx_CCMRx中的OCxM[2:0]位来进行设置
TIM_OutputState 设置比较输出使能,设定TIMx_CCER中的CCxE位;
TIM_OCPolarity 设置OCx的有效电平是高电平还是低电平 设定TIMx_CCER中的CCxP位;关于STM32的通用定时器的学习总结_第3张图片

你可能感兴趣的:(关于STM32的通用定时器的学习总结)