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

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

3天内不再提示

STM32_ TIM输出PWM波形

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 11:09 次阅读

前言

今天讲解“STM32F103 TIM输出PWM波形”,提供的软件工程支持最大输出18MHz的PWM波形,函数接口只有两个参数:频率Freq和 占空比Dutycycle。

定时器的功能很强大,今天讲解的PWM属于定时器中比较输出的功能,难度算一般吧(懂了的人觉得很简单),因为使用了比较的功能。

PWM在实际应用中特别广泛,可能在校的学生不是很了解,但对于很多工作的人来说PWM的应用基本上遍布整个电子化的时代。对于电子相关专业的学生来说,信号发生器都不陌生,信号发生器就是PWM典型的应用。

本文特点:1.提供讲解的软件工程; 2.图片代码比直接贴出源代码容易阅读。

本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。

下载

提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSftz7gAJFujm访问密码 5132

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2访问密码 ca90

内容讲解

工程概要说明: 今天配置定时器2通道1输出PWM波形(PA0口输出1KHz、20%占空比),可根据情况修改其他TIM、其他通道。

注意:最大频率和占空比有一定关系。

占空比等于1%时, 最大频率为360KHz

占空比等于50%时,最大频率为18MHz

关于“STM32F103TIM输出PWM波形”我把重要的几点在下面分别讲述:

一、RCC时钟配置

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

使能RCC时钟:RCC_APB2Periph_AFIO和 RCC_APB1Periph_TIM2;

这两个时钟是今天工程中重要的。

二、PWM输出引脚

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

配置PA0为PWM输出引脚(这里的引脚需要和定时器的通道对应,否则没有波形输出),详情请看数据手册关于引脚的说明。

三、输出PWM配置


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

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

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

TIM2_PRESCALER_VALUE = 72M / 36M - 1 = 1

tim2_period = 36000 - 1

tim2_pulse = 7200

这三个怎么得来的请看代码,今天工程输出的波形如下图:

四、今天的重点提示

A.细心研究过代码的人会发现TIM_OCMode_PWM1,还有一个TIM_OCMode_PWM2,这两个的区别是什么呢? 答案是:输出的极性(也就是方向)不一样。

这时候又有人问:那下面的输出极性TIM_OCPolarity_High与上面的关系是什么呢?答案是:这两个参数配合一起输出决定PWM波形的极性。

也就是说不同参数可以达到一样的效果,下图参数的配置同样可以输出一样的波形。

感兴趣的朋友可以试着修改测试一下效果。

B.今天的工程可以设置周期性中断(也就是1ms中断一次),感兴趣的朋友可以试着写一下。使用串口打印测试的话,尽量频率低一点,不然串口响应不过来。

说明

今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。

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

    关注

    114

    文章

    4901

    浏览量

    209929
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348794
  • Tim
    Tim
    +关注

    关注

    0

    文章

    76

    浏览量

    17711
