【蓝桥杯嵌入式】PWM的设置,原理图解析与代码实现(第十一届省赛为例)——STM32

news2024/11/16 22:46:41

        

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇是非成败转头空。青山依旧在,几度夕阳红。一壶浊酒喜相逢。古今多少事,都付笑谈中。📈


目录

题目

设置STM32CubeMX

手搓代码

开启PWM函数

PWM占空比可调函数


题目

第十一届省赛关于PWM的题目要求如下:

         要求我们用PA6和PA7输出两种不同频率的占空比可调节的脉冲信号,频率的设置是由定时器中的预分频系数和重装载值来决定的,有需要理解的小伙伴可以取这篇文章中了解【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系。

设置STM32CubeMX

        首先我们要给PA6和PA7引脚选一个定时器,下图中我们可以看到PA6由四个定时器可选,分别是TIM16_CH1,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,但是我们只能选择后缀为CH1的定时器,至于为什么可以点此了解。因为我们在前几篇文章中给按键设置的定时器为TIM3_CH1,所以在这里我们给PA6选择TIM16_CH1,同样的,我们给PA7选择TIM17_CH1。

 引脚设置完成后,我们转到左边来,如下图,先给定时器使能,选择通道Output Compare CH1,

        TIM16是PA6的定时器,要求是100Hz,时钟原本的频率是80MHz,计算出分频系数和重装载值后填入即可(如何计算上面有相关链接)。

 如何往下翻,找到Pulse,设置占空比,为20.这样PA6的脉冲信号解设置好啦,PA7同理设置即可。

 手搓代码

开启PWM函数

以下是打开PWM的函数,第一个参数是定时器,第二个参数是通道。

	HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);		//开启PWM
	HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1); 

PWM占空比可调函数

这里使用按键来对PWM的占空比进行改变,每按一次占空比加10,等于100时跳转回10。

PWM的占空比改变的实现函数如下,第一个参数是定时器,第二个参数是通道,第三个参数是占空比的比例,如10就是10%的高电平。

_HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pa6_duty);

 以下就是完整的改变PWM的完整函数

if(key[1].key_flag == 1)
{
    pa6_duty+=10;
	if(pa6_duty > 90)
	{
		pa6_duty=10;
	}
	_HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pa6_duty);		//设置占空比pa6_duty
	key[1].key_flag = 0;
}
if(key[2].key_flag == 1)
{
	pa7_duty+=10;
	if(pa7_duty > 90)
	{
		pa7_duty=10;
	}
	__HAL_TIM_SetCompare(&htim17,TIM_CHANNEL_1,pa7_duty);		//设置占空比pa6_duty
	key[2].key_flag = 0;
}

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

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

相关文章

Lombok 常用注解

文章目录简介MAVEN 依赖常用的注解1. Data 注解 :2. Setter 注解:3.Getter 注解:4.Log4j or Slf4j 注解5.NoArgsConstructor注解:6.AllArgsConstructor注解:7.RequiredArgsConstructor注解:8.Builder注解:9.Cleanup注解…

全国青少年软件编程(Scratch)等级考试一级真题——2019.12

