当前位置: 首页 > news >正文

嵌入式蓝桥杯学习7 产生PWM

Cubemx配置

打开cubemx,前面的配置看上文,这里主要配置定时器产生PWM波。

以PA1的TIM2-CH2通道为例进行演示。

1.在Timers中打开TIM2,将Channel2配置为PWM Generation CH2。

2.将Clock Source 选择为Internal Clock。

3.配置Paramater Settings中的参数。

Prescalar(PSC)预分频:80-1

counter Mode(计数模式):Up

counter period(计数器的值):1000-1

Internal Clock Division(CKD)时钟分频因子:No Division

auto-reload preload(自动重装载值):Enable(使能)

4.配置PWM Generation Channel 2中的参数。

 Mode(模式):PWM mode 1

Pulse:400(设置占空比为40%,如果要换别的占空比,可自行修改)

Output compare preload:Enable

CH Polarity:High


点击GENERATE CODE.  

代码编写

知识补充

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
功能:是启动定时器 htim2 的脉宽调制(PWM)功能,并且具体是对 TIM_CHANNEL_2 这个通道来启动的。这意味着定时器 htim2 的通道 2 将会按照预先配置好的参数(比如频率、占空比等设置,这些设置一般是在初始化定时器时就完成了的)开始输出 PWM 信号了。

__HAL_TIM_SET_AUTORELOAD(&htim2,250);
功能:用于设置定时器 htim2 的自动重装载值,在这里将自动重装载值设置为 250,也就意味着定时器 htim2 的计数范围被限定在了 0 到 250 这个区间。

__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,100);
功能:用于设置定时器 htim2 中指定通道(这里是 TIM_CHANNEL_2)的比较值。定时器的计数值会和这个比较值进行比较,当计数值小于比较值时,输出通道对应的电平状态(比如高电平)会保持,而当计数值达到或者超过比较值时,电平状态会发生改变(比如变为低电平),通过改变这个比较值就可以改变 PWM 信号的占空比。这里将比较值设置为 100,结合前面设置的自动重装载值 250,可以大致算出当前 PWM 信号在一个周期内高电平所占的时长比例(即占空比,这里大致为 100/250),从而实现对输出信号占空比的控制。

代码

示例:设置输出频率为4KHz,占空比40%。

my_main.c

