STM32 CubeMX学习:4. PWM控制LED亮度 您所在的位置:网站首页 脉冲led STM32 CubeMX学习:4. PWM控制LED亮度

STM32 CubeMX学习:4. PWM控制LED亮度

2024-07-02 23:04| 来源: 网络整理| 查看: 265

STM32 CubeMX学习:4. PWM控制LED亮度 系列文章目录 前期的准备点亮 LED闪烁 LED定时器闪烁LEDPWM控制LED亮度常见的PWM设备按键的外部中断ADC模数转换串口收发串口打印遥控器数据未完待续…

文章目录 STM32 CubeMX学习:4. PWM控制LED亮度1 基础知识1.1 PWM基本知识1.2 PWM工作原理 2. 程序的学习2.1 PWM在CubeMX的配置2.2 代码讲解 总结

1 基础知识 1.1 PWM基本知识

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 PWM等效 例如上图中,矩形脉冲是stm32输出的数字信号,当这个信号接到外设上时,效果可以等效为这个正弦波。

一个周期内高电平的持续时间占总周期的比例成为占空比,通过修改占空比,可以改变输出的等效模拟电压。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。此外PWM输出的频率也会影响最终的PWM输出效果,PWM输出的频率越高,最终输出的“连续性”越好,越接近模拟信号的效果,频率低则会增强离散性,最终的输出效果会有比较强的“突变”感。

脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。

1.2 PWM工作原理

为了实现PWM功能,需要使用定时器中的比较寄存器(TIMx_CCRx)。 当定时器以PWM模式工作时,会自动将TIMx_CCRx的值与TIMx_CNT(计数寄存器)中的值做比较,当TIMx_CNT中的值小于TIMx_CCRx的值时,PWM输出引脚输出高电平,大于时则输出低电平。

因此知道了PWM信号的周期和占空比可以通过设置比较寄存器TIMx_CCRx和定时器重载寄存器TIMx_ARR来控制。PWM的占空比可以通过下图公式计算: 占空比 以下图为例,该定时器的重载值为8,比较寄存器值为4,输出信号为OCXREF,则其占空比为44.4%。 占空比原理 一个定时器工作在PWM输出模式下时,有4个通道可以进行PWM信号的输出,每一个定时器都有对应标号的比较寄存器,比如5号定时器的1号通道对应的比较寄存器为TIM5_CCR1。 修改比较寄存器TIMx_CCRx的值来控制PWM输出的占空比。在函数aRGB_led_show中,首先通过与运算与移位运算提取出对应的alpha,R,G和B通道值,然后用透明度alpha与R,G,B三者依次相乘,最后将其赋值通过__HAL_TIM_SetCompare函数给对应的比较寄存器TIM5->CCRx。

如图所示 原理 其中,ARR为自动重装载值,相当于一个最大可达到的值,CCRx 是用来控制占空比的,对应这幅原理图,超过CCRx的时间段为高电平。计数的频率也可以在图中通过t2、t4 - t2、等计算得到。其中单片机定时器的计数模式有以下三种情况,如图所示。 计数模式 我们可以根据自己的需要灵活选择计数模式。

2. 程序的学习 2.1 PWM在CubeMX的配置

1、在CubeMX中设置定时器14的通道1为PWM输出。可以注意到这个通道对应的引脚正是之前的实验中使用的LED引脚。 定时器14 这里这个定时器14为特殊情况,下面我们以定时器5为例给大家讲解一下正常情况。 定时器5 一般情况下,我们选择内部时钟为pwm时钟,然后根据自己的需要打开pwm输出、输入等模式。

2、现在我们对定时器14进行相关的配置,如图所示 参数设置

2.2 代码讲解

1、HAL_TIM_PWM_Start函数介绍

为了使定时器开始PWM输出,除了要通过HAL_TIM_Base_Start使定时器开始工作,还需要在初始化时调用HAL库提供的PWM初始化函数HAL_TIM_PWM_Start。

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

这个函数的返回值为HAL_StatusTypeDef,HAL库定义的几种状态,如果成功使定时器开始工作,则返回HAL_OK; 该函数的作用在于使对应定时器的对应通道开始PWM输出; 该函数有两个参数, (1)*htim 定时器的句柄指针,如定时器1就输入&htim1,定时器2就输入&htim2 (2)Channel 定时器PWM输出的通道,比如通道1为TIM_CHANNEL1

代码我已经放到了我的GitHub仓库,如有需要可以下载使用: CubeMX学习

总结 这篇博客学习的PWM输出功能可以用于舵机和电机控制,是非常常用的控制信号,需要熟练掌握其原理。 下一次我们要了解其他几个需要pwm的外设,大家可要好好复习消化一下哟。 今天实际的操作比较简单,但是原理大家还是要仔细研究一下啦。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有