STM32学习和实践笔记(24):PWM输出实验:呼吸灯

本实验所要实现的功能是:通过TIM3的CH1输出一个PWM信号,控制D7指示

灯由暗变亮,再由亮变暗,类似于人的呼吸。程序框架如下

1)初始化PC6管脚为PWM输出功能

2)PWM输出控制程序

本实验的硬件电路非常简单,只使用到开发板上的LED(D7),因为D7指

示灯接在PC6管脚,而通过对TIM3_CH1复用功能完全重映射就可以映射到

PC6脚。所以可以通过TIM3的CH1输出PWM信号,实现D7指示灯呼吸灯的控

制。

main.c

#include "system.h"
#include "led.h"
#include "SysTick.h"
#include "pwm.h"/*	通过TIM3的CH1输出一个PWM信号,控制D7指示灯由暗变亮,再由亮变暗,类似于人的呼吸。程序框架如下:(1)初始化PC6管脚为PWM输出功能(2)PWM输出控制程序
*/int main()
{u16 i=0;u8 fx=0;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断优先级分组LED_Init();TIM3_CH1_PWM_Init(500,72-1);//PWM频率设为2KHZwhile(1){if(fx==0){i++;if(i==300){fx=1;}}else{i--;if(i==0){fx=0;}}TIM_SetCompare1(TIM3, i); //修改TIMx_CCRx的值控制占空比delay_ms(100);}
}

pwm.c

