打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

Ⅰ、概述

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

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

void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle);

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


 

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

Ⅱ、实例工程下载

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

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

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

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

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

STM32F4资料:

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

Ⅲ、原理描述

 


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

通用TIM框图:


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

我上面说的“比较值”就是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

Ⅴ、说明

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
STM32 某些通道PWM无法输出波形解决
STM32 高级定时器-PWM简单使用
STM32 互补输出和死区插入
STM32通用定时器TIM2-5 PWM输出
九九的STM32笔记(二)TIM模块产生PWM (www.ourdev.cn)
stm32库函数学习篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服