上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20);
关于本文的更多详情请往下看。
笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。 提供下载的软件工程是STM32F417的,但F4其他型号也适用(适用F4其他型号:关注微信,回复“修改型号”)。 STM32F4_TIM输出PWM波形(可调频率、占空比)实例: https:///cBYTWTgSmhbfe 访问密码 0025 STM32F4资料: https:///cR2pxqF5x2d9c 访问密码 53e7
通用TIM框图:
我上面说的“比较值”就是TIM框图中比较部分的“Capture/Comparex register”比较寄存器,这个值就会决定输出引脚的电平。
笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为建立的工程,主要以库的方式来讲述。 1.RCC时钟
重点注意: A.外设RCC时钟的配置要在其外设初始化的前面; B.匹配对应时钟。 比如:RCC_APB2外设不要配置在RCC_APB1时钟里面 【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);这样能编译通过,但这是错误的代码】 2.TIM比较输出配置
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
|
|
来自: 西北望msm66g9f > 《编程》