#include "pwm.h"
#include "led.h"void TIM3_CH1_PWM_Init(u16 period,u16 prescaler)
{GPIO_InitTypeDef GPIO_InitStructure; //为将PC6引脚初始化而声明的结构体变量TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//定时器初始化的结构体变量声明TIM_OCInitTypeDef TIM_OCInitStructure; //初始化PWM输出各参数的结构体变量声明 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能TIM3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能PC端口的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO时钟以便进行端口映射GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;// PC6为复用功能输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	//GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//将通用定时器3的通道1的输出从PA6引脚重映射到PC6引脚TIM_TimeBaseInitStructure.TIM_Period=period;   //装入函数传过来的自动装载值TIM_TimeBaseInitStructure.TIM_Prescaler=prescaler; //装入函数传过来的分频系数TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//1分频(没有分频)TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //设置向上计数模式:从0开始计数到自动重载值后溢出产生中断TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3各参数:自动重装值、分频系统、计数方式等TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_Low;TIM_OCInitStructure.TIM_OutputState =	TIM_OutputState_Enable;TIM_OC1Init(TIM3,&TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能TIMx在CCRx上的预装载寄存器TIM_ARRPreloadConfig(TIM3, ENABLE);//使能 TIMx 在 ARR 上的预装载寄存器允许位TIM_Cmd(TIM3, ENABLE);//开启定时器}

pwm.h

#ifndef _pwm_H
#define _pwm_H#include "system.h"void TIM3_CH1_PWM_Init(u16 period,u16 prescaler);#endif

实际在开发板上测试,因为开发板上不是接的LED,而是接到一个数码管的一段,呼吸灯的效果不明显。

改为下述参数后,呼吸灯的效果就很明显了。

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

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

相关文章

RAG应用全流程

RAG全流程 前提训练一个语义模型(高精度,低精度)训练一个大模型一个知识库一个精度高知识向量库(知识分割后输入高精度语义模型得到)一个精度低知识向量库(知识分割后输入低精度语义模型得到) 应…

基于寄存器的STM32操作流程

寄存器点灯 寄存器操作STM32的好处是不需要依靠外部文件,自由度更高,更为底层,但也更加繁杂。 通过寄存器点灯,需要按照电路结构与手册配置寄存器: 电路结构如下:可知需配置的GPIO为GPIOB5与GPIOE5。 在…

TLV61070A具有0.5V超低输入电压的2.5A同步整流升压转换器适合超级电容供电

前言 最大特点是输入电压可低至0.5V(启动时的最小输入电压为 1.3V),适合作为超级电容的升压转换 特性 输入电压范围:0.5V 至 5.5V 启动时的最小输入电压为 1.3V 输出电压设置范围:2.2V 至 5.5V 两个 69mΩ (LS)/89m…

gitlab设置保护分支

gitlab设置保护分支方法 进入代码仓库首页,找到settings下的repository并点击进入 找到Protected Branches 下的Exoand按钮,并点击展开 可以看到已经存在默认的保护分支,通常是master/main分支,也可以添加新的保护分支 新建保护分…

Debian操作系统的常用指令介绍

Debian是一个流行的Linux操作系统,以其稳定性和安全性而闻名。对于Debian用户来说,掌握一些基本的命令行指令是非常重要的,因为它们可以帮助你更高效地管理系统。在这篇博客中,我们将介绍一些在Debian系统中常用的指令及其功能。 …

13.1 QQ邮箱

1. 邮箱发送 2. 准备工作 3. 整合SpringBoot 3.1 配置 依赖引入 <!-- 邮件服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>application.…

不讲武德,能怼哭你的Chatgpt

这几天逛网站的时候突然发现个新玩意儿&#xff0c;叫做Chatgpt Onima&#xff0c;乍一看&#xff0c;哦原来是Chatgpt 但是&#xff0c;Onima是什么东东&#xff1f;它是我见过最狂的AI Onima 我礼貌的问了一句&#xff1a;你在干嘛&#xff1f; 结果它回复 不知这个攻击性…

通义灵码:智能编码的革命性助手

通义灵码是由阿里云推出的一款基于通义大模型的智能编码辅助工具&#xff0c;它通过先进的人工智能技术&#xff0c;为开发者提供了一系列的智能编码功能&#xff0c;极大地提升了编码效率和质量。以下是通义灵码的一些核心功能和应用案例。 核心功能 代码智能生成 通义灵码…

你知道JSON.stringify()实现拷贝有什么问题吗?

在说 JSON.stringify() 深拷贝之前&#xff0c;我们先说一说深拷贝和浅拷贝的事情吧。 目录 1 为什么要做深拷贝&#xff1f; 2 哪些做法算浅拷贝&#xff1f; 2.1 直接变量赋值 2.2 Object.assign 浅拷贝 3 哪些做法算深拷贝 &#xff1f; 3.1 JSON.stringify() 3.2 …

SpringBoot实现图片上传(个人头像的修改)

SpringBootlayui实现个人信息头像的更改 该文章适合对SpringBoot&#xff0c;Thymeleaf&#xff0c;layui入门的小伙伴 废话不多说&#xff0c;直接上干货 Springbootlayui实现头像更换 前端公共部分代码 HTML页面代码 <div class"layui-card-header" style&quo…

20240502解决ARM32编译器编译quectel-CM时for循环出错的解决

20240502解决ARM32编译器编译quectel-CM时for循环出错的解决 2024/5/2 17:17 缘起&#xff1a;QMIThread.c:2100:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode 1、修改Makefile为ARM32架构&#xff1a; Z:\quectel-CM\Makefile ifneq ($…

基于SpringBoot+Vue的旅游网站系统

初衷 在后台收到很多私信是咨询毕业设计怎么做的&#xff1f;有没有好的毕业设计参考?能感觉到现在的毕业生和当时的我有着同样的问题&#xff0c;但是当时的我没有被骗&#xff0c;因为现在很多人是被骗的&#xff0c;还没有出学校还是社会经验少&#xff0c;容易相信别人。…

【算法设计与分析】实验报告c++python实现(TSP问题、哈夫曼编码问题、顾客安排问题、最小生成树问题、图着色问题)

一、实验目的 1&#xff0e;加深学生对贪心算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用贪心算…

Spring基于AspectJ实现验签切点

文章目录 引言I AspectJ 依赖II 验签切点2.1 匹配方法执行的连接点2.2 设置带有CustomAnnotation注解的方法为切点III 案例:验签2.1 用法2.2 定义注解2.3 定义切面和切点引言 需求:验签 实现:基于AspectJ实现验签切点 I AspectJ 依赖 AspectJ 是一个基于 Java 语言的 AOP …

go稀疏数组

稀疏数组 稀疏数组 稀疏数组 package testimport ("encoding/json""fmt""io/ioutil""log""reflect""testing" )type ValNode struct {Row int json:"row"Col int json:"col"Val int json:&qu…

Spring Cloud Kubernetes 实践 服务注册发现、服务动态配置

一、Spring Cloud Kubernetes 随着云计算和微服务架构的不断发展&#xff0c;k8s 和Spring Cloud成为了当今技术领域的两大热门话题。k8s作为一个开源的容器编排平台&#xff0c;已经在自动化部署、扩展和管理方面取得了巨大的成功&#xff0c;而Spring Cloud则以其丰富的生态…

MFC 列表控件修改实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载&#xff09;》 2、程序功能选中列表控件某一项&#xff0c;修改这一项的按钮由禁止变为可用&#xff0c;双击这个按钮弹出对话框可对这一项的记录数据进行修改&#xff0c;点击确定保存修改数…

基于Spring Boot的体质测试数据分析及可视化系统设计与实现

基于Spring Boot的体质测试数据分析及可视化系统的设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页界面图&#xff0c;体质测试…

Github查找代码项目高级语法(含科研项目查找案例)

基础搜索语法 1.搜索名字 in:name XXX 2.搜索描述 in:description XXX 3.搜索readme in:readme XXX 4.根据stars stars:>2000 5.根据fork fork:>3000 6.仓库大小搜索 size:>5000 [注意: 该处单位大小为 k] 7.根据更新时间 …

免费开源语音克隆-GPT-SoVITS-WebUI只需 5 秒的声音样本

语音克隆-GPT-SoVITS-WebUI 强大的少样本语音转换与语音合成Web用户界面。 功能&#xff1a; 零样本文本到语音&#xff08;TTS&#xff09;&#xff1a; 输入 5 秒的声音样本&#xff0c;即刻体验文本到语音转换。 少样本 TTS&#xff1a; 仅需 1 分钟的训练数据即可微调模型…