STM32开发——定时器led、PWM呼吸灯

news2024/11/26 19:52:17

目录

1.定时器控制LED亮灭

2.PWM呼吸灯——定时器


1.定时器控制LED亮灭

定时器分类:
基本定时器(TIM6~TIM7)
通用定时器(TIM2~TIM5)
高级定时器(TIM1和TIM8)

 通用定时器介绍:

  •  16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。
  • 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值。
  • 4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:

A.输入捕获
B.输出比较
C.PWM 生成(边缘或中间对齐模式)
D.单脉冲模式输出

  • 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
  • 如下事件发生时产生中断/DMA:

A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
C.输入捕获
D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路
F.触发输入作为外部时钟或者按周期的电流管理

定时器计数模式:

定时器溢出时间计算公式:

 需求:使用定时器中断方法,每500ms翻转一次LED1灯状态。
1. RCC配置
2. LED1灯配置
3. 时钟数配置
4. TIM2配置

 

 

5. 工程配置
6. 重写更新中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}

 7. 启动定时器
在main.c中,在定时器初始化命令之后加入以下代码:

HAL_TIM_Base_Start_IT(&htim2);

2.PWM呼吸灯——定时器

STM32F103C8T6 PWM资源:
高级定时器(TIM1):7路
通用定时器(TIM2~TIM4):各4路
PWM输出模式:

  1. PWM模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。
  2. PWM模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。

 PWM占空比:
由TIMx_CCRx寄存器决定。不能超过ARR的值

需求:使用PWM点亮LED1实现呼吸灯效果。

LED灯为什么可以越来越亮,越来越暗?
这是由不同的占空比决定的。
如何计算周期/频率?
假如频率为 2kHz ,则:PSC=71,ARR=499
LED1连接到哪个定时器的哪一路?
学会看产品手册:

 

 或者直接点击芯片

 开始实战!
1. 设置时钟
2. 设置定时器

 记得把极性设置为Low,因为LED灯是低电平才亮。
3. 配置工程
4. 业务代码

// 定义变量
uint16_t pwmVal=0; //调整PWM占空比
uint8_t dir=1; //设置改变方向。1:占空比越来越大;0:占空比越来越小
// 使能 Timer4 第3通道 PWM 输出
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);  //放在在定时器初始化后
// while循环实现呼吸灯效果
while (1)
{
HAL_Delay(1);
if (dir)
pwmVal++;
else
pwmVal--;
if (pwmVal > 500)
dir = 0;
if (pwmVal == 0)
dir =1;
//修改比较值,修改占空比
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
}

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

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

相关文章

jenkins接口自动化测试,allure报告怎么清楚上一个项目的用例报告?

持续集成(CI Continuous integration/CD Continuous Deployment)的含义其实是在研发过程中团队开发成员持续性的将他们的工作集成到一个完整流程中&#xff0c;通常每个成员每天至少集成一次&#xff0c;每次集成都通过自动化的构建&#xff08;包括编译&#xff0c;发布&#…

