【stm32/CubeMX、HAL库】嵌入式实验六:定时器(2)|PWM输出

参考:

【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=13&share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

《嵌入式系统基础与实践》刘黎明等编著,第九章定时器,PWM从P289开始。

【【STM32教程】入门教程(基于HAL库+CubeMX+MDK-ARM)】 https://www.bilibili.com/video/BV1y7411m7gg/?share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

定时器引脚映射

https://blog.csdn.net/weixin_54015326/article/details/135920496

参看上面的文章或者查看手册(8.3.7):

实验内容

2、PWM 输出设计。时钟频率为 72Mhz,采用定时器,PWM 输出。

(1)设计 0.1 毫秒延时,设计占空比 50%,全彩灯 RGB_R.

RGB_R引脚PB13,根据上图,使用TIM1_CH1N通道。

 下面的CH polarity选择LOW,pulse设为50,表示占空比为50%(50%=50/(100-1+1))

 注意要确认时PB13作为通道复用的引脚

无需写其他代码。

(2)设置 KB1 调整占空比,5 级调整,循环按键。

KB1对应引脚PE0,设置内部上拉,按下为低电平,设置为下降沿触发中断:

 勾选该通道的中断,抢占优先级设为1:

 中断回调函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	HAL_Delay(10);//延时,用来消抖
	
  if(GPIO_Pin==GPIO_PIN_0) {
		
		if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_0)==RESET){
		  
	   pwm_val=levels[mindex];
			mindex=(mindex+1)%5;
			HAL_Delay(1);
		}
	}
	    
	flag=1;
	
}

 主函数:注意开启CH1N的PWM输出跟一般定时器写法不一样,请看:

https://www.bilibili.com/read/cv22069045/

普通的启动:

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) 
//定时器 PWM 输出启动函数

  /* USER CODE BEGIN 2 */

	
	/* 定时1互补输出PWM */
	HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);
	
	
	__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

if(flag==1){
		__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);
		HAL_Delay(1);
		flag=0;
		}
    /* USER CODE END WHILE */
		
		
  }

(3)设计全彩灯 RGB_R 呼吸渐变效果。

大部分和(2)一样,注释掉(2)在while里的部分,添加:

while(pwm_val<100){
		    pwm_val++;
		    __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);
			  HAL_Delay(1);
		}
		while(pwm_val){
		    pwm_val--;
		    __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);
			  HAL_Delay(1);
		}
		
		HAL_Delay(200);

实现简单的呼吸效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

更适合国内的远程访问方法:自建根服务器基于节点小宝虚拟内网

网盘限速&#xff1f;异地出差忘文件&#xff1f;出差异地办公&#xff0c;访问公司OA、ERP、CRM系统、文件服务器等&#xff0c;快速组建个人局域网&#xff0c;家庭影院共享&#xff0c;享受高质量的视听体验。等等这样的场景&#xff0c;稳定靠谱的远程访问能力显得就更加至…

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大规模图像识别的深度卷积神经网络 VGG&#xff08;牛津大学视觉几何组&#xff09; 认识数据集&#xff1a;ImageNet的大规模图像识别挑战赛 LSVRC-2014&#xff1a;Image…

FreeRTOS队列之向队列发送消息

本篇文章记录我学习FreeRTOS队列相关的知识&#xff0c;主要是关于向队列发送消息的部分。 一、函数原型 创建好队列以后就可以向队列发送消息了,FreeRTOS提供了8个向队列发送消息的API函数。 1、函数xQueueSend()、xQueueSendToBack()和xQueueSendToFront() 这三个函数都是用于…

windows11下,使用工具验证下载的iso文件完整性

windows11下&#xff0c;要验证下载的iso文件是否正常&#xff0c;可以使用工具生成md5值&#xff0c;再与下载源提供的md5值进行比较&#xff0c;相同&#xff0c;说明下载的正常。 命令如下&#xff1a; certutil -hashfile iso文件名 md5 如下面的例子&#xff0c;生成d…

java nio FileChannel堆内堆外数据读写全流程分析及使用(附详细流程图)

这里是小奏,觉得文章不错可以关注公众号小奏技术 背景 java nio中文件读写不管是普通文件读写&#xff0c;还是基于mmap实现零拷贝&#xff0c;都离不开FileChannel这个类。 随便打开RocketMQ 源码搜索FileChannel 就可以看到使用频率 kafka也是 所以在java中文件读写FileCh…

高奇琦:从大国协调到全球性机制:人工智能大模型全球治理路径探析

内容提要 人工智能大模型全球治理的关键是对大模型进行科学分类。大模型可以分为超大模型和一般模型。对于超大模型的治理&#xff0c;可以参考核武器治理的思路&#xff0c;重点是实现超大模型的有限发展和不扩散。对于一般模型而言&#xff0c;要在安全可控的基础上发挥其对…

昂达固态硬盘数据恢复方法:全面解析与操作指南

在数字化时代&#xff0c;数据已经成为我们生活和工作中不可或缺的一部分。而固态硬盘&#xff08;SSD&#xff09;由于其读写速度快、抗震性强等优点&#xff0c;慢慢取代了传统的机械硬盘&#xff0c;成为我们存储数据的主要选择。然而&#xff0c;即便再先进的存储设备&…

