STM32LL库系列教程——通用定时器PWM实验
Posted 点灯大帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32LL库系列教程——通用定时器PWM实验相关的知识,希望对你有一定的参考价值。
开发板:野火霸道V1
定时器:TIM3
输出通道:CH3
GPIO:PB0
STM32LL库系列教程——LL库工程配置流程
STM32LL库系列教程【一】——安装CubeMx软件
STM32LL库系列教程【二】——点亮LED小灯
STM32LL库系列教程【三】——USART中断实验
STM32LL库系列教程【四】——ADC单通道采集
STM32LL库系列教程【五】——DMA实现ADC单通道采集
STM32LL库系列教程【六】——通用定时器定时实验
STM32LL库系列教程【七】——通用定时器PWM实验
STM32LL库系列教程【八】——通用定时器输入捕获实验
STM32LL库系列教程【九】——SPI通信实验
STM32LL库系列教程【十】——IIC通信实验
搭建工程
1、配置工程属性
2、确认时钟源
3、配置系统时钟
4、配置定时器
这里选择的定时器为TIM3, 输出PWM通道:CH3
设置输出PWM频率为:1KHz
计算公式:F = 72M / ((ARR+1)*(PSC+1))
因此我们可以设置PSC=(720-1),ARR=(100-1)
PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。
在STM32通用定时器输出PWM时有两种模式,设置为模式2,有效电平为高电平
大概思路就是:当定时器计数小于我们设置的CCR的值时,此通道将输出低电平,反之输出高电平
5、生成代码
配置好生成工程名与路径后,点击 GENERATE CODE 会在设定的路径成功生成代码,选择打开工程
代码编写
CubeMx生成的代码有些寄存器没有使能,我们不能直接使用,需要我们自己使能相关寄存器
1、配置TIM3相关寄存器
LL_TIM_EnableAllOutputs(TIM3);
LL_TIM_EnableCounter(TIM3); //使能计数
LL_TIM_CC_EnableChannel(TIM3,LL_TIM_CHANNEL_CH3); //使能输出比较通道
2、更改占空比
计算公式:Duty_Cycle = ((TIMx->CCRx) / ARR)*100
函数 LL_TIM_OC_SetCompareCH3() 是用来更改通道3的CCR值,若某项目中用的是其他通道,只需将函数后面的3改成对应的通道数即可
/**
* @brief Set compare value for output channel 3 (TIMx_CCR3).
* @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
* output channel is supported by a timer instance.
* @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3
* @param TIMx Timer instance
* @param CompareValue between Min_Data=0 and Max_Data=65535
* @retval None
*/
__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue)
WRITE_REG(TIMx->CCR3, CompareValue);
3、下载程序
在main.c文件中,更改占空比为10%,下载到开发板可以观察到小灯亮度很微弱
文章中有错误的请指出来,我们一起进步
以上是关于STM32LL库系列教程——通用定时器PWM实验的主要内容,如果未能解决你的问题,请参考以下文章