【数据分享】1929-2022年全球站点的逐月平均降水量(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 之前我们分享过1929-2022年全球气象站点的逐月平均气温、逐月最高气温…

【Windows】解决无线网卡TL-WN823N免驱版无法上网的问题

【Windows】解决无线网卡TL-WN823N免驱版无法上网的问题 1、背景2、解决办法3、查看适配器 1、背景 下午去前台领了一个"300M无线USB网卡"。 插到台式机上发现不能跳出WLAN网络信号。 我观察到每次插入无线上网卡&#xff0c;在window设置–>设备–>其他设…

员工资料导入

人事管理项目-员工资料导入 后端接口实现前端实现 既然有员工资料导出需求&#xff0c;当然也就有导入需求。对前端而言&#xff0c;员工资料导入就是文件上传&#xff0c;对后端而言&#xff0c;则是获取上传的文件进行解析&#xff0c;并把解析出来的数据保存到数据库中。 后…

Springboot实验二(用配置文件的方式整合Mybatis)仅供参考!

&#xff08;1)articleList.html 效果如下: <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org/"> <head> <meta charset"UTF-8"> <title>article 列表</title> </head> <body…

数论与组合数学 期末总结(未完

自然数的基本性质 数学归纳法(Principle of Mathematical Induction) n n 0 nn_{0} nn0​时成立&#xff0c;且 n k nk nk成立 ⇒ n k 1 \Rightarrow nk1 ⇒nk1成立&#xff0c;则定理对 n ≥ n 0 n\ge n_{0} n≥n0​成立良序定理(Well Ordering Principle) 每个非空集合…

网络编程 lesson7 广播组播和本地通信

目录 广播 什么是广播&#xff1f;&#xff08;了解&#xff09; 广播发送流程 广播接收流程 组播 什么是组播&#xff1f; 组播地址 组播结构体 组播发送流程 组播接收 本地套接字通信 什么是本地套接字通信&#xff1f; 特性 核心代码 程序实例 服务端 客户…

SpringCloud源码解析-gatewayopenFeign

SpringCloud高级应用-源码解析 1. gateway 源码解析1.1 自动装配1.2 核心装配1.2.1 GatewayClassPathWarningAutoConfiguration1.2.2 GatewayAutoConfiguration1.2.3 GatewayLoadBalancerClientAutoConfiguration1.2.4 GatewayRedisAutoConfiguration 1.3 Gateway 工作机制1.3.…

分布式任务调度XXL-JOB

XXL-JOB 分布式任务调度平台特点 职责分离&#xff0c;任务调度&#xff0c;任务执行解耦 执行一致性&#xff0c;任务执行不会多次重复执行 丰富的路由策略&#xff08;指定那个执行实例执行&#xff09; 阻塞处理 &#xff08;触发的任务&#xff0c;上一次没有执行完&am…

Android Studio类ChatGpt的免费AI编程助手

ChatGpt大火&#xff0c;带动了AI工具的发展&#xff0c;介绍两款免费的AI编程助手&#xff0c;一款用于输入关键字自动输出代码&#xff0c;一款则是自动补全提示&#xff0e; 可支持大部分代码编辑器&#xff0c;这里主要介绍Android Studio上安装使用&#xff0e; Bito 支…

来阿里面试,问我未来3-5年规划,我给领导画个大饼...

在面试的过程中是不是经常被面试官问未来几年的职业规划?你会答吗&#xff1f;是不是经常脑袋里一片空白&#xff0c;未来规划&#xff1f;我只是想赚更多的钱啊&#xff0c;哈哈哈&#xff0c;今天我来教大家&#xff0c;如何给面试官画一个大饼&#xff0c;让他吃的不亦乐乎…

c++day4 ——homework

1.思维导图 2. 整理类中特殊成员函数&#xff1a;构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数&#xff0c;拷贝赋值函数的使用和实现 特殊成员函数的使用和实现&#xff1a; ① 构造函数 功能&#xff1a;当使用类实例化对象时&#xff0c;给类对象初始化空间以及初…

基于RK3399+FPGA的地面测试台多参数数据记录仪方案(一)硬件设计

地面测试台属于某型号数据记录仪的配套测试设备&#xff0c;主要工作包括&#xff1a;飞行前对记录 仪的功能检查&#xff0c;测试其工作状态和稳定性&#xff1b;实验结束后对已存储到记录仪中的数据进行 回读和进一步处理&#xff0c;通过数据分析得出导弹各项参数在飞行试…

苹果的首款“头显设备”Vision Pro在短期内必将被Meta Quest超越

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;Vision Pro是苹果在今年的WWDC2023开发者大会上发布的一款结合了增强现实(AR)和虚拟现实(VR)的“头显设备”&#xff0c;Vision Pro 的最终售价高达 3499 美元&#xff08;约合…

观察级水下机器人使用系列之二多普勒速度记录仪(DVL)

本文主要讲述观察级水下机器人所使用的多普勒速度记录仪器&#xff08;DVL&#xff09;&#xff0c;见下图。多普勒测速技术自1960年开始研究&#xff0c;1980年开始实现商业化&#xff0c;80年代中后期&#xff0c;窄带多普勒测速技术研究已日趋成熟&#xff0c;90年代以后&am…

初学者应该怎么学git-上

初学者应该怎么学git-上 Git 下载&安装 官网 地址: https://git-scm.com/ 下载版本: Git-2.33.0.2-64-bit.exe 下载慢&#xff0c;可以到镜像下载: http://npm.taobao.org/mirrors/git-for-windows/ 卸载 说明&#xff1a;如果安装过&#xff0c;可以卸载和老师版本…

详解Java中static的使用及其注意事项

1.可以用来修饰的结构&#xff1a; 主要用来修饰类的内部结构 属性、方法、代码块、内部类 2.static修饰属性&#xff1a;静态变量&#xff08;或类变量&#xff09; ​ 2.1 属性&#xff0c;是否使用static修饰&#xff0c;又分为&#xff1a;静态属性 vs 非静态属性(实例…

Yolov5更换上采样方式( 最近邻 / 双线性 / 双立方 / 三线性 / 转置卷积)

原文地址: https://www.iotword.com/3138.html 1. 常用上采样方式介绍 1. 1 最近邻插值(Nearest neighbor interpolation) >>> input torch.arange(1, 5, dtypetorch.float32).view(1, 1, 2, 2) >>> input tensor([[[[ 1., 2.],[ 3., 4.]]]])>>&g…

【goframe】(4):使用goframe 接入grpc服务,非常的方便,可以简单的构建和生成服务代码,并且启动方法也特别简单,使用代码本地调用成功

目录 前言1&#xff0c;关于grpc微服务2&#xff0c;修改生成代码3&#xff0c;相关的goframe的grpc配置4&#xff0c;总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 未经博主允许不得转载。 博主CSDN地址是&#xff1a;https://b…

3.变量|Java学习笔记

文章目录 数据类型整型的类型浮点型的类型字符类型boolean类型 基本数据类型转换自动类型转换强制类型转换 基本数据类型和String类型的转换 变量 变量名 值 数据类型 https://www.matools.com/# 数据类型 整型的类型 浮点型的类型 关于浮点数在机器中存放形式的简单说明&…