问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

通过定时器timer方式实现时间精准控制

创作时间:
作者:
@小白创作中心

通过定时器timer方式实现时间精准控制

引用
CSDN
1.
https://blog.csdn.net/qq_75175238/article/details/144403489

本文将详细介绍如何使用STM32微控制器的定时器(timer)功能实现PWM(脉冲宽度调制)信号的生成,通过具体的项目搭建和代码实现,帮助读者掌握PWM技术在实际应用中的控制方法。

一、PWM技术基础

  1. PWM的概念: PWM,即脉冲宽度调制,是一种技术,它利用数字输出信号来操控模拟电路。这种模拟控制手段通过调整晶体管或MOS管的导通时间,从而改变开关稳压电源的输出。

  2. PWM的工作原理: PWM技术通过控制逆变电路中开关器件的开关动作,生成一系列等幅的脉冲,用以模拟所需的波形,如正弦波。可以将其视为一种将模拟信号电平进行数字编码的方法,通过调节方波的占空比来实现。

  3. PWM的优势与使用场景: PWM因其控制简便、适应性强和良好的动态响应等特点而广泛应用于电力电子技术。它的应用场景包括功率控制、电机调控、照明调节、电源管理以及在音频放大器等领域,因此,掌握PWM技术具有极其重要的实际意义。

  4. PWM的关键参数

  • 占空比:指一个周期内信号保持高电平状态的时间比例。
  • 频率:PWM信号的频率决定了其周期性变化的速率。
  1. PWM信号的生成: 在STM32微控制器中,除了TIM6和TIM7之外的其他定时器均能生成PWM信号。高级定时器TIM1和TIM8能够提供多达7路的PWM输出,而通用定时器也能提供多达4路的输出,使得STM32能够同时产生多达30路的PWM信号。

  2. PWM的实现机制: 在STM32的定时器结构中,涉及到的部分包括时钟源的选择、时基单元以及PWM输出通道。通常建议使用专门的PWM端口进行输出,以避免使用普通IO口模拟PWM时可能出现的控制精度问题和系统稳定性风险。

  1. PWM输出模式的差异
  • PWM模式1:在计数递增过程中,当TIMx_CNT的值小于TIMx_CCR1时,通道1输出有效电平,反之则输出无效电平;在计数递减过程中,当TIMx_CNT的值超过TIMx_CCR1时,通道1输出无效电平,否则输出有效电平。
  • PWM模式2:在计数递增阶段,当TIMx_CNT的值小于TIMx_CCR1时,通道1输出无效电平,一旦TIMx_CNT的值达到或超过TIMx_CCR1,则输出有效电平;在计数递减阶段,当TIMx_CNT的值大于TIMx_CCR1时,通道1输出有效电平,反之则输出无效电平。

注意:PWM模式的不同主要体现在确定有效电平的时机,而不涉及有效电平是高电平还是低电平。有效电平的极性由CCER寄存器的CCxP位来设定。

例如:在PWM模式1下,如果CCER寄存器的CCxP位设置为0,那么当TIMx_CNT小于TIMx_CCR1时,输出的是高电平;相反,如果CCxP位设置为1,那么在同样的条件下,输出的将是低电平。

  1. PWM的计数方式
  • 向上计数模式: 以PWM模式1为例,当TIMx_CNT的值小于TIMx_CCRx时,PWM信号的参考输出OCxREF为高电平,否则为低电平。如果TIMx_CCRx中的比较值大于定时器的自动重装载值(TIMx_ARR),则OCxREF将持续为高电平。若比较值为0,则OCxREF将持续为低电平。

二、项目搭建

目标:利用TIM3和TIM4定时器,分别生成PWM波形,以驱动外部LED和开发板上固定的LED(位于PC13 GPIO端口),实现两个LED灯的呼吸效果。

  1. 启动新工程: 在STMCubeMX的界面中,开始一个新项目,点击“ACCESS TO MCU SELECTOR”按钮。

  1. 选择微控制器: 在“Part Number”栏中搜索并选择所需的微控制器型号,本文使用STM32F103C8T6,确认芯片信息后,点击“Start Project”。

  2. 设置RCC: 进入“System Core”并选择“RCC”,在右侧的配置菜单中选择“Crystal/Ceramic Resonator”作为时钟源。

  3. 配置系统: 选择调试接口,进入“System Core”并选择“SYS”,在右侧的配置菜单中选择“Serial Wire”作为调试接口。

  4. 定时器3和定时器4的配置: 为了实现定时功能,我们配置定时器3和定时器4。设置预分频器为71,采用向上计数模式,设置计数周期为1000,并启用自动重载功能。对于通道1,选择“PWM Generation CH1”以生成PWM输出。预设分频系数为71,计数周期为1000,其他选项保持默认。初始占空比设为10%,虽然这一步不是必须的,因为我们可以在代码中对其进行调整。

  5. 时钟源配置: 按照所示修改时钟配置。

  1. 项目设置: 进行项目相关的配置。

  2. 生成项目代码: 完成上述步骤后,生成项目代码。

三、代码编写

(代码部分略)

四、结果演示

(结果演示部分略)

五、实验心得

通过本次实验,对PWM(脉冲宽度调制)的原理有了更深入的理解。实验中,注意到一个有趣的现象:PWM信号不仅可以用于传统的PWM输出引脚,也可以通过复用引脚来实现控制功能,比如点亮LED灯。这表明,PWM的应用并不局限于特定的输出端口,而是可以根据实际需求灵活配置。

在尝试实现呼吸灯效果的过程中,进行了一系列测试,并观察到了PWM周期对灯光效果的影响。当PWM周期较长时,呼吸灯的效果并不明显。从PWM的工作原理来看,这是因为PWM波主要调整的是高电平的持续时间,即占空比。如果PWM周期过大,即使占空比发生变化,由于低电平的持续时间较长,人眼仍然能够感知到LED灯的亮灭变化,从而无法形成平滑的渐变效果。

相反,当提高PWM的频率,即缩短PWM周期时,人眼就无法分辨出低电平时的间隙。这是因为人眼的视觉暂留效应,当闪烁频率超过一定阈值时,人眼无法分别单独的闪烁,而是将其视为连续的光线。因此,随着PWM频率的提高,LED灯的亮度变化看起来更加平滑,从而实现了从亮到暗的自然过渡,形成了呼吸灯的效果。

这一发现让我们更加深刻地认识到PWM技术在模拟信号控制中的重要性。通过精确控制PWM的周期和占空比,可以实现对LED灯亮度、电机转速、扬声器音量等模拟量的精细调节。在实际应用中,选择合适的PWM参数对于实现期望的控制效果至关重要。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号