历史上的今天

今天是:2024年09月05日(星期四)

正在发生

2019年09月05日 | STM32基础知识2-分享PWM输入模式捕捉4路PWM波形的周期和占空比

发布者:MysticalEssence 来源: eefocus关键字:STM32  输入模式捕捉  PWM波形  周期  占空比 手机看文章 扫描二维码
随时随地手机看文章

前几天分享过一个帖子,因为网速原因没有上传源码,看到有人回复我说实验不成功,那么好吧!这是我的错误,这次就将源码和我的心得体会分享出来,供大家下载测试和成长。我其实也是菜鸟一个,如果讲解的地方有啥不对,或是程序设计的不好,欢迎大家提出意见,让我们一起来学习进步。


PWM输入是输入捕获的一个特殊应用,输入捕获就是当连接到定时器的引脚上产生电平变化时对应的捕获装置会立即将当前计数值复制到另一个寄存器中。你可以开启捕获中断然后在中断处理函数中读出保存的计数值。


与输入捕获不同的是PWM输入模式会将同一个输入信号(TI1或TI2)连接到两个捕获装置(IC1和IC2)。这两个捕获装置一个捕获上升沿一个捕获下降沿。TI1FP1、TI2FP2它们中的一个被选择为触发输入且从模式控制器被配置为复位模式。


PWM输入捕获原理和时序图:



 

1)   当第一次上升沿到达时IC1捕获TIMx_CCR1的值为当前计数值4,IC2不会捕获TIMx_CCR2保持不变,计数器复位从0开始计数。


2) 第一个下降沿到达时IC2捕获TIMx_CCR2的值为2表示脉冲宽度。当上升再次到达时TIMx_CCR1的值就表示脉冲周期了(注意:第一次上升沿捕获的是个随机值)。


2) 原理也讲过了,那么下面就是实战了


一、操作步骤:

①将我的源码从论坛里面下载下来

②用杜邦线将PB7和PC6连接起来

③将编译完成的hex文件下载到开发板

④打开串口调试助手波特率选9600

⑤按下开发板的复位键,OK那么你就能看到串口的打印信息。

⑥用杜邦线依次将PB7和PC7、PB7和PC8、PB7和PC9连接起来,看串口打印不同占空比和相同周期的信息。


二、主程序讲解:

①TIM3_PWM_Init(1000-1,72-1);   //1KHz的周期

这个计算相信大部分人应该没有问题原子哥也做过详细的讲解那么我在重复一遍

CPU主频是72MHZ 这里将72MHZ主频72分频,那么就为1MHZ,所以计数器每加1那么就是代表增加1US,我这里设置的是999,因为0-999正好是1000us,所以我设置的周期是1000us 也就是1KHZ

②TIM_SetCompare1(TIM3,200);

这个函数式设置PWM通道的占空比,因为周期是1000us所以我这里设置的是20%的占空比,这个计算我就算教小白吧  占空比 = 200/1000 我这里设置的是通道1也就是PC6的占空比。下面三个我就不讲了。

③TIM4_PWMINPUT_INIT(0xffff,72-1);

这个函数是PWM输入模式初始化,这个我设置的最大计数是0xffff,因为是16位的计数器当然最大也只能这么大了,后面的参数是设置捕捉频率的,我这里还设置为1MHz,这样为了好看实验现象。

④While(1){}

主程序那三个打印语句我就不讲了,这个都不会,那么你就该补补了。


三、四路PWM程序讲解:

①void TIM3_PWM_Init(u16 arr,u16 psc)

这个函数我不讲很多因为原子哥已经将的很清楚了,我就将几个注意的地方和大家说一下,

GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); 这个函数式定时器的全映射,将

TIM3定时器的引脚映射到了PC6 C7 C8 C9上了。

四、PWM输入捕捉程序讲解:

①void TIM4_PWMINPUT_INIT(u16 arr,u16 psc)

这个函数我在源码里面已经注释的很清楚了,有几个点需要大家注意

②TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2);    

这个是选择有效的输入端 ,我这里TIM_TS_TI2FP2选择的PB7,注意:只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1 /TIMx_CH2信号。 

③TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Reset);  

这个是配置为PWM输入主从复位模式,就是每次输入端有效电平变化的时候定时器计数器就会硬件上置0


中断函数讲解

至于TIM4的中断函数很简单我就不多讲什么了,主要就是将捕捉到的周期和占空比记录下来。

 

注意:我提醒大家一下,我现在这个捕捉的周期的范围是1-65535us,如果你要捕捉的周期超出这个怎么办,我给大家一点建议①将捕获精度降低,也就是讲捕获频率降下来②这个就是用原子哥那种溢出计数的方法,但是这个有意思的是主从复位模式,每次复位也会产生更新中断,那么如果不加设置的话,可能这种方法是行不通的。但是我已经解决了,看手册介绍,解决的。哈哈,大家有兴趣的话,可以去试着解决,自己做的饭才是最香的。实在是想用第二种方法,但是又解决不了的,就可以回复,但是我想着还是自己解决的好。

说了这么多,有的人可能会提出疑问?那你给我们讲这些理论,你自己到底实现了没有?俗话说的好,有图有真相,没图说啥?那么好的上真相,不过是有误差的,但是我认为这个误差在接受范围内。



PB7和PC6连接的串口输出情况:实际周期1KHz占空比20% 

PB7和PC7连接的串口输出情况:实际周期1KHz占空比40% 
PB7和PC8连接的串口输出情况:实际周期1KHz占空比60% 