收藏 人收藏

    评论

    相关推荐

    STM32F407 PWM输出时一次中断未执行完下一次中断就进入,导致PWM波形输出紊乱怎么解决?

    为1KHz,波形不错乱,大于10KHz,错乱现象逐渐严重。 现在我的中断处理函数运行时间大概在1us左右,因此我觉得对于1MHz的PWM输出是有问题的。所以向各位STM32的前辈请教一
    发表于 04-18 07:45

    stm32f103 TIM2 PWM为什么没有输出

    以前用TIM8输出2路PWM正常,现在改为TIM2却没有输出,对照datasheet寄存器详细查了遍,没看出问题。先贴出了主要代码,哪位能看
    发表于 04-11 07:07

    STM32F429的TIM4定时器输出四路PWM,为什么第四路PB9一直输出低电平?

    芯片型号:STM32F429ZGT6 用TIM4输出4路PWM,用的是PB6PB7PB8PB9程序是一样的配置,前三路都有PWM
    发表于 04-03 07:43

    STM32U575 pwm和DMA输出波形少一段怎么处理?

    这是我的 DMA 的配置 这是我的PWM配置 上面的波形是F103输出波形。 下面的波形是U575
    发表于 03-13 06:10

    stm32f303RE PWM输出波形变形的原因?

    我使用stm32 nucleo开发板,使用TIM3 CH4输出PWM方波,发现波形变形,整个工程只有这个
    发表于 03-08 08:12

    STM32CubeIDE下配置STM32F103输出带死区的互补PWM

    STM32F103的TIM1和TIM8是高级定时器,可以产生嵌入死区时间的互补PWM波,使用STM32CubeIDE完成相关配置,可以直接生
    的头像 发表于 11-01 09:41 1922次阅读
    <b class='flag-5'>STM32</b>CubeIDE下配置<b class='flag-5'>STM32</b>F103<b class='flag-5'>输出</b>带死区的互补<b class='flag-5'>PWM</b>波

    STM32PWM波形输出配置的大神总结

    STM32PWM波形输出配置的大神总结
    的头像 发表于 10-24 16:00 2285次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>PWM</b><b class='flag-5'>波形</b><b class='flag-5'>输出</b>配置的大神总结

    STM32H7芯片系列中定时器同步启动并输出PWM波形的实现方法

    本文主要研究了STM32H7芯片系列中定时器同步启动并输出PWM波形的实现方法。
    的头像 发表于 10-24 14:56 694次阅读
    <b class='flag-5'>STM32</b>H7芯片系列中定时器同步启动并<b class='flag-5'>输出</b><b class='flag-5'>PWM</b><b class='flag-5'>波形</b>的实现方法

    应用笔记 | STM32使用DMA产生PWM波形异常分析

    关键字:回调函数,HAL库   目录预览 1.前言 2.实验 3.使用实例 4.小结 0 1 前言 有客户反馈,使用STM32F4的TIM2结合DMA,产生的PWM波形不符合预期,但是
    的头像 发表于 09-22 17:05 1760次阅读
    应用笔记 | <b class='flag-5'>STM32</b>使用DMA产生<b class='flag-5'>PWM</b>时<b class='flag-5'>波形</b>异常分析

    TIM DMA burst输出变频PWM波形

    电子发烧友网站提供《TIM DMA burst输出变频PWM波形.pdf》资料免费下载
    发表于 09-19 17:06 2次下载
    <b class='flag-5'>TIM</b> DMA burst<b class='flag-5'>输出</b>变频<b class='flag-5'>PWM</b><b class='flag-5'>波形</b>

    为什么STM32F401cdu用HAL_TIM_DMABurst_WriteStart无法输出PWM波形

    的定时器中断方式、用HAL_TIM_PWM_Start_DMA都是可以输出波形的。 考虑HAL_TIM_DMABurst_WriteStart的方式,可以随时发既定数量的脉冲,改变频率
    发表于 08-07 12:26

    TIMPWM输出模式写一个步进电机的Stepper库函数

    这是之前写平衡小车时自己用TIMPWM输出模式写了一个步进电机的Stepper库函数。
    的头像 发表于 07-24 14:36 1685次阅读
    用<b class='flag-5'>TIM</b>的<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>模式写一个步进电机的Stepper库函数

    基于STM32芯片三路互补PWM输出的设计实现

    目的:使用Stm32高级定时器TIM1。配置中心对齐模式输出三路互补PWM
    的头像 发表于 07-21 16:26 5156次阅读
    基于<b class='flag-5'>STM32</b>芯片三路互补<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>的设计实现

    STM32单片机学习笔记(6):PWM波形产生

    利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第六部分针对STM32单片机内置TIM模块的
    发表于 07-19 15:34 1377次阅读
    <b class='flag-5'>STM32</b>单片机学习笔记(6):<b class='flag-5'>PWM</b><b class='flag-5'>波形</b>产生

    STM32F407 基本定时器配置输出PWM方波

    介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。
    的头像 发表于 07-06 14:33 3214次阅读
    <b class='flag-5'>STM32</b>F407 基本定时器配置<b class='flag-5'>输出</b><b class='flag-5'>PWM</b>方波