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实验的主要内容,如果未能解决你的问题,请参考以下文章

STM32 通用定时输出PWM

STM32之呼吸灯实验

STM32CubeMX-定时器产生PWM驱动舵机

正点原子STM32(基于HAL库)3

基于霸道秉火的STM32F103ZET6嵌入式开发之------基于定时TIM3的PWM实验

stm32通用定时器pwm输入模式