【STM32】定时器(1)—结构体配置

1. 结构体配置

/* 定时器基本初始化结构体 TIM_TimeBaseInitTypeDef */
typedef struct {
	uint16_t TIM_ClockDivision;    // 时钟分频 
	uint16_t TIM_CounterMode;      // 计数模式
	uint16_t TIM_Period;           // 定时器周期
	uint16_t TIM_Prescaler;        // 预分频器
	uint8_t TIM_RepetitionCounter; // 重复计算器
} TIM_TimeBaseInitTypeDef;
  • TIM_ClockDivision:时钟分频设置

    设置定时器时钟 CK_INT 频率与数字滤波器采样时钟频率分频比,基本定时器没有此功能,不用设置。

    TIM_ClockDivision描述
    TIM_CKD_DIV1TDTS = Tck_tim
    TIM_CKD_DIV2TDTS = 2Tck_tim
    TIM_CKD_DIV4TDTS = 4Tck_tim
  • TIM_CounterMode:定时器计数方式设置

    可是在为向上计数、向下计数以及三种中心对齐模式。基本定时器只能是向上计数,即 TIMx_CNT 只能从 0 开始递增,并且无需初始化。

    TIM_CounterMode描述
    TIM_CounterMode_UpTIM 向上计数模式
    TIM_CounterMode_DownTIM 向下计数模式
    TIM_CounterMode_CenterAligned1TIM 中央对齐模式 1 计数模式
    TIM_CounterMode_CenterAligned2TIM 中央对齐模式 2 计数模式
    TIM_CounterMode_CenterAligned3TIM 中央对齐模式 3 计数模式
  • TIM_Period:定时器周期设置

    实际就是设定自动重载寄存器的值,在事件生成时更新到影子寄存器。可设置范围为 0 至 65535。

  • TIM_Prescaler:定时器预分频器设置

    时钟源经过该分频器才是定时器时钟。设定的是TIMx_PSC寄存器的值。可设置范围为0-65535,对时钟源实现1-65536分频

  • TIM_RepetitionCounter:重复计数器设置

    属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出 PWM 的个数。这里不用设置。

/* 定时器比较输出初始化结构体 TIM_OCInitTypeDef */
typedef struct {
	uint16_t TIM_OCIdleState;      // 空闲状态下比较输出状态
    uint16_t TIM_OCMode;           // 比较输出模式
    uint16_t TIM_OCNIdleState;     // 空闲状态下比较互补输出状态
    uint16_t TIM_OCNPolarity;      // 互补输出极性
    uint16_t TIM_OCPolarity;       // 输出极性
    uint16_t TIM_OutputNState;     // 比较互补输出使能
	uint16_t TIM_OutputState;      // 比较输出使能
	uint16_t TIM_Pulse;            // 脉冲宽度
} TIM_OCInitTypeDef;
  • TIM_OCIdleState:空闲状态时通道输出电平设置

    可选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)时,经过死区时间后定时器通道输出高电平或低电平。它设定CR2 寄存器的 OISx 位的值。

  • TIM_OCMode:比较输出模式选择

    总共有八种,常用的为 PWM1/PWM2。它设定CCMRx 寄存器 OCxM[2:0]位的值。

    TIM_OCMode描述
    TIM_OCMode_TimingTIM 输出比较时间模式
    TIM_OCMode_ActiveTIM 输出比较主动模式
    TIM_OCMode_InactiveTIM 输出比较非主动模式
    TIM_OCMode_ToggleTIM 输出比较触发模式
    TIM_OCMode_PWM1TIM 脉冲宽度调制模式 1
    TIM_OCMode_PWM2TIM 脉冲宽度调制模式 2
  • TIM_OCNIdleState:空闲状态时互补通道输出电平设置

    可选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)时,经过死区时间后定时器互补通道输出高电平或低电平,设定值必须与 TIM_OCIdleState 相反。它设定是 CR2 寄存器的 OISxN 位的值。

  • TIM_OCNPolarity:比较互补输出极性

    可选 OCxN 为高电平有效或低电平有效。它设定 TIMx_CCER 寄存器的 CCxNP 位的值。

  • TIM_OCPolarity:比较输出极性

    可选 OCx 为高电平有效或低电平有效。它决定着定时器通道有效电平。它设定 CCER 寄存器的 CCxP 位的值。

    TIM_OCPolarity描述
    TIM_OCPolarity_HighTIM 输出比较极性高
    TIM_OCPolarity_LowTIM 输出比较极性低
  • TIM_OutputNState:比较互补输出使能

    决定 OCx 的互补信号 OCxN 是否通过外部引脚输出。它设定 CCER 寄存器 CCxNE 位的值。

  • TIM_OutputState:比较输出使能

    决定最终的输出比较信号 OCx 是否通过外部引脚输出。它设定 TIMx_CCER 寄存器 CCxE/CCxNE 位的值。

  • TIM_Pulse:比较输出脉冲宽度

    实际设定比较寄存器 CCR 的值,决定脉冲宽度。可设置范围为 0 至 65535。