青少年软件编程(Scratch)等级考试试卷(一级)分数:100 题数:37一、单选题(共25题,每题2分,共50分)1.下列关于舞台的描述,不正确的是?( &#xff09…

DMHS搭建DMDSC 2节点集群同步到单库

DMHS搭建DMDSC 2节点集群同步到单库环境介绍1 安装DMOCI1.1 关闭数据库实例服务1.2 将DMOCI 复制到源端与目的端的数据库bin目录1.3 对数据库bin 执行目录文件更改用户属组和权限2 启动源数据库服务并配置数据库实例参数2.1 使用DMCSSM启动集群实例2.2 DMDSC源其中一个节点执行…

为何英格兰与苏格兰同属英国,却争端不断?

英国作为世界上的强国其组成部分是由大不列颠岛上的英格兰、威尔士和苏格兰以及爱尔兰岛东北部的北爱尔兰以及一系列附属岛屿。英国作为西欧的一个岛国,地理位置十分优越,位于欧洲大陆西北面的不列颠群岛。英国作为西欧的一颗不容忽视的“明星”&#xf…

【Unity风格化草地】概述风格化草地的实现方法

写在前面 最近本专业开始多很多事情了,要开始建模写论文了(不然研究生毕不了业),TA方面的学习进度更慢了,,so sad。 废话不多说,这篇文章其实是个小总结,毕竟学习新东西就是先要当…

序列索引序列切片

六个标准数据类型中是序列的有:字符串(String)、列表(List)、元组(Tuple)。 通过索引和切片的方式可以访问序列中的元素。 一、序列索引 序列中的每一个元素都有一个属于自己的编号&#xff0c…

演唱会的火车票没了?Python实现12306查票以及zidong购票....

嗨害大家好!我是小熊猫~ 不知道大家抢到演唱会的门票没有呢? 不管抢到没有,火车票也是很重要的哇 24小时抢票不间断的那种喔~ ~ ~ 不然可就要走路去了喔~ 准备工作 环境 Python 3.8Pycharm 插件 谷歌浏览器驱动 模块 需要安装的第三方模块&am…

1/4车、1/2车、整车悬架LQR仿真合集

目录 前言 1. 1/4悬架系统 1.1数学模型 1.2 LQR求解反馈阵阵(负反馈) 1.3仿真分析 2. 1/2悬架系统 2.1数学模型 2.2 LQR求解反馈阵阵(负反馈) 2.3仿真分析 3. 整车悬架系统 3.1数学模型 整车7自由度主动悬架数学模型 3.2 LQR求解反馈阵阵(负反馈) 3.3仿真分析 4…

MySQL(四)视图、存储过程、触发器

视图、存储过程、触发器视图检查选项视图的更新存储过程存储过程基本语法变量系统变量用户自定义变量局部变量if判断参数casewhile循环repeat循环loop循环cursor游标handler条件处理程序存储函数触发器视图 视图(View)是一种虚拟存在的表。视图中的数据…

ERP原理与应用教程(作业2)

1. 简答题 ERP是一个高度集成的信息系统,从管理信息集成的角度来看,从MRP到MRPII到ERP,是企业管理信息继承的不断扩展和深化。 所有成为ERP的软件都把MRPII作为其生产和控制模块,以MRPII为基础的计划功能在整个供应链的业务处理…

Composer最小稳定性问题

Composer最小稳定性问题主要指的是,在使用Composer安装某个特定的依赖包时,可能会出现一些不稳定的情况,比如依赖包的版本号发生变化,或者依赖包的某些功能发生变化,这样就会导致应用程序出现问题。为了解决这个问题&a…

【数据结构】栈和队列 (栈 栈的概念结构 栈的实现 队列 队列的概念及结构 队列的实现 栈和队列面试题)

文章目录前言一、栈1.1 栈的概念结构1.2栈的实现二、队列2.1队列的概念及结构2.2队列的实现三、栈和队列面试题总结前言 一、栈 1.1 栈的概念结构 栈也是一种线性表,数据在逻辑上挨着存储。只允许在固定的一端进行插入和删除元素。进行插入和删除操作的一端叫栈顶…

记录 UE5 完全重新构建 UE C++项目

不知道搞了什么,C项目的实时代码编译罢工了,搞了半天都修不好,只能又重建了 UE5 版本为 v5.1.1 删除以下文件夹 /Binaries /Intermediate /SavedBinaries 文件夹是编译后的模块 Intermediate 文件夹里是中间层的C代码,完全由ue…

腾讯乐固加固+app签名+多渠道打包

一、腾讯乐固-基础版免费加固-上传未加固的app-下载加固包(加固成功会清除原apk的签名信息和多渠道信息)https://console.cloud.tencent.com/ms/reinforce/list/basic二、使用AndroidStudio自带工具apksigner对apk重新签名找到apksigner.bat文件 路径D:\…

CentOS7环境下Docker入门到dockerfile(一)CentOS7安装Docker、容器构建、文件复制与挂载

文章目录准备CentOS7虚拟机准备SecureCRT远程连接虚拟机Centos7环境下安装Docker安装Docker镜像Docker容器的基本操作Docker容器的文件复制与挂载可能遇到的问题准备CentOS7虚拟机 关于网络连接三种模式可以参看这篇博客 准备SecureCRT远程连接虚拟机 可以自行搜索相关安装博…

MQTT协议-发布消息和发布确认

MQTT协议-发布消息和发布确认 PUBLISH一发布消息 PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。 发布消息报文由以下5个部分组成 固定报头由两个字节组成,第一个字节的高4位固定为0011,第2位和第1位表示Qos等级&#xff…

Redis单机版安装

文章目录前言Redis单机版安装下载1.安装依赖C语言依赖2.上传并解压3.编译并安装3.1编译3.2安装4.开启守护进程5.启动并测试5.1启动redis5.2关闭/重启redis5.3启动客户端工具5.4杀死进程的方式关闭redis前言 这里安装linux版本的redis,后续如有需要添加windowx版本 安装linux教…

电脑怎么重装系统?教你轻松掌握这些方法

重新安装计算机系统有两种原因:一种是计算机系统可以正常使用,但是电脑比较卡,为了提高它的运行速度,所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失,系统出现蓝屏,或者黑屏的情况…

【Linux内核二】常用的网络丢包错包debug工具介绍

目录 ifconfig Ifconfig输出各字段简述 txqueuelen RX和TX的errors指哪些错误 dropped与overruns的区别 常用ifconfig配置命令 显示网卡信息 启动关闭指定网卡 配置和删除ip地址 修改MAC地址 启用和关闭ARP协议 设置最大传输单元 设置网卡的promiscuous模式 设置…

Git 学习(二)—— 工作区 — 本地仓库的操作命令

我们要上传文件到本地仓库,不是直接拷贝进去的,而是需要通过命令一步步上传。从工作区到本地仓库分为了三步,也可以说是三个区域: 目录 1、操作命令 (1) git init(获取本地仓库) (2) git add(…