STM32F407--库函数-- stm32f4xx_tim.c

关于定时器配置的一些常见的函数

从 stm32f4xx_tim.h 文件进行分析:

stm32f4xx_tim.c 一共是3365行
stm32f4xx_tim.h 一共是1150行


1 typedef struct {
2 uint16_t TIM_Prescaler;    // 预分频器
3 uint16_t TIM_CounterMode;  // 计数模式
4 uint32_t TIM_Period;       // 定时器周期
5 uint16_t TIM_ClockDivision;   // 时钟分频
6 uint8_t TIM_RepetitionCounter;   // 重复计算器
7 } TIM_TimeBaseInitTypeDef;
	

	

(1) TIM_Prescaler:定时器预分频器设置,时钟源经该预分频器才是定时器时钟,它设定
TIMx_PSC 寄存器的值。可设置范围为 0 至 65535,实现 1 至 65536 分频。
(2) TIM_CounterMode:定时器计数方式,可是在为向上计数、向下计数以及三种中心对
齐模式。基本定时器只能是向上计数,即 TIMx_CNT 只能从 0 开始递增,并且无需初
始化。
(3) TIM_Period:定时器周期,实际就是设定自动重载寄存器的值,在事件生成时更新到
影子寄存器。可设置范围为 0 至 65535。
(4) TIM_ClockDivision:时钟分频,设置定时器时钟 CK_INT 频率与数字滤波器采样时钟
频率分频比,基本定时器没有此功能,不用设置。
(5) TIM_RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可
以非常容易控制输出 PWM 的个数。这里不用设置。

1 typedef struct {
2 uint16_t TIM_OCMode;     // 比较输出模式
3 uint16_t TIM_OutputState;     // 比较输出使能
4 uint16_t TIM_OutputNState;    // 比较互补输出使能
5 uint32_t TIM_Pulse;         // 脉冲宽度
6 uint16_t TIM_OCPolarity;    // 输出极性
7 uint16_t TIM_OCNPolarity;   // 互补输出极性
8 uint16_t TIM_OCIdleState;   // 空闲状态下比较输出状态
9 uint16_t TIM_OCNIdleState;  // 空闲状态下比较互补输出状态
10 } TIM_OCInitTypeDef;

(1) TIM_OCMode:比较输出模式选择,总共有八种,常用的为 PWM1/PWM2。它设定
CCMRx 寄存器 OCxM[2:0]位的值。
(2) TIM_OutputState:比较输出使能,决定最终的输出比较信号 OCx 是否通过外部引脚输
出。它设定 TIMx_CCER 寄存器 CCxE/CCxNE 位的值。
(3) TIM_OutputNState:比较互补输出使能,决定 OCx 的互补信号 OCxN 是否通过外部引脚
输出。它设定 CCER 寄存器 CCxNE 位的值。
(4) TIM_Pulse:比较输出脉冲宽度,实际设定比较寄存器 CCR 的值,决定脉冲宽度。可
设置范围为 0 至 65535。
(5) TIM_OCPolarity:比较输出极性,可选 OCx 为高电平有效或低电平有效。它决定着定
时器通道有效电平。它设定 CCER 寄存器的 CCxP 位的值。
(6) TIM_OCNPolarity:比较互补输出极性,可选 OCxN 为高电平有效或低电平有效。它
设定 TIMx_CCER 寄存器的 CCxNP 位的值。
(7) TIM_OCIdleState:空闲状态时通道输出电平设置,可选输出 1 或输出 0,即在空闲状
态(BDTR_MOE 位为 0)时,经过死区时间后定时器通道输出高电平或低电平。它设定
CR2 寄存器的 OISx 位的值。
(8) TIM_OCNIdleState:空闲状态时互补通道输出电平设置,可选输出 1 或输出 0,即在
空闲状态(BDTR_MOE 位为 0)时,经过死区时间后定时器互补通道输出高电平或低电
平,设定值必须与 TIM_OCIdleState 相反。它设定是 CR2 寄存器的 OISxN 位的值。

1 typedef struct {
2 uint16_t TIM_Channel; // 输入通道选择
3 uint16_t TIM_ICPolarity; // 输入捕获触发选择
4 uint16_t TIM_ICSelection; // 输入捕获选择
5 uint16_t TIM_ICPrescaler; // 输入捕获预分频器
6 uint16_t TIM_ICFilter; // 输入捕获滤波器
7 } TIM_ICInitTypeDef;

(1) TIM_OSSRState:运行模式下的关闭状态选择,它设定 BDTR 寄存器 OSSR 位的值。
(2) TIM_OSSIState:空闲模式下的关闭状态选择,它设定 BDTR 寄存器 OSSI 位的值。
(3) TIM_LOCKLevel:锁定级别配置, BDTR 寄存器 LOCK[1:0]位的值。
(4) TIM_DeadTime:配置死区发生器,定义死区持续时间,可选设置范围为 0x0 至 0xFF。
它设定 BDTR 寄存器 DTG[7:0]位的值。
(5) TIM_Break:断路输入功能选择,可选使能或禁止。它设定 BDTR 寄存器 BKE 位的值。
(6) TIM_BreakPolarity:断路输入通道 BRK 极性选择,可选高电平有效或低电平有效。它
设定 BDTR 寄存器 BKP 位的值。
(7) TIM_AutomaticOutput:自动输出使能,可选使能或禁止,它设定 BDTR 寄存器 AOE
位的值。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值