#include "my_main.h"
char text[30];
void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//所有LED熄灭(l小写)HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);//左移8位:控制C8-15引脚,值为1的点亮HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关锁存器
}
void setup()
{HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);LED_Disp(0x00);//关掉所有LEDLCD_Init();//LCD初始化LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);
}
void loop()
{if(bkey[1].short_flag==1){sprintf(text,"    KEY_1 down!    ");LCD_DisplayStringLine(Line8,(uint8_t *)text);//局部刷新	__HAL_TIM_SET_AUTORELOAD(&htim2,250);__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,100);bkey[1].short_flag=0;}
}

按键函数在上一篇有提到,详情请移位上篇文章。
                        
原文链接:https://blog.csdn.net/m0_74246768/article/details/144298243

相关文章:

嵌入式蓝桥杯学习7 产生PWM

Cubemx配置 打开cubemx&#xff0c;前面的配置看上文&#xff0c;这里主要配置定时器产生PWM波。 以PA1的TIM2-CH2通道为例进行演示。 1.在Timers中打开TIM2,将Channel2配置为PWM Generation CH2。 2.将Clock Source 选择为Internal Clock。 3.配置Paramater Settings中的参…...

档案学实物

档案工作 档案工作的性质 服务性 文化性 管理性 政治性 科学性 档案工作的地位 档案工作的效益 社会性&#xff0c;隐蔽性&#xff0c;滞后性 档案工作的发展规律 档案收集 档案收集工作的内容意义 档案收集工作的具体要求 档案室的档案收集工作 档案馆的档案收集工作 档案…...

数据清洗代码:缺失值,异常值,离群值Matlab处理

目录 基本介绍程序设计参考资料基本介绍 一、过程概述 本过程适用于处理SCADA系统采集到的数据,以及具有类似需求的数据集。处理步骤包括缺失值处理、异常值处理和离群值处理,旨在提升数据质量,增强数据的相关性,同时保持数据的原始特征和随机性。 二、缺失值处理 对于SC…...

Windows设备go环境安装配置

一、下载go安装包 官网链接&#xff1a;All releases - The Go Programming Language (google.cn) 安装过程比较简单&#xff0c;这里不再赘述&#xff0c;可参考这位博主的文章。本文重点在环境配置。golang环境详细安装、配置_golang安装-CSDN博客 二、环境变量配置 1.添…...

导体、半导体和绝缘体

半导体可以根据不同的组合去改变电阻&#xff0c;所以可以用来制作芯片。...

shell 6 if条件判断与for循环结构 (泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…...

MetaGPT 安装

1. 创建环境 conda create -n metagpt python3.10 && conda activate metagpt2. 可编辑方式安装 git clone --depth 1 https://github.com/geekan/MetaGPT.git cd MetaGPT pip install -e .3. 配置 metagpt --init-config运行命令&#xff0c;在C盘位置C:\Users\325…...

论文阅读:Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris

The Tabula Muris Consortium., Overall coordination., Logistical coordination. et al. Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris. Nature 562, 367–372 (2018). 论文地址&#xff1a;https://doi.org/10.1038/s41586-018-0590-4 代码地址…...

图生3d 图生全景 学习笔记

目录 instantsplat Aluciddreamer ZoeDepth 会自动下载模型&#xff1a; 图生全景图SD-T2I-360PanoImage&#xff1a; instantsplat Sparse-view SfM-free Gaussian Splatting in Seconds 稀疏视图无SfM高斯喷洒 GitHub - NVlabs/InstantSplat: InstantSplat: Sparse-vi…...

分库分表—4.数据迁移系统文档

大纲 1.数据库设计 2.枚举类 3.接⼝设计 4.定时任务设计 (1)定时核对校验数据的定时任务 (2)数据量统计定时任务 (3)增量数据落地定时任务 (4)失败重试定时任务 5.技术亮点 (1)滚动拉取方案 (2)巧妙的统计滚动进度方案 (3)防止增量同步数据丢失和高效写入方案 (4)…...

HAMR技术进入云存储市场!

2024年12月3日&#xff0c;Seagate宣布其Mozaic 3系列HAMR&#xff08;热辅助磁记录&#xff09;硬盘获得了来自一家领先云服务提供商&#xff08;可能AWS、Azure或Google Cloud其中之一&#xff09;以及其他高容量硬盘客户的资格认证。 Seagate的Mozaic 3技术通过引入热辅助磁…...

Vulnhub---kioptirx5 超详细wp

个人博客 WuTongSec 欢迎大佬指点 打点 nmap 192.168.128.0/24 -sP 找ip nmap 192.168.128.137 --min-rate 10000 -p- 简单全端口扫描 nmap 192.168.128.137 -sC -sV -O -sT 详细 脚本 版本 系统 扫描 dirsearch -u http://192.168.128.137 目录扫描 PORT S…...

单片机状态机实现多个按键同时检测单击、多击、长按等操作

1.背景 在之前有个项目需要一个或多个按键检测&#xff1a;单击、双击、长按等操作 于是写了一份基于状态机的按键检测&#xff0c;分享一下思路 2.实现效果 单击翻转绿灯电平 双击翻转红灯电平 长按反转红绿灯电平 实现状态机检测按键单击&#xff0c;双击&#xff0c;长…...

oracle之用户的相关操作

&#xff08;1&#xff09;创建用户(sys用户下操作) 简单创建用户如下&#xff1a; CREATE USER username IDENTIFIED BY password; 如果需要自定义更多的信息&#xff0c;如用户使用的表空间等&#xff0c;可以使用如下&#xff1a; CREATE USER mall IDENTIFIED BY 12345…...

黑马redis

Redis的多IO线程只是用来处理网络请求的,对于读写操作命令Redis仍然使用单线程来处理 Redisson分布式锁实现15问 文章目录 主线程和IO线程是如何协作的Unix网络编程中的五种IO模型Linux世界一切皆文件生产上限制keys *、flushdb、flushall等危险命令keys * 遍历查询100W数据花…...

HCIA-Access V2.5_1_2 PON技术的特点、优势与典型应用

PON接入技术优势 它的接入方式有两种&#xff0c;点到点光接入和点到多点光接入。 点到点 PON口的资源被一个用户独占&#xff0c;该用户可以享受到更好的带宽体验&#xff0c;同时故障好排查&#xff0c;出现问题&#xff0c;重点检测这一条链路以及终端用户&#xff0c;同…...

css部分

前面我们学习了HTML&#xff0c;但是HTML仅仅只是做数据的显示&#xff0c;页面的样式比较简陋&#xff0c;用户体验度不高&#xff0c;所以需要通过CSS来完成对页面的修饰&#xff0c;CSS就是页面的装饰者&#xff0c;给页面化妆&#xff0c;让它更好看。 1 层叠样式表&#…...

【TCP 网络通信(发送端 + 接收端)实例 —— Python】

TCP 网络通信&#xff08;发送端 接收端&#xff09;实例 —— Python 1. 引言2. 创建 TCP 服务器&#xff08;接收端&#xff09;2.1 代码示例&#xff1a;TCP 服务器2.2 代码解释&#xff1a; 3. 创建 TCP 客户端&#xff08;发送端&#xff09;3.1 代码示例&#xff1a;TCP…...

LSTM+改进的itransformer时间序列预测模型代码

代码在最后 本次设计了一个LSTM基于差分多头注意力机制的改进的iTransformer时间序列预测模型结合了LSTM&#xff08;长短期记忆网络&#xff09;和改进版的iTransformer&#xff08;差分多头注意力机制&#xff09;&#xff0c;具备以下优势&#xff1a; 时序特征建模能力&am…...

Apache-HertzBeat 开源监控默认口令登录

0x01 产品描述: HertzBeat(赫兹跳动) 是一个开源实时监控系统,无需Agent,性能集群,兼容Prometheus,自定义监控和状态页构建能力。HertzBeat 的强大自定义,多类型支持,高性能,易扩展,希望能帮助用户快速构建自有监控系统。0x02 漏洞描述: HertzBeat(赫兹跳动) 开源实时…...

Vortex模组管理器:从架构到实战的全方位技术指南

Vortex模组管理器&#xff1a;从架构到实战的全方位技术指南 【免费下载链接】Vortex Vortex: Nexus-Mods开发的游戏模组管理器&#xff0c;用于简化模组的安装和管理过程。 项目地址: https://gitcode.com/gh_mirrors/vor/Vortex 一、Vortex核心架构解析 模组管理的&q…...

LaTeX投稿Elsevier期刊必备:elsarticle.cls从安装到实战避坑指南

LaTeX投稿Elsevier期刊必备&#xff1a;elsarticle.cls从安装到实战避坑指南 科研工作者向Elsevier投稿时&#xff0c;elsarticle.cls文档类是最常用的工具之一。不同于基础教程&#xff0c;本文将聚焦实际投稿过程中的高频痛点&#xff0c;从环境配置到排版细节&#xff0c;提…...

Python类与对象实战:从简历模板到动态方法绑定的完整指南

Python类与对象实战&#xff1a;从简历模板到动态方法绑定的完整指南 面向对象编程&#xff08;OOP&#xff09;是现代编程语言的核心范式之一&#xff0c;而Python作为一门多范式语言&#xff0c;其面向对象特性尤为强大且易于使用。本文将通过构建一个简历模板系统的完整案例…...

如何在KubeOperator中选择最佳存储方案:NFS、Ceph RBD和Local Volume完全指南

如何在KubeOperator中选择最佳存储方案&#xff1a;NFS、Ceph RBD和Local Volume完全指南 【免费下载链接】KubeOperator KubeOperator 是一个开源的轻量级 Kubernetes 发行版&#xff0c;专注于帮助企业规划、部署和运营生产级别的 K8s 集群。 项目地址: https://gitcode.co…...

【教程4>第12章>第3节】基于FPGA的图像缩放实现2

编写中........................

ComfyUI-VideoHelperSuite解决VHS_VideoCombine节点缺失的4阶段实战方案

ComfyUI-VideoHelperSuite解决VHS_VideoCombine节点缺失的4阶段实战方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在ComfyUI视频工作流中&#xff0c;VHS_V…...

GIL已死,但并发未生:从字节码级剖析无锁Python的7类竞态陷阱与4种Lock-Free算法选型矩阵

第一章&#xff1a;GIL已死&#xff0c;但并发未生&#xff1a;无锁Python并发范式的认知重构Python的全局解释器锁&#xff08;GIL&#xff09;长期被视为并发编程的“原罪”&#xff0c;但自CPython 3.13起&#xff0c;GIL在I/O密集型路径中已被条件性移除&#xff0c;而3.14…...

用Image-to-Video为你的图片注入灵魂:动态效果生成全攻略

用Image-to-Video为你的图片注入灵魂&#xff1a;动态效果生成全攻略 1. 引言&#xff1a;让静态图片动起来 想象一下&#xff0c;你拍了一张完美的风景照&#xff0c;但总觉得少了点什么——如果云能飘动、树叶能摇曳、水面能泛起波纹&#xff0c;那该多好&#xff1f;这就是…...

别再只会发文本了!SpringBoot整合钉钉机器人,这5种高级消息模板让你的通知更专业

SpringBoot与钉钉机器人&#xff1a;五种高级消息模板实战指南 如果你还在用单调的文本消息推送系统通知&#xff0c;那么你的团队协作工具可能只发挥了50%的潜力。钉钉机器人提供的富文本消息类型&#xff0c;能够将枯燥的系统通知转化为直观、交互式的信息卡片&#xff0c;显…...

从订餐流程到并发编程:Petri网中的‘库所’与‘变迁’到底在模拟什么?

从订餐流程到并发编程&#xff1a;Petri网中的‘库所’与‘变迁’到底在模拟什么&#xff1f; 想象一下&#xff0c;你正在用手机订外卖&#xff1a;选择菜品、下单支付、等待制作、骑手配送——这个看似简单的流程背后&#xff0c;隐藏着一个精妙的系统状态转换模型。这正是Pe…...