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
    +关注

    关注

    116

    文章

    5890

    浏览量

    226493
  • STM32
    +关注

    关注

    2312

    文章

    11189

    浏览量

    374514
  • Tim
    Tim
    +关注

    关注

    0

    文章

    85

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    国产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 芯片拥有 TIM1/
    发表于 01-11 17:22 0次下载

    STM32G474 HRTIME PWM 丢波问题分析与解决

    STM32G474 中包含了针对数字电源应用的高精度定时器(HRTIMER),客户在应用该定时器产生 PWM 时,发现 PWM输出出现了“丢波”现象,本文对该问题进行分析并给出解决
    发表于 01-04 13:47 0次下载

    使用rt_thread无法输出PWM怎么解决?

    背景: 实际无法输出PWM波 但是打印报文PWM脉冲 脉宽的变化和线程程序都是正常执行的 使用的RTT 4.03版本; 单片机为STM32F103VET6;
    发表于 10-14 07:05

    按照官方文档在ART-PI上开启PWM,但是串口输出找不到设备,怎么解决?

    大佬们,我在cubemx里打开了TIM3及其通道3, rtthread-setting,里打开了PWM,硬件On-chip Peripheral里添加了TIM3,并且使能了他
    发表于 09-17 06:27

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

    : RT-Thread Studio 输出PWM详细教程 配置TIM4的CH2、CH4均无法正常输出pwm,以下是配置过程 rtthrea
    发表于 09-16 08:20

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

    找问题找了很久,搜到了一个4.0.2版本pwm 没有支持STM32H7系列的帖子 现在是4.1 还是没有,求助大佬帮改个代码 报错信息 驱动程序里没有STM32H7的 static
    发表于 09-10 07:34

    STM32G474RBT3 HRTIME 与 TIM 相位差如何消除?

    使用STM32G474RB芯片时钟配置是170M,HRTIME 和 TIM4 都设置为相同频率 2400Hz, 但它们的输出存在相位差,请问有什么方法可以消除这个相位差?
    发表于 07-23 06:54

    第二十二章 TIM——高级定时器

    本章介绍了W55MH32的高级定时器(TIM1和TIM8),其含时基单元等,具备输入捕获、输出比较、PWM生成等功能,还支持互补输出、死区插
    的头像 发表于 06-20 13:58 1845次阅读
    第二十二章 <b class='flag-5'>TIM</b>——高级定时器

    第二十一章 TIM——通用定时器

    本篇文章介绍了W55MH32的通用定时器(TIM2~TIM5等),其由16位自动装载计数器和可编程预分频器构成,具备输入捕获、输出比较、PWM生成等功能,还介绍了时基单元、计数器模式等
    的头像 发表于 06-20 13:57 1725次阅读
    第二十一章 <b class='flag-5'>TIM</b>——通用定时器

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM呢?

    那不是一个定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出tim1_ch2,那么我消隐源可以选tim4_oc3?是不是tim
    发表于 06-09 07:12

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM呀?

    那不是一个定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出tim1_ch2,那么我消隐源可以选tim4_oc3?是不是tim
    发表于 06-05 06:10

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM呢?

    那不是一个定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出tim1_ch2,那么我消隐源可以选tim4_oc3?是不是tim
    发表于 05-14 08:14

    搞SK6812灯珠的控制,选择了PWM+DMA的方式,遇到的问题求解决

    最近在搞SK6812灯珠的控制,选择了PWM+DMA的方式,在执行HAL_TIM_PWM_Start_DMA的时候能看到长度和数据都是我配置的值: 但是输出波形就是不对: DMA
    发表于 04-23 07:44