OrangePi AIpro初体验之图片视频检测案例真实测评

OrangePi AIpro简介 OrangePi AIpro官网 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;其搭载了昇腾AI 处理器&#xff0c;可提供8TOPS INT8 的计算能力&#xff0c;内存提供了8GB 和16GB两种版本。可以实现图像、视频等多种数据分析与推理…

网页提示“非私密连接”是为什么?

网页提示“非私密连接”&#xff08;英文提示可能是 "Your connection is not private" 或 "Your connection is not secure"&#xff09;主要是因为浏览器无法验证你正试图访问的网站的SSL/TLS证书&#xff0c;或者是证书存在问题&#xff0c;从而无法建立…

【机器学习】机器学习在信息安全领域中的典型应用

&#x1f680;&#x1f680;&#x1f680;传送门 &#x1f512;机器学习在信息安全领域中的典型应用&#x1f4d5;利用机器学习检测恶意行为并阻断攻击&#x1f308;使用机器学习分析移动终端安全状况⭐借助机器学习提高信息安全分析水平&#x1f3ac;依靠机器学习自动完成重复…

javaEE—图书管理系统(基础代码版)

前言&#xff1a; 本篇博客是集合了javaEE所学的知识构建的一个基础框架&#xff0c;讲述着面向对象的过程是如何做到多对象交互协作完成框架的构建的。利用了数组&#xff0c;接口&#xff0c;类和对象&#xff0c;抽象类&#xff0c;Object类等知识来完成。 后续会加入数据…

钕铁硼表面磷化处理

大家都知道烧结钕铁硼易氧化、易腐蚀&#xff0c;日久将造成磁性能的衰减甚至丧失&#xff0c;所以使用前必须进行严格的防腐处理。在之前的文章中已经向大家介绍过与烧结钕铁硼表面处理相关的知识和电镀的工艺流程&#xff0c;除了电镀之外&#xff0c;钕铁硼表面处理还可采用…

zstd库数据压缩与解压缩

在 Visual Studio 2019 中使用 C 的 zstd 库进行数据压缩与解压缩 在今天的博客中&#xff0c;我们将探讨如何在 Visual Studio 2019 中使用 zstd 库进行高效的数据压缩和解压缩。zstd&#xff08;也称为 Zstandard 或 zstd&#xff09;是由 Facebook 开发的开源压缩库&#x…

数据结构中树的一些基本概念

前言&#xff1a;带你认识二叉树从基本概念开始&#xff0c;步步深入。 目录 树的概念和其中比较重要的基本概念 对概念的深度解析&#xff1a; 树的结构应该如何实现呢&#xff1f; 树的分类&#xff1a; 完全二叉树与满二叉树&#xff1a; 树的概念和其中比较重要的基本…

嵌入式进阶——数码管

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 数码管结构移位寄存器原理图移位寄存器数据流程移位寄存器控制流程移位寄存器串联实现数码管显示 数码管结构 共阴与共阳 共阳数码…

Java SE基础知识(11)

知识梳理&#xff1a; 记不住就看API帮助文档中的pattern类 开发过程中&#xff0c;正则表达式一般不自己写&#xff0c;安装插件any-rule 选择自己想要的正则表达式格式&#xff0c;稍作修改即可

科学提效|AI融入零售业,未来零售的创新之旅

零售业正经历着由人工智能&#xff08;AI&#xff09;引领的转型浪潮。AI在零售和消费品&#xff08;CPG&#xff09;行业的应用前景广阔&#xff0c;它正以多种创新方式重塑行业的运作模式。且随着技术的不断进步&#xff0c;AI在零售业的应用将变得更加广泛和深入。AI不仅能够…

解锁Facebook的神秘密码:探索社交媒体的奥秘

在当今数字时代&#xff0c;社交媒体已经渗透到我们生活的方方面面。Facebook&#xff0c;作为这个领域中最为瞩目的平台之一&#xff0c;不仅连接着全球数十亿用户&#xff0c;还承载着庞大的信息流和交流网络。然而&#xff0c;Facebook的背后是一个充满着技术和隐私的世界&a…

汇凯金业:纸黄金和实物黄金的价格有什么区别

纸黄金和实物黄金的价格主要受到全球黄金市场行情的影响&#xff0c;二者的基础价格并无太大差异&#xff0c;但在具体交易时&#xff0c;可能会存在一些价格上的区别&#xff0c;这些差异主要来自以下几个方面&#xff1a; 交易费用与管理费&#xff1a;纸黄金交易通常需要支…

Jenkins配置(插件/角色/凭证)

目录 传送门前言一、Jenkins插件管理1、更换为国内下载源2、中文汉化插件下载&#xff08;不推荐&#xff09;3、低版本Jenkins爆红插件安装4、低版本Jenkins插件持续报错解决办法 二、Jenkins用户角色三、Jenkins凭证管理&#xff08;svn/git&#xff09;1、Username with pas…