/* 定时器输入捕获初始化结构体 TIM_ICInitTypeDef */
typedef struct {
	uint16_t TIM_Channel;          // 输入通道选择
    uint16_t TIM_ICFilter;         // 输入捕获滤波器
	uint16_t TIM_ICPolarity;       // 输入捕获触发选择
   	uint16_t TIM_ICPrescaler;      // 输入捕获预分频器
	uint16_t TIM_ICSelection;      // 输入捕获选择
} TIM_ICInitTypeDef;
  • TIM_Channel:捕获通道 ICx 选择

    可选 TIM_Channel_1、TIM_Channel_2、TIM_Channel_3 或 TIM_Channel_4 四个通道。它设定 CCMRx 寄存器 CCxS 位 的值。

    TIM_Channel描述
    TIM_Channel_1使用 TIM 通道 1
    TIM_Channel_2使用 TIM 通道 2
    TIM_Channel_3使用 TIM 通道 3
    TIM_Channel_4使用 TIM 通道 4
  • TIM_ICFilter:输入捕获滤波器设置

    可选设置 0x0 至 0x0F。它设定 CCMRx 寄存器ICxF[3:0]位的值。一般我们不使用滤波器,即设置为 0。

  • TIM_ICPolarity:输入捕获边沿触发选择

    可选上升沿触发、下降沿触发或边沿跳变触发。它设定 CCER 寄存器 CCxP 位和 CCxNP 位的值。

    TIM_ICPolarity描述
    TIM_ICPolarity_RisingTIM 输入捕获上升沿
    TIM_ICPolarity_FallingTIM 输入捕获下降沿
  • TIM_ICPrescaler:输入捕获通道预分频器

    可设置 1、2、4、8 分频,它设定 CCMRx寄存器的 ICxPSC[1:0]位的值。如果需要捕获输入信号的每个有效边沿,则设置 1 分频即可。

    TIM_ICPrescaler描述
    TIM_ICPSC_DIV1TIM 捕获在捕获输入上每探测到一个边沿执行一次
    TIM_ICPSC_DIV2TIM 捕获每2 个事件执行一次
    TIM_ICPSC_DIV3TIM 捕获每3 个事件执行一次
    TIM_ICPSC_DIV4TIM 捕获每4 个事件执行一次
  • TIM_ICSelection:输入通道选择

    捕获通道 ICx 的信号可来自三个输入通道,分别为TIM_ICSelection_DirectTI、TIM_ICSelection_IndirectTI或TIM_ICSelection_TRC。如果是普通的输入捕获,4 个通道都可以使用,如果是 PWM 输入则只能使用通道 1 和通道 2。它设定 CCRMx 寄存器的 CCxS[1:0]位的值。

    TIM_ICSelection描述
    TIM_ICSelection_DirectTITIM 输入 2,3 或 4 选择对应地与 IC2 或 IC1 或IC4 或 IC3 相连
    TIM_ICSelection_IndirectTITIM 输入 2,3 或 4 选择对应地与 IC2 或 IC1 或IC4 或 IC3 相连
    TIM_ICSelection_TRCTIM 输入 2,3 或4 选择与 TRC 相连
/* 定时器短路和死区初始化结构体 TIM_BDTRInitTypeDef */
typedef struct {
	uint16_t TIM_OSSRState;        // 运行模式下的关闭状态选择
	uint16_t TIM_OSSIState;        // 空闲模式下的关闭状态选择
	uint16_t TIM_LOCKLevel;        // 锁定配置
	uint16_t TIM_DeadTime;         // 死区时间
	uint16_t TIM_Break;            // 断路输入使能控制
	uint16_t TIM_BreakPolarity;    // 断路输入极性
	uint16_t TIM_AutomaticOutput;  // 自动输出使能
} TIM_BDTRInitTypeDef;
  • TIM_OSSRState:运行模式下的关闭状态选择

    它设定 BDTR 寄存器 OSSR 位的值。

  • TIM_OSSIState:空闲模式下的关闭状态选择

    它设定 BDTR 寄存器 OSSI 位的值。

  • TIM_LOCKLevel:锁定级别配置

    它设定BDTR 寄存器 LOCK[1:0]位的值。

  • TIM_DeadTime:配置死区发生器

    定义死区持续时间,可选设置范围为 0x0 至 0xFF。它设定 BDTR 寄存器 DTG[7:0]位的值。

  • TIM_Break:断路输入功能选择

    可选使能或禁止。它设定 BDTR 寄存器 BKE 位的值。

  • TIM_BreakPolarity:断路输入通道 BRK 极性选择

    可选高电平有效或低电平有效。它设定 BDTR 寄存器 BKP 位的值。

  • TIM_AutomaticOutput:自动输出使能

    可选使能或禁止,它设定 BDTR 寄存器 AOE位的值。


2. 【STM32】定时器(2)—库函数API使用

详见以上链接,点击蓝字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值