STM32CubeMX配置定时器PWM--保姆级教程

————————————————————————————————————
⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。
⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。
⏩本篇文章对STM32CUBEMX配置PWM输出做一个详细的使用教程。
⏩感谢你的阅读,不对的地方欢迎指正。
————————————————————————————————————

PWM

  • PWM原理简介
  • 实验环境
  • 实验目的
  • 实验步骤
    • STM32CubeMX配置
    • 驱动代码
  • 总结
  • STM32Cube系列其他文章

PWM原理简介

  1. 什么是PWM:PWM简称脉冲宽度调制,即在一个周期内存在不同极性的电平状态。
  2. PWM频率:是指一秒钟内从高电平时间在到低电平时间,再从低电平跳到高电平的瞬间次数,也就是一秒钟内有多少个PWM的周期。f = T / 1(HZ)。
  3. PWM周期:是指一秒钟内从高电平时间在到低电平时间,T = f / 1(s)。
  4. PWM占空比:是指一个周期内高电平时间和总时间的比值。
    例如:PWM的周期为1ms,高电平时间为0.5ms,低电平时间为0.5ms,则频率就为1kHz,占空比就为百分之五十。
    详细原理可看:PWM的基本原理及如何产生PWM

实验环境

软件工具:STM32CUBEMX、KEIL
硬件环境:STM32H723ZGT6

实验目的

产生20KHZ频率50%占空比的方波信号

实验步骤

STM32CubeMX配置

在这里插入图片描述
配置解析:

  1. 通道:TIM1_CH3
  2. 引脚:PE13
  3. 预分频系数:275-1 ,自动重装载值:50
  4. PWM频率:f = T / 1(HZ) = 275000000/(275*50) = 20 000Hz。
  5. PWM周期:T = f / 1(s)。
  6. PWM占空比:占空比 = 比较值/自动重装载值 =比较值(软件配置)/50 。

驱动代码

在while(1)之前加入以下代码:

	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);//开启PWM__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_3,25);//设置比较值为25

解析:
1.比较值:25
2.PWM占空比:占空比 = 比较值/自动重装载值 =25/50 =50%。

总结

一般我们会使用PWM去做流水灯或者控制舵机等等,控制流水灯只需要改变比较值从而改变它的占空比就可以控制灯 的亮度。控制舵机可以参考下面的文章:
PWM舵机控制原理详解

STM32Cube系列其他文章

STM32CUBEMX配置ADC(多通道轮询)(STM32H7)–保姆级教程
STM32CUBUMX配置RS485(中断接收)–保姆级教程
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)
STM32MX配置EEPROM(AT24C02)------保姆级教程
STM32CUBUMX配置FLASH(W25Q128)–保姆级教程
STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用

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

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

相关文章

android NFC 从0到一

NFC intent action ACTIVITY_INTENT_ACTION 类型 作用 优先级 ACTION_NDEF_DISCOVERED 标签中含有NDEF数据且为公认类型 高 ACTION_TECH_DISCOVERED 标签中没有NDEF数据却是已定义的标签技术 中 ACTION_TAG_DISCOVERED 前两个action都没有启动&#xff0c…

【Python】从同步到异步多核:测试桩性能优化,加速应用的开发和验证

目录 测试工作中常用到的测试桩mock能力 应用场景 简单测试桩 http.server扩展:一行命令实现一个静态文件服务器 性能优化:使用异步响应 异步响应 能优化:利用多核 gunicorn 安装 gunicorn 使用 gunicorn 启动服务 性能优化&#…

Spring Boot 常见的底层注解剖析

Spring Boot 是一个用于创建独立的、基于Spring框架的Java应用程序的框架。它提供了许多注解,用于配置和定制应用程序的行为。以下是一些常见的Spring Boot底层注解的剖析: 常见的Spring Boot底层注解的剖析 SpringBootApplication:这是一个…

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found

某项目中,我要给别人封装一个深度学习算法的SDK接口,运行在RK3588平台上,然后客户给我的交叉编译工具链是 然后我用他们给我的交叉编译工具链报下面的错误: aarch64-buildroot-linux-gnu-gcc --version /data/chw/aarch64/bin/cca…

