STM32 LL库+STM32CubeMX--LED呼吸灯

一、前期准备

  1. 硬件:STM32F103C8T6开发板
  2. 调试工具:DAPLink(本次使用)或USB-TTL
  3. 开发环境:STM32CubeMX、Keil、Vscode(可选)
  4. LED:使用PA0(TIM2_CH1)输出PWM,LED的阴极接GND

二、使用定时器中断产生PWM

STM32F103C8T6在72MHz的计数时钟下,可实现最大59.65s的定时。

  •  STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4
  • 时基单元:16位预分频器 + 16位计数器 + 16位自动重装载寄存器

计数模式:

1. 向上计数模式(常用):从0开始累加,到自动重装值触发中断。

2. 向下计数模式:从自动重装值递减,到0触发中断

3. 中央对齐计数模式:从0开始累加,到自动重装载值触发中断,然后递减,到0再次触发中断。常用于电机控制的SVPWM算法中。

TIM输出比较原理:

  • OC(Output Compare):输出比较,输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道OC1~4
  • CCR(Capture Compare):捕获比较寄存器

PWM(Pulse Width Modulation)脉冲宽度调制

  1. 频率 = 1 / TS,一般在 几kHz~几十kHz。
  2. 占空比 = TON / TS
  3. 分辨率 = 占空比变化步距,也就是占空比变化的精细程度。一般1%足够使用。

注:定时中断的频率就是PWM波的频率,只不过占空比的变化范围由自动重装载值ARR决定。

输出比较模式:常用PWM模式1

 

2.1 PWM参数计算

  • PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)
  • PWM占空比: Duty = CCR / (ARR + 1),CCR值可以设置PWM的占空比,因此ARR常设为100-1
  • PWM分辨率: Reso = 1 / (ARR + 1),即PWM的步长

参数说明:

  • CK_PSC:时钟源频率,72MHz
  • PSC:预分频器寄存器的值
  • ARR:自动重装寄存器的值
  • CCR:捕获比较寄存器的值

案例1:假如驱动SG90舵机:PWM频率为50Hz,即周期20ms

  • PSC = 72-1
  • ARR = 20K-1

案例2:输出频率为10K的PWM

  1. 先确定ARR的值:ARR = 100-1
  2. 再设置PSC的值:PSC = 72-1

2.2 STM32F103C8T6通用定时器输出通道

  • 因为涉及到GPIO的复用功能,所以要使用定时器输出PWM时,GPIO的工作模式需要设置为复用推挽输出模式
序号主功能默认复用功能
1PA0TIM2_CH1
2PA1TIM2_CH2
3PA2TIM2_CH3
4PA3TIM2_CH4
5PA6TIM3_CH1
6PA7TIM3_CH2
7PB0TIM3_CH3
8PB1TIM3_CH4
9PB6TIM4_CH1
10PB7TIM4_CH2
11PB8TIM4_CH3
12PB9TIM4_CH4

三、STM32CubeMX配置

1.设置RCC:使用外部高速时钟HSE

 2.SYS配置:配置成 SWD协议下载和调试

3. 定时器配置

使用TIM2,输出PWM频率10K

  • 设置ARR = 100-1
  • 设置PSC = 72-1

TIM2时钟源配置、通道输出配置: GPIO的工作模式会自动被设置为复用推挽输出模式

工作参数设置:PWM模式1

  •  ARR:决定PWM的分辨率
  • CCR:PWM的占空比

4.时钟树配置:72MHz

 5.导出代码:之后步骤参考之前的就可以了

四、程序编写

// 在TIMX_CH1通道上输出占空比为CompareValue的PWM
__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue)
{WRITE_REG(TIMx->CCR1, CompareValue);
}
 /* USER CODE BEGIN WHILE */LL_TIM_EnableAllOutputs(TIM2);LL_TIM_EnableCounter(TIM2);                        // 使能计数LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH1); // 使能输出比较通道while (1){for (uint16_t i = 0; i <= 100; i++){LL_TIM_OC_SetCompareCH1(TIM2, i); // PA0(TIM2_CH1)输出占空比为i的PWMLL_mDelay(10);}for (uint16_t i = 0; i <= 100; i++){LL_TIM_OC_SetCompareCH1(TIM2, 100 - i);LL_mDelay(10);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */

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

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

相关文章

scope,deep穿透的实际应用

一.父组件代码 <template><div id"app"><h1 class"box"><pageName> </pageName></h1></div> </template><script> import pageName from "../src/components/pageName.vue"; export de…

arcgis pro3.0-3.0.1-3.0.2安装教程大全及安装包下载

一. 产品介绍&#xff1a; ArcGIS Pro 这一功能强大的单桌面 GIS 应用程序是一款功能丰富的软件&#xff0c;采用 ArcGIS Pro 用户社区提供的增强功能和创意进行开发。 ArcGIS Pro 支持 2D、3D 和 4D 模式下的数据可视化、高级分析和权威数据维护。 支持通过 Web GIS 在一系列 …

KafkaStream:基本使用

简介&#xff1a; kafkaStream&#xff1a;提供了对存储在kafka中的数据进行流式处理和分析的功能 特点&#xff1a; KafkasSream提供了一个非常简单轻量的Library&#xff0c;它可以非常方便的嵌入到java程序中&#xff0c;也可以任何方式打包部署 入门案例&#xff1a; 1、…

