0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F4_TIM输出PWM波形 (可调频率、占空比)

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-24 11:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ⅰ、概述

上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。

提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比

void TIM2_CH2_PWM(uint32_tFreq, uint16_tDutycycle);

先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20);


关于本文的更多详情请往下看。

Ⅱ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

提供下载的软件工程是STM32F417的,但F4其他型号也适用(适用F4其他型号:关注微信,回复“修改型号”)。

STM32F4_TIM输出PWM波形(可调频率、占空比)实例:

https://yunpan.cn/cBYTWTgSmhbfe 访问密码 0025

STM32F4资料:

https://yunpan.cn/cR2pxqF5x2d9c 访问密码 53e7

Ⅲ、原理描述


上一篇文章讲述的就是上图中“计数”红色部分,也就是开始到结束的时间,该文章是讲述在这个计数的中间加一个值(比较值),当计数到这个比较值的时候就对输出的引脚进行反向,直到计满(一个周期)。循环下去。

通用TIM框图:


上面两图截取“STM32F4x5、x7参考手册”建议下载手册参看。

我上面说的“比较值”就是TIM框图中比较部分的“Capture/Comparex register”比较寄存器,这个值就会决定输出引脚的电平。

Ⅳ、源代码分析

笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为建立的工程,主要以库的方式来讲述。

1.RCC时钟


该函数位于bsp.c文件下面;

重点注意:

A.外设RCC时钟的配置要在其外设初始化的前面;

B.匹配对应时钟。

比如:RCC_APB2外设不要配置在RCC_APB1时钟里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);这样能编译通过,但这是错误的代码】

2.TIM比较输出配置


该函数位于timer.c文件下面;

TIM2时基单元配置是上一篇文章相关的内容,是及时的配置,在该文中也就是对一个周期的配置。

TIM2通道2:PWM1模式配置是对占空比的配置。

tim2_period =TIM2_COUNTER_CLOCK/Freq - 1;

tim2_pulse = (tim2_period + 1)*Dutycycle / 100;

函数开始是对周期和占空比的一个换算公式,也比较简单。

决定输出频率和占空比主要由这三个参数(TIM2_PRESCALER_VALUE、tim2_period、tim2_pulse)决定的。

以今天工程输出1KHz,20%来举例说明:

TIM2_PRESCALER_VALUE = 168M/2 / 42M - 1 = 1 (也就是2分频)

tim2_period = 42000 - 1

tim2_pulse = 8400

频率1KHz = 42M/ 4200

占空比20% = 8400/42000

Ⅴ、说明

关于笔者提供的软件工程实例,可关注微信,在会话框回复“关于工程”,有关于工程结构描述、型号修改等讲述。

以上总结仅供参考,若有不对之处,敬请谅解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5894

    浏览量

    226599
  • RCC
    RCC
    +关注

    关注

    0

    文章

    96

    浏览量

    28671
  • STM32F4
    +关注

    关注

    3

    文章

    204

    浏览量

    30308
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用MKE13Z测量输入的PWM占空比频率

    如何使用MKE13Z测量输入的PWM占空比频率?我改如何配置相关设置与在中断如何编写处理?
    发表于 04-21 06:12

    JL杰理AC696N开发板PWM波形生成与控制(1):频率占空比配置

    32-JL杰理AC696N开发板PWM波形生成与控制(1):频率占空比配置 引言 PWM调光、调速、甚至模拟发声,这些场景做嵌入式的天天见
    发表于 04-03 21:44

    国产MCU开发工具不输STM32Cube:教你玩转PY32F072高级定时器

    的PY32F072的TIM1工程 加入用户代码,开启PWM 编译工程 接好仿真器和逻辑分析仪,下载程序到开发板中 打开逻辑分析仪上位机,抓取波形。从界面上可以看出,芯片事件
    发表于 01-26 10:15

    LAT1189+Timer 结合 DMA 2D 通道实现不同波形输出应用笔记

    TIM 来定时切换输出正弦波或固定电平。使用 TIM 输出 PWM 产生正弦波形时,需要结合
    发表于 01-11 17:25 0次下载

    LAT1202+TIM DMA burst 输出变频 PWM 波形应用笔记

    客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有
    发表于 01-11 17:22 0次下载

    工业自动化精准控制:8路PWM模块(频率可调+RS485/CAN隔离通讯)

    PWM 脉冲输出模块是基于脉冲宽度调制技术的工业级信号发生设备,核心功能是生成高频、可编程、占空比可调的脉冲信号,通过控制脉冲占空比),实现
    的头像 发表于 01-04 16:44 504次阅读

    【RA-Eco-RA6M4开发板评测】PWM输出

    通道详情 PWM 输出就是对外输出脉宽(即占空比可调的方波信号, 信号频率由周期设定寄存器 G
    发表于 11-09 21:30

    103rc rt-studio TIM4 CH2输出PWM不正常怎么解决?

    : RT-Thread Studio 输出PWM详细教程 配置TIM4的CH2、CH4均无法正常输出pw
    发表于 09-16 08:20

    RTthread 4.1 stm32h7系列不支持pwm要怎么处理?

    (SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) if (htim->Instance == TIM9 || htim-&
    发表于 09-10 07:34

    stm32f103c8t6 PWM设置后不生效是怎么回事?

    参照这这篇文档 https://blog.csdn.net/2301_80066900/article/details/144024976 芯片f103c8t6,rt版本4.1.1, 定时器TIM
    发表于 09-10 07:26

    STM32F405RGT6 ADC2+TIM4触发+DMA(DMA2_Stream2_CH1)+DMA中断会死机,怎么解决?

    ;TIM_OCInitStructure);//给结构体设置默认初始值////配置TIM4 通道1占空比TIM_OCInitStructure.TIM_OCMode =
    发表于 08-04 07:16

    请问怎么用HRTIM输出可变占空比PWM?

    现在可以输出单路PWM,但可变占空比PWM不知道怎么配置。请大佬帮助!
    发表于 07-25 08:16

    【沁恒CH585开发板免费试用体验】PWM 输出

    PWM4PWM11)或6 路 16 位 PWM 输出PWM4PWM9),
    发表于 07-05 23:16

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 17次下载

    【RA-Eco-RA4M2开发板评测】RA-Eco-RA4M2 PWM输出

    ))。GPT 的计数器支持递增计数,递减计数和递增/递减计数。详细的通道名称如下表所示。 Figure ‑ GPT各个通道详情 PWM 输出就是对外输出脉宽(即占空比
    发表于 04-28 22:57