使用idea实现git操作大全(在项目开发中遇到的实际情况

使用idea实现git操作大全(在项目开发中遇到的实际情况) 1.安装git插件2.在开发中切记拉一个自己的分支 1.安装git插件 2.在开发中切记拉一个自己的分支 选中需要拉的分支,右键该分支,选中new breach from “分支”,点…

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件,由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括: - 支持大量格式:支…

小程序安全性加固:如何保护用户数据和防止恶意攻击

第一章:引言 在当今数字化时代,移动应用程序的使用已经成为人们日常生活中的重要组成部分。小程序作为一种轻量级的应用程序形式,受到了广泛的欢迎。然而,随着小程序的流行,安全性问题也日益凸显。用户数据泄露和恶意攻…

flask中写一个基础的sqlHelper类

写一个SQLHelper类: from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class SQLHelper:staticmethoddef add(record):db.session.add(record)return SQLHelper.session_commit()staticmethoddef add_all(records):db.session.add_all(records)return SQLH…

STM32 DMA

DMA介绍 DMA,Direct Memory Access,即直接存储器访问。 DMA传输,将数据从一个地址空间复制到另一个地址空间。(内存(程序里定义的数组)->外设(串口、SPI等外设的数据寄存器)、外…

【MySQL】DDL和DML

4,DDL:操作数据库 我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。 4.1 查询 查询所有的数据库 SHOW DATABASES; 运行上面语句效果如下: 上述查询到的是的这些数据库是mysql安装好自带的数据库,我们以后不要操…

MyBatis动态sql传参的问题

在使用mysql动态查询时遇到的一个问题&#xff0c;查询语句如下&#xff1a; WHERE11 <!-- 使用动态SQL进行条件判断 --> <if test"status ! null and status ! ">AND u.STATUS #{status} </if> 其中 STATUS是一个Integer型枚举值&#xff08;0…

django实现部门表的增删改查界面

1、前期准备 部署好mysql数据库&#xff0c;创建好unicom数据库下载好bootstap的插件下载好jquery的插件下载好mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl的安装包&#xff0c;根据python的版本下载 2、创建项目 在pycharm中创建项目 在pycharm的终端创建虚拟环境 py -m v…

Linux知识点 -- 基础IO(三)

Linux知识点 – 基础IO&#xff08;三&#xff09; 文章目录 Linux知识点 -- 基础IO&#xff08;三&#xff09;一、理解文件系统1.磁盘文件2.文件系统的存储结构3.inode与文件名的关系 二、软硬链接1、软链接2.硬链接 三、动静态库1.库2.生成静态库3.静态库的使用4.生成动态库…

基于SpringBoot+Vue的在线考试系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Zabbix分布式监控Web监控

目录 1 概述2 配置 Web 场景2.1 配置步骤2.2 显示 3 Web 场景步骤3.1 创建新的 Web 场景。3.2 定义场景的步骤3.3 保存配置完成的Web 监控场景。 4 Zabbix-Get的使用 1 概述 您可以使用 Zabbix 对多个网站进行可用性方面监控&#xff1a; 要使用 Web 监控&#xff0c;您需要定…

matlab编程实践18、19

浅水方程 浅水方程可以建立起海啸和浴缸中波浪的数学模型。浅水方程建立了水或者其它不可压缩液体受扰动时传播的模型。隐含的假设是&#xff0c;液体的深度和波浪的长度、扰动等相比是很小的。 在这样的记号下&#xff0c;浅水方程为双曲守恒定律的一个例子。 使用拉克斯-冯特…

【Linux】Linux命令行大全——读书笔记1

《Linux命令行大全》 在线文档地址&#xff1a;The Linux Command Line 阅读笔记之第1&#xff5e;4章&#xff1a;引言&#xff1b;什么是shell&#xff1b;文件系统中跳转&#xff1b;研究操作系统 一、概念 GUI: 图形用户界面 GNU: GNU’s Not Unix! 的递归缩写 shell …

算法刷题Day 57 回文子串+最长回文子序列

Day 57 动态规划 647. 回文子串 暴力解法 class Solution {bool isPalindromic(const string &s) {int i 0, j s.size() - 1;while (i < j) {if (s[i] ! s[j]) {return false;}i; j--;}return true;}public:int countSubstrings(string s) {int sum 0;for (int i …

线段树详解 原理解释 + 构建步骤 + 代码(带模板)

目录 介绍&#xff1a; 定义&#xff1a; 以具体一个题目为例&#xff1a;​ 树的表示方法&#xff1a; 实现步骤&#xff1a; 构建结点属性&#xff1a; pushup函数&#xff1a; build函数&#xff1a; pushdown函数&#xff1a; modify函数&#xff1a; query…

『赠书活动 | 第十六期』《深入浅出Java虚拟机:JVM原理与实战》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第十六期』 本期书籍&#xff1a;《深入浅出Java虚拟机&#xff1a;JVM原理与实战》 赠书规则&#xff1a;评论区&#xff1a;点赞&#xff…