完整教程:STM32H743-ARM例程11-PWM

news/2025/10/12 22:55:52/文章来源:https://www.cnblogs.com/ljbguanli/p/19137466

完整教程:STM32H743-ARM例程11-PWM

目录

  • 实验平台
  • 实验介绍
  • PWM
    • PWM简介
    • PWM基本原理
    • PWM相关寄存器
      • 捕获/比较模式寄存器1/2(TIMx_CCMR1/2)
      • 捕获/比较使能寄存器(TIMx_ CCER)
      • 捕获/比较寄存器1/2/3/4(TIMx_ CCR1/2/3/4)
  • STM32CubeMX生成工程
  • 实验代码
  • 实验现象

实验平台

硬件:银杏科技GT7000双核心开发板-ARM-STM32H743XIH6,银杏科技iToolXE仿真器
软件:最新版本STM32CubeH7固件库,STM32CubeMX v6.10.0,开发板环境MDK v5.35

实验介绍

  由于开发版上LED的GPIO没有定时器通道,所以本次实验使用软pwm来模拟。利用PWM控制LED灯产生呼吸灯效果。

PWM

PWM简介

  PWM即脉冲宽度调制,是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
  PWM即脉冲宽度调制,是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。

PWM基本原理

  脉宽调制基本原理:其控制方式就是对电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变电路输出电压的大小,也可改变输出频率。
脉宽调制原理:
  脉宽调制模式可以生产一个由TIMx_ARR寄存器确定频率,由TIMx_CCRx确定占空比的信号。如下图所示:
在这里插入图片描述

  横轴表示时间,纵轴表示计数器的计数值CNT。当CNT<CCRx时,IO输出低电平(逻辑0);当CNT>=CCRx时,IO输出高电平(逻辑1);当CNT=ARR时,定时器溢出,产生事件,CNT计数清零,然后继续递增,依次循环。我们可以通过改变CCRx的值来修改PWM中的占空比(占空比 = 50%,表示高电平和低电平时间各占一半),修改ARR的值来修改PWM的频率。
  上图中可知0到t2为一个周期时间,而占空比由CCRx值决定。一个周期时间可以由以下公式计算:
T=(ARR+1)(PSC+1)/TCLK
  占空比公式:
占空比 = (Ton(高电平时间) / T) × 100%
  其中:ARR为重新装载值;PSC为预分频系数;TCLK为定时器时钟频率。如本次实验中TCLk为240M,选择ARR为499,PSC为239,其一个周期为0.5ms。

PWM相关寄存器

捕获/比较模式寄存器1/2(TIMx_CCMR1/2)

在这里插入图片描述
  本章我们主要关注该寄存器位 6:4 OC1M:输出比较 1 模式 (Output Compare 1 mode),详细介绍可以参考文档《stm32h743xi参考手册》。
OC1M[2:0]位可控制 PWM模式,方法如下:
110:PWM模式1——向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则有效电平(OC1REF=1)。
111:PWM模式2——在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。

捕获/比较使能寄存器(TIMx_ CCER)

在这里插入图片描述
位 0 CC1E:捕获/比较 1 输出使能 (Capture/Compare 1 output enable)。
CC1 通道配置为输出:
  0:关闭——OC1 未激活
  1:开启——在相应输出引脚上输出 OC1 信号
CC1 通道配置为输入:此位决定了是否可以实际将计数器值捕获到输入捕获/比较寄存器 1
(TIMx_CCR1) 中。
  0:禁止捕获
  1:使能捕获

  该寄存器就是控制通道1输入/输出,控制通道1输出极性。

捕获/比较寄存器1/2/3/4(TIMx_ CCR1/2/3/4)

在这里插入图片描述
  在输出模式下,捕获/比较寄存器影子寄存器的值与CNT的值比较,根据比较结果产生相应动作,利用这点,我们通过修改这个寄存器的值,就可以控制PWM的占空比了。注意,对于TIM2和TIM5来说,该寄存器是32位有效的,对其他定时器来说,则是16位有效位。

STM32CubeMX生成工程

我们参考前面章节STM32H743-结合CubeMX新建HAL库MDK工程,打开CubeMX软件,重复步骤不再展示,我们来看配置TIM3部分如下图所示:
在这里插入图片描述

实验代码

  前面我们提到过,由于开发板LED的GPIO没有定时器通道,所以我们的代码做出相应改变,通过添加参数模拟定时器的占空比。
主函数

int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM3_Init();
HAL_TIM_Base_Start_IT(&htim3);  // 启动定时器中断
while (1)
{
}
}

回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint8_t pwm_counter = 0;
static int16_t duty_cycle = 0;
static int8_t dir = 1;    // 1:递增, -1:递减
if (htim->Instance == TIM3)
{
pwm_counter++;
if (pwm_counter >= 100)
{
// 每10ms调整一次占空比
pwm_counter = 0;
duty_cycle += dir;
// 方向控制
if (duty_cycle >= 100)
{
dir = -1;
duty_cycle = 100;
}
else if (duty_cycle <= 0)
{
dir = 1;
duty_cycle = 0;
}
}
// 控制LED亮度
if (pwm_counter < duty_cycle)
LED_OFF;
else
LED_ON;
}
}

实验现象

GT7000 双核心板红色LED灯亮度由灭到亮再从亮到灭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025铝合金微弧氧化定制厂家权威推荐榜:品质卓越与技术创新

