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%,下载到开发板可以观察到小灯亮度很微弱
在这里插入图片描述

文章中有错误的请指出来,我们一起进步

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯大师~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值