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

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

3天内不再提示

STM32F4_TIM输出PWM波形

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

扫码添加小助手

加入工程师交流群

Ⅰ、概述

上一篇文章关于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

    文章

    5847

    浏览量

    223737
  • RCC
    RCC
    +关注

    关注

    0

    文章

    95

    浏览量

    28294
  • Tim
    Tim
    +关注

    关注

    0

    文章

    84

    浏览量

    18887
  • STM32F4
    +关注

    关注

    3

    文章

    204

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    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

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

    ADC2_EXIT_TIM4_CC4_Trig_DMAConfiguration(unsigned short F_Prescaler,unsigned int F_ARR )//ADC_T
    发表于 08-04 07:16

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

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

    STM32F4标准外设库资料

    stm32f4xx.h,标准外设库
    发表于 06-08 09:49 5次下载

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

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

    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

    关于ML4842输出PWM波形失真问题?

    如示波器波形所示,ML4842芯片11脚PWM输出波形失真是什么原因造成,原理图上的PWM输出
    发表于 04-09 14:52

    求助大佬我使用STM32F030F4P6 的PA3引脚输出PWM波形

    查看数据手册复用是AF0,TIM15_CH2(2),但是发现没有办法输出PWM波形实现呼吸灯效果 实际尝试PA3引脚让LED灯亮灭闪烁是可以实现的,但是却没有办法
    发表于 03-20 23:13

    STM32F103 TIM1_CH3N输出PWM波形为什么会多出一个边沿?

    红色为TIM1_CH3N,绿色为TIM1_CH3,为什么TIM1_CH3N输出PWM波形会多
    发表于 03-13 06:58

    stm32同一个定时器不同的通道,可以不同时的输出pwm波形吗?

    请问,stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗?比如tim1的ch1输出
    发表于 03-07 08:20

    如何使用TIM2的更新事件触发TIM1的PWM DMA?

    3个表格去实现3路PWM的占空比控制,且每路相位相差120度,然后我使用TIM2的更新事件去触发TIM1的PWM DMA更新,也就是比如我设置40usTIM2就会有一个更新事件,然后
    发表于 03-07 07:34

    STM32F103C8T6 PA2无PWM输出怎么解决?

    STM32F103C8T6最小系统PA0/PA1/PA2/PA3为PWM输出控制舵机,配置相同,PA2始终无输出,PA0/PA1/PA3输出
    发表于 02-27 08:13

    HC32F334的HRTIM和PLA,能输出频率连续可调的PWM波形吗?

    HC32F334的HRTIM和PLA,能输出频率连续可调的PWM波形吗?
    发表于 02-27 06:28