2025铝合金微弧氧化定制厂家权威推荐榜:品质卓越与技术创新随着工业技术的不断进步,铝合金微弧氧化处理技术在各个领域中的应用越来越广泛。特别是在航空航天、汽车制造、电子设备等行业中,对铝合金表面处理的要求越…

2025年10月拉伸器厂家最新权威推荐榜:高效稳定与卓越品质的行业首

随着工业自动化和智能制造的快速发展,液压扳手作为关键工具在多个行业中发挥着重要作用。为了帮助筛选液压扳手品牌,特此发布权威推荐榜单,为采购决策提供专业参考价值。一、液压扳手厂家推荐榜推荐一:马鞍山市罗泰…

2025数粒机厂家最新权威推荐榜:精准高效与智能控制的行业首

2025数粒机厂家最新权威推荐榜:精准高效与智能控制的行业首选随着工业自动化和智能化的发展,数粒机作为关键设备,在制药、食品、化工等行业中的应用越来越广泛。为了帮助筛选数粒机品牌,特此发布权威推荐榜单,为采…

Spring拦截器HandlerInterceptor与Filter方法执行顺序探究

单个拦截器与Controller方法的执行顺序 拦截器的preHandle方法在进入到Controller方法之前执行,且只有当方法返回true时才能进入到被拦截的Controller方法;如果该方法返回false,则被拦截的Controller方法不会执行,…

企业自动化立体库WMS解决方案(42页PPT) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025精加工车间恒温恒湿系统TOP5榜单:精准控温与高效节

2025精加工车间恒温恒湿系统TOP5榜单:精准控温与高效节能随着工业技术的不断进步,精加工车间对环境控制的要求越来越高。恒温恒湿系统作为确保车间内温度和湿度稳定的关键设备,其重要性不言而喻。本文将为您推荐202…

2025数控滚齿机订制厂家权威推荐:高精度与高效能的首选品牌

2025数控滚齿机订制厂家权威推荐:高精度与高效能的首选品牌随着制造业的不断发展和技术进步,数控滚齿机在精密齿轮加工领域的作用愈发重要。选择一家高质量、高效率的数控滚齿机厂家对于企业的生产至关重要。本文将从…

2025婚纱摄影工作室权威推荐榜:捕捉幸福瞬间的创意大师

2025婚纱摄影工作室权威推荐榜:捕捉幸福瞬间的创意大师在当今社会,婚纱摄影已经不仅仅是记录新人美好时刻的一种方式,更是一种艺术创作。随着技术的发展和消费者需求的多样化,婚纱摄影行业也在不断进化。为了帮助筛…

详细介绍:初学者小白复盘11之——指针(1)

详细介绍:初学者小白复盘11之——指针(1)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

2025-10-12

2025-10-12之前做到了“ELF文件和链接”这一节,今天重新回想一下接着往下做。 发现做到了“用RTL实现最简单的处理器”这里,verilog已经写完了,但是用verilogtor搭建得仿真环境有点问题,明天再研究吧

hex、bin、axf文件的区别

AXF 文件: 是编译器(如 ARM GCC, Keil, IAR)生成的调试文件。它包含最终的可执行机器码、调试信息(变量名、函数名、行号等)和丰富的元数据(如段地址)。主要用于调试。HEX 文件: 是一种带有地址信息的标准烧录…

20232417 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 本次实验围绕 Linux 可执行文件 pwn1 的缓冲区溢出(BOF)漏洞与 shellcode 注入展开学习,核心是通过多种技术手段篡改程序执行流程,实现未授权代码执行。具体包括:直接修改程序机器指令,将 main 函数调…

2025黄金回收品牌TOP5权威榜单:值得信赖的高性价比厂家

2025黄金回收品牌TOP5权威榜单:值得信赖的高性价比厂家随着黄金市场的不断升温,黄金回收行业也迎来了新的发展机遇。越来越多的企业和个人开始关注黄金回收,希望通过这一渠道实现资产的有效管理和增值。然而,在众多…

P6005 [USACO20JAN] Time is Mooney G 题解

题目描述 Bessie 正在安排前往牛尼亚的一次出差,那里有 \(N\)(\(2 \leq N \leq 1000\))个编号为 \(1 \ldots N\) 的城市,由 \(M\)(\(1 \leq M \leq 2000\))条单向的道路连接。Bessie 每次访问城市 \(i\) 都可以赚…

3.2 优势演员–评论家算法(Advantage Actor-Critic, A3C)

优势演员–评论家算法(Advantage Actor-Critic, A3C)演员–评论家(Actor–Critic)算法 策略梯度定理提供了一种能够基于单步转移估计梯度的架构: \[\nabla_\theta J(\theta) = \mathbb{E}_{s \sim \rho_\theta, a…

20232326 2025-2026-1 《网络与系统攻防技术》实验一实验报告

20232326 2025-2026-1 《网络与系统攻防技术》实验一实验报告 1. 实验内容 1.1 缓冲区溢出漏洞核心定义:程序向预设缓冲区写入数据时超出容量,溢出数据覆盖相邻内存(如函数返回地址、栈底指针ebp),最终篡改程序执…

[数据分析/BI] Microsoft Power BI 使用指南

1 概述:Power BI 什么是 Power BI?Power BI 是由微软发布的一款商业智能(BI)软件,或者说数据分析工具。Microsoft Power BI 是一个完整的报表解决方案,通过开发工具和联机平台提供数据准备、数据可视化、分发和管…