stm32 PWM输入捕获
stm32 定时器pwm输入捕获
输入捕捉的功能是记录下要捕捉的边沿出现的时刻,如果你仅仅捕捉下降沿,那么两次捕捉的差表示输入信号的周期,即两次下降沿之间的时间。
如果要测量低电平的宽度,你应该在捕捉到下降沿的中断处理中把捕捉边沿改变为上升沿,然后把两次捕捉的数值相减就得到了需要测量的低电平宽度。
如果要的测量低电平太窄,中断中来不及改变捕捉方向时,或不想在中断中改变捕捉方向,则需要使用PWM输入模式,或使用两个TIMx通道,一个通道捕捉下降沿,另一个通道捕捉上升沿,然后对两次捕捉的数值相减。PWM输入模式也是需要用到两个通道。使用两个通道时,最好使用通道1和通道2,或通道3和通道4,这样上述功能只需要使用一个I/O管脚,详细请看STM32技术参考手册中的TIMx框图。 //0----------------------- 一、概念理解
PWM输入捕获模式是输入捕获模式的特例,自己理解如下
1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。 2. 同一个TIx输入映射了两个ICx信号。 3. 这两个ICx信号分别在相反的极性边沿有效。
4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。
5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。
6. 同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个数m,即(即高电平的周期或低电平的周期)
7. 由此可以计算出PWM的时钟周期和占空比了 frequency=f(TIM时钟频率)/n。 duty cycle=(高电平计数个数/n), 若m为高电平计数个数,则duty cycle=m/n 若m为低电平计数个数,则duty cycle=(n-m)/n
注:因为计数器为16位,所以一个周期最多计数65535个,所以测得的最小频率=TIM时钟频率/65535。 二、程序设计与分析
1. 程序概述:选择TIM3作为PWM输入捕获。IC2设置为上升沿,并设置为有效的触发输入信号。所以IC2的捕获寄存器捕获PWM周期,
IC1的捕获寄存器捕获PWM的高电平周期。 2.程序代码如下:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //时钟配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_7; //GPIO配置 PIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel= TIM3_IRQn; //NVIC配置 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1; NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE; NVIC_Init(&NVIC_InitStructure);
TIM_ICInitStructure.TIM_Channel =TIM_Channel_2; //通道选择 TIM_ICInitStructure.TIM_ICPolarity= TIM_ICPolarity_Rising; //上升沿触发
TIM_ICInitStructure.TIM_ICSelection= TIM_ICSelection_DirectTI; //管脚与寄存器对应关系 TIM_ICInitStructure.TIM_ICPrescaler= TIM_ICPSC_DIV1; //输入预分频。意思是控制在多少个输入周期做一次捕获,如果
//输入的信号频率没有变,测得的周期也不会变。比如选择4分频,则每四个输入周期才做一次捕获,这样在输入信号变化不频繁的情况下, //可以减少软件被不断中断的次数。
TIM_ICInitStructure.TIM_ICFilter= 0x0; //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF
TIM_PWMIConfig(TIM3,&TIM_ICInitStructure); //根据参数配置TIM外设信息 TIM_SelectInputTrigger(TIM3,TIM_TS_TI2FP2); //选择IC2为始终触发源
TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);//TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更新事件
TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable); //启动定时器的被动触发
TIM_Cmd(TIM3,ENABLE); //启动TIM2 TIM_ITConfig(TIM3,TIM_IT_CC2, ENABLE); //打开中断 中断处理函数
voidTIM3_IRQHandler(void) {
TIM_ClearITPendingBit(TIM3,TIM_IT_CC2); //清楚TIM的中断待处理位
IC2Value =TIM_GetCapture2(TIM3); //读取IC2捕获寄存器的值,即为PWM周期的计数值 if (IC2Value != 0) {
DutyCycle= (TIM_GetCapture1(TIM3) * 100) / IC2Value; //读取IC1捕获寄存器的值,并计算占空比
Frequency= 72000000 / IC2Value; //计算PWM频率。 } else {
DutyCycle= 0; Frequency= 0; } }
注(一):若想改变测量的PWM频率范围,可将TIM时钟频率做分频处理 TIM_TimeBaseStructure.TIM_Period= 0xFFFF; //周期0~FFFF
TIM_TimeBaseStructure.TIM_Prescaler = 5; //时钟分频,分频数为5+1即6分频 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;//模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//基本初始化
注(二):定时器TIM的倍频器X1或X2。在APB分频为1时,倍频值为1,否则为2
、、
---------------------------------------------------------------------------------------=============================================
再来看看捕获/比较模式寄存器 1:TIMx_CCMR1,这个寄存器在输入捕获的时候,非常有 用,有必要重新介绍,该寄存器的各位描述如图 15.1.1 所示: 图 15.1.1 TIMx_CCMR1 寄存器各位描述
当在输入捕获模式下使用的时候,对应图 15.1.1 的第二行描述,从图中可以看出,
TIMx_CCMR1 明显是针对 2 个通道的配置,低八位[7:0]用于捕获/比较通道 1 的控制,而高八
位[15:8]则用于捕获/比较通道 2 的控制,因为 TIMx 还有 CCMR2 这个寄存器,所以可以知道
CCMR2 是用来控制通道 3 和通道 4(详见《STM32 参考手册》290 页,14.4.8 节) 。
//==============================================================================================================
其中 CC1S[1:0],这两个位用于 CCR1 的通道配置,这里我们设置 IC1S[1:0]=01,也就是配 置 IC1 映射在 TI1 上(关于 IC1,TI1 不明白的,可以看《STM32 参考手册》14.2 节的图 98- 通用定时器框图) ,即 CC1 对应 TIMx_CH1。
//=========================================================================================================================
输入捕获 1 预分频器 IC1PSC[1:0],这个 …… 此处隐藏:3466字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




