云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > stm32 PWM输入捕获

stm32 PWM输入捕获

  • 62 次阅读
  • 3 次下载
  • 2025/6/2 0:09:17

脉宽低于 8 个采样周期的脉冲信号,从而达到滤波的效果。这里,我们不做滤波处理,所以设 置 IC1F[3:0]=0000,只要采集到上升沿,就触发捕获。 TIMx的CHx 在输入捕获模式下就变味TIx了...

刚刚看了一下手册,好像有点了解,不知道对不对。

CCx是指4各通道当中的一个通道,而ICx对应的这个输入通道,TI1、TI2、TI3、TI4,是指定时器的4个通道的引脚(比如:TIM4_REMAP=0,没有重映像(TIM4_CH1/PB6,TIM4_CH2/PB7,TIM4_CH3/PB8,TIM4_CH4/PB9))。

//=========================================================================

定时器从0开始计数,计数到TIM_Period后,重新归零再计数。

捕获只是把发生捕获时刻的计数器当前值拷贝下来,你的IC2Value就是这个数值。

如果配置了 发生捕获时复位计数器,则计数器没有计数到TIM_Period时也被归零并重新计数。

如果你配置比较小的TIM_Period数值,则可能在还没有发生捕获时,计数器就被归零,所以你要在软件中记录下计数器被归零的次数。

当计数器的时钟频率为F时,计数器每计数一次表示1/F的时间,因此从捕获寄存器中读出的数值表示了一个时间。如果配置了发生捕获时复位计数器,则这个时间恰好就是要捕获信号的周期。

从上面原理可以看出,TIM_Period的数值与捕获的精度没有关系。 发生捕获时复位计数器》》》》这个如何实现?通过TI1-->TI1F_ED

//======================================================================================================= TIM通用定时器(二):输出比较——翻转模式

一、基本概念理解

1. 输出比较:打开一个TIMx计数器,再打开TIMx的一路或几路输出比较器(共4路),都配置好以后,计数器开始计数,当计数器里的值和比较寄存器里的值相等时,产生输出比较中断,在中断中将计数器中的值读出,与翻转周期相加再写道比较寄存器中,使得和下一个事件有相同的翻转周期。

2. 举例说明:例如TIM时钟频率设置为12MHZ,输出比较寄存器中的自装载值为600(高电平或低电平计数值),则输出的PWM频率为

frequency = 12MHZ/(600*2)=10KHZ。

二、程序设计与分析

1. TIM计数器和输出比较器的配置

uint16_t capture = 0;

extern __IO uint16_t CCR1_Val; extern __IO uint16_t CCR2_Val; extern __IO uint16_t CCR3_Val; extern __IO uint16_t CCR4_Val;

void TIM_Configuration(void) {

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = 65535; //这里必须是65535 TIM_TimeBaseStructure.TIM_Prescaler = 2; //3分频 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化TIM3

/* Output Compare Toggle Mode configuration: Channel1 */

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //输出比较翻转模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能通道1 TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //待装入输出比较寄存器中的脉冲值

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出为正逻辑 TIM_OC1Init(TIM3, &TIM_OCInitStructure); //写入配置

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable); //使能或者失能TIMx在CCR1上的预装载寄存器

/* Output Compare Toggle Mode configuration: Channel2 */

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR2_Val;

TIM_OC2Init(TIM3, &TIM_OCInitStructure);

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable);

/* Output Compare Toggle Mode configuration: Channel3 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR3_Val;

TIM_OC3Init(TIM3, &TIM_OCInitStructure);

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);

/* Output Compare Toggle Mode configuration: Channel4 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR4_Val;

TIM_OC4Init(TIM3, &TIM_OCInitStructure);

TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Disable);

/* TIM enable counter */

TIM_Cmd(TIM3, ENABLE); //开启计数器

/* TIM IT enable */ //TIM1中断源设置,开启相应通道的捕捉比较中断 TIM_ITConfig(TIM3, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE); }

2. 时钟配置

3. GPIO配置

4. 中断服务程序

void TIM3_IRQHandler(void) {

/* TIM3_CH1 toggling with frequency = 183.1 Hz */

if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) 与否 {

TIM_ClearITPendingBit(TIM3, TIM_IT_CC1 );

capture = TIM_GetCapture1(TIM3); 的计数值

TIM_SetCompare1(TIM3, capture + CCR1_Val ); 输出比较寄存器中,以保证下一个TIM事

冲数 }

/* TIM3_CH2 toggling with frequency = 366.2 Hz */ if (TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET) {

TIM_ClearITPendingBit(TIM3, TIM_IT_CC2); capture = TIM_GetCapture2(TIM3);

TIM_SetCompare2(TIM3, capture + CCR2_Val); }

/* TIM3_CH3 toggling with frequency = 732.4 Hz */

//检查指定的TIM中断发生 //清除TIMx的中断待处理位 //获得输入捕获值,即计数器中将计数值加上翻转的脉冲值写入 //件也是相同的脉 //

搜索更多关于: stm32 PWM输入捕获 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

脉宽低于 8 个采样周期的脉冲信号,从而达到滤波的效果。这里,我们不做滤波处理,所以设 置 IC1F[3:0]=0000,只要采集到上升沿,就触发捕获。 TIMx的CHx 在输入捕获模式下就变味TIx了... 刚刚看了一下手册,好像有点了解,不知道对不对。 CCx是指4各通道当中的一个通道,而ICx对应的这个输入通道,TI1、TI2、TI3、TI4,是指定时器的4个通道的引脚(比如:TIM4_REMAP=0,没有重映像(TIM4_CH1/PB6,TIM4_CH2/PB7,TIM4_CH3/PB8,TIM4_CH4/PB9))。 //========================================================================= 定时器从0开始计数,计数到TIM_Period

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com