【Apollo】阿波罗自动驾驶:塑造自动驾驶技术的未来

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】

Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 一、分布式系统遇到的问题1、服务挂掉的一些原因 二、解决方案三、Sentinel&#xff1a;分布式系统的流量防卫兵1、Sentinel是什么2、Sentinel和Hystrix对比3、Sentinel快速开发4、通过注解的方式来控流5、启动Sen…

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…

机器学习深度学习——seq2seq实现机器翻译(数据集处理)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——从编码器-解码器架构到seq2seq&#xff08;机器翻译&#xff09; &#x1f4da;订阅专栏&#xff1a;机…

工程项目管理系统源码+功能清单+项目模块+spring cloud +spring boot em

​ 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

Markdown使用笔记

Markdown使用笔记 一、段落与强调 important denotes the impossible thing to do Because your ugly appearance, you cannot have a happy ending. 使用*括起来的为斜体 使用**括起来的是粗体 使用~~括起来的是删除线 在句子后面添加<br>即可换行 二、标题 在…

常见期权策略类型有哪些?

这几天在做一个期权策略类型的整理分类&#xff0c;怎么解释期权策略&#xff0c;期权策略是现代金融市场中运用非常广泛、变化非常丰富、结构非常精妙的金融衍生产品&#xff1b;同时也是一种更为复杂也更为灵活的投资工具&#xff0c;下文介绍常见期权策略类型有哪些&#xf…

CI/CD流水线实战

不知道为什么&#xff0c;现在什么技术都想学&#xff0c;因为我觉得我遇到了技术的壁垒&#xff0c;大的项目接触不到&#xff0c;做的项目一个字辣*。所以&#xff0c;整个人心浮气躁&#xff0c;我已经得通过每天的骑行和长跑缓解这种浮躁了。一个周末&#xff0c;我再次宅在…

k8s问题汇总

作者前言 本文章为记录使用k8s遇到的问题和解决方法&#xff0c;文章持续更新中… 目录 作者前言正常配置ingress&#xff0c;但是访问错误添加工作节点报错安装k8s报错使用kubectl命令报错container没有运行安装会出现kubelet异常&#xff0c;无法识别删除k8s集群访问dashboa…

【Apollo】推动创新:探索阿波罗自动驾驶的进步(含安装 Apollo的详细教程)

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

【密码学】维京密码

维京密码 瑞典罗特布鲁纳巨石上的图案看起来毫无意义&#xff0c;但是它确实是一种维京密码。如果我们注意到每组图案中长笔画和短笔画的数量&#xff0c;将得到一组数字2、4、2、3、3、5、2、3、3、6、3、5。组合配对得到24、23、35、23、36、35。现在考虑如图1.4所示的内容&a…

【变形金刚03】使用 Pytorch 开始构建transformer

一、说明 在本教程中&#xff0c;我们将使用 PyTorch 从头开始构建一个基本的转换器模型。Vaswani等人在论文“注意力是你所需要的一切”中引入的Transformer模型是一种深度学习架构&#xff0c;专为序列到序列任务而设计&#xff0c;例如机器翻译和文本摘要。它基于自我注意机…

iOS Epub阅读器改造记录

六个月前在这个YHEpubDemo阅读器的基础上做了一些优化&#xff0c;这里做一下记录。 1.首行缩进修复 由于分页的存在&#xff0c;新的一页的首行可能是新的一行&#xff0c;则应该缩进&#xff1b;也可能是前面一页段落的延续&#xff0c;这时候不应该缩进。YHEpubDemo基于XDS…

pycharm,VSCode 几个好用的插件

pycharm Tabnine AI Code 可以在编写程序的时候为你提供一些快捷方式&#xff0c;增加编程速度 Chinese 对英文不好的程序员来说是个不错的选择&#xff0c;可以将英文状态下的pycharm变为中文版的 ChatGPT 可以跟ai聊天&#xff0c;ai可以解决你80%的问题 &#xff0c;也可以帮…

变形金刚:从零开始【01/2】

一、说明 在我们的日常生活中&#xff0c;无论你是否是数据科学家&#xff0c;你都在单向地使用变压器模型。例如。如果您使用的是 ChatGPT 或 GPT-4 或任何 GPT&#xff0c;那么在为您回答问题的框中是变压器的一部分。如果您是数据科学家或数据分析师&#xff0c;则可能正在使…

【BASH】回顾与知识点梳理(二十九)

【BASH】回顾与知识点梳理 二十九 二十九. 进程和工作管理29.1 什么是进程 (process)进程与程序 (process & program)子进程与父进程&#xff1a;fork and exec&#xff1a;进程呼叫的流程系统或网络服务&#xff1a;常驻在内存的进程 29.2 Linux 的多人多任务环境多人环境…

SAP MM学习笔记23-购买发注的账户分配类型(勘定Category)

SAP中控制财务凭证过账科目的是 账号分配类型&#xff08;勘定Category&#xff09;栏目。 ・账号分配类型&#xff08;勘定Category&#xff09;有&#xff1a; 1&#xff0c;K 原价Center&#xff08;成本中心。用于消耗物料采购 的过账&#xff09; 2&#xff0c;E 得意先…