关键字:STM32  输入模式捕捉  PWM波形  周期  占空比 引用地址:STM32基础知识2-分享PWM输入模式捕捉4路PWM波形的周期和占空比

上一篇:STM32基础知识4-va_list原理及用法
下一篇:STM32基础知识1-stm32PWM输入捕获模式详解

推荐阅读

无论从哪个方面来讲,整个空调行业实在是找不到一个值得充分乐观的因素。很多数据统计机构在8月初就给出了2018冷年的市场数据,高达15%以上的增长幅度,与笔者所观察到的、与大量商家切身所体会到的仿佛不在同一个维度空间内。携此增势的空调市场在进入2019冷年之后,也便进入了一个前所未有的犹如是滚石上山般的发展通道之中。  巨量库存简直就是中国空...
关于外部中断前言:1:Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此,STM32吧指定中断优先级的寄存器为减少到4位,即AIRCR的高四位,于是对四位进行分组: 组别 分配情况 第0组 0:4 无抢先式优先级,16 个子优先级 第1组 1:3 2 个抢先式优先级,8 个子优先...
第三代半导体外延代工服务商南京百识电子科技有限公司(以下简称“百识电子”)日前宣布超募完成Pre-A轮融资,融资总额过亿元人民币。本轮融资仍由和利资本领投,台达电等知名投资方跟投。融资主要将用于建厂及生产设备购入。由于第三代半导体材料特性带来的终端系统性能和成本优势,终端市场借由行动装置电源适配器、5G基站PA、无人机微波应用、动车OBC及...
继8月11日奥迪发布Skysphere概念车之后,奥迪Grandsphere概念车于9月3日凌晨(北京时间)正式首发。该车是奥迪用于展示电动豪华未来愿景的三款“Sphere”系列概念车中的第二款,将在下周开幕的2021 IAA展会上正式亮相。奥迪Grandsphere概念车的目标,是打造“未来头等舱”,并给予前排驾乘者更加自由的空间。奥迪 Grandsphere ( 参数 | 询价 ) 概念车的车...

史海拾趣

问答坊 | AI 解惑

温度检测 DS18B20 ??/

这个程序调了很久啦,不知道为啥读出来的L_temp 和H_temp都是FF、FF 要疯啦  ,呜呜呜..... 有哪位朋友做过相关的东西,帮我看看吧 ,不胜感激啊 #include <c8051f410.h>    //SFRdeclarations #include <intrins.h ...…

查看全部问答∨

ras server 的问题

我在WinCE上建立了一个Ras 服务器,通过电话线及Moden与PC 进行链接。在PC 拨号,能够到验证用户名密码,但是始终不能连接上,并出现628错误。现在更是一拨就断,在PC端的日志查看了一下,发现是没有载波。在WinCE我是通过RasIOControl()建立ras se ...…

查看全部问答∨

WINCE6.0显示驱动移植

把WINCE420下的显示驱动移植到WINCE600下。600之前的版本是把图形、窗口、事件子系统编译为GWES.exe,而到了600,却编译成GWES.dll,我编译是出现这样的错误: BUILD: [01:0000002555:PROGC ] Linking C:\\WINCE600\\platform\\XSBASE255\\target\ ...…

查看全部问答∨

6410 spi的始终怎么设置

我有个A/D转换器,转换速率为75~200ksps, 请问6410的spi时钟要怎么设置呢?如果设置得太快,输入/输出会出现错误呢?…

查看全部问答∨

MAX16832的调光应用

    MAX16832是一款很简单的HD LED驱动芯片,简单的8脚SOIC封装,外围电路就是几个十分常见的分立元件,不需要外接MOSFET管。电流取样电阻只要买1/4W普通碳膜电阻,1分钱左右,不需要精密电阻。     MAX16832工作在 ...…

查看全部问答∨

深度解析LED术语流明及LED寿命的秘密

replyreload += \',\' + 791625;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答∨

win7系统下AVR下载器驱动的安装

各位大虾帮帮忙啊,我的电脑是戴尔的,win7系统,今天装usb下载器的驱动,一直装不了,有知道是为什么的么?我在这里多谢各位了!!!!!…

查看全部问答∨

关于桥式振荡电路的问题

最近在做一个小玩意,就是模拟方波的合成过程。我想用桥式震荡电路产生正弦波然后再进行处理和叠加用来合成方波。 于是我用了下面的电路 现在波形也有了,但是频率受温度变化比较大,我用手触摸电容周期就变化,有没有办法加反馈让频率稳定呢 ...…

查看全部问答∨

TI发的MSP430开发板,和这个一比,我的LaunchPad简直弱爆了!

过两天去南京参加TI杯,TI给发了块开发板,MSP430F5529的,板子的型号叫EXP430F5529A...... 上图!!上图!! 开箱靓照 在实验室拍张清楚些的 研究了一下液晶HAL函数库 写了一个动态画曲线的小程序 唯一的缺憾是液晶背光电源木有给焊... ...…

查看全部问答∨

零漂移可编程增益仪表放大器 PGA281 样片

零漂移可编程增益仪表放大器 PGA281 PGA281 借助这款下一代的零漂移可编程增益仪表放大器,实现了新一级的精度和创新。 PGA281 的零漂移架构针对精度、过热漂移和长期稳定性制定了新标准。PGA281 的主要特性包括:从衰减 (1/8V/V) 到 128V/V 的 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved