STM32笔记--呼吸灯

C语言实现呼吸灯(HAL库) 1. 呼吸灯原理 呼吸灯的实现可以通过控制灯的亮度连续变化,当变化的频率大于24帧时,肉眼看上去就会逐渐变暗,逐渐变亮。 2. PWM控制亮度 PWM通过设置亮度在一段时间内的占空比,亮的百分比多,人眼看到的就亮,反之就是暗。 关于PWM的块不打算展开说,这里针对呼吸灯的PWM详细说明。 /* * 描述 :呼吸灯PWM初始化 * 参数 : * 无 * 返回 : * 无 */ void bspBreathLedTIMInit(void) { TIM_Clock 阅读详情

     昨天看了PWM的产生,今天就来尝试一下呼吸灯的制作,如果PWM理解比较透彻的话,呼吸灯的制作就十分简单,原理很简单,就是改变CCR寄存器的值,来按时间输出占空比不同的方波即可,原理十分简单,在这里附上定时器输出PWM的代码和中断函数中的代码(其中呼吸灯有个数组文件需要用matlab生成),在此也不多加赘述。

   TIM3_Breathing_Init();
void TIM3_Breathing_Init(void)
{
	TIM3_GPIO_Config();
	TIM3_Mode_Config();	
}

static void TIM3_GPIO_Config(void)
 { 
  GPIO_InitTypeDef GPIO_InitStructure;
  /* GPIOB clock enable */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 ; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}

static void TIM3_Mode_Config(void)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;									
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 						 
  TIM_TimeBaseStructure.TIM_Period = 255;       							
  TIM_TimeBaseStructure.TIM_Prescaler = 1999;	    							
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;		
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  	
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

 
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;	    				
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	
  TIM_OCInitStructure.TIM_Pulse = 0;										  				
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  	

  TIM_OC3Init(TIM3, &TIM_OCInitStructure);	 										
  TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);						
  TIM_ARRPreloadConfig(TIM3, ENABLE);			 									
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);                   										
	TIM_ITConfig(TIM3,TIM_IT_Update, ENABLE);												
	NVIC_Config_PWM();	
	
}


static void NVIC_Config_PWM(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

//中断函数
void TIM3_IRQHandler(void)
{	
	static uint8_t pwm_index = 0;			
	static uint8_t period_cnt = 0;			
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)	//TIM_IT_Update
 	{			
			period_cnt++;
			if(period_cnt >= 10)													{
				
				TIM3->CCR3 = indexWave[pwm_index];	
				pwm_index++;															
				if( pwm_index >=  40)												{
					pwm_index=0;								
				}
				
				period_cnt=0;												
		}
		TIM_ClearITPendingBit (TIM3, TIM_IT_Update);	
	}
}
uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,
	107,143,191,255,255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};





【STM32学习笔记-LED呼吸灯】 STM32学习笔记-点亮LED灯 文章目录STM32学习笔记-点亮LED灯一、呼吸灯原理二、呼吸灯代码1、main.c2、led.c3、led.h三、代码分析 一、呼吸灯原理 占空比:占空比指的是高低电平所占的时间的比率(即LED灯点亮和熄灭的时间比例) 以下利用点亮LED灯的原理进行说明 GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1) delay_us(500); GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0) delay 阅读详情

相关推荐

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记

想学一下定时器,然后在查阅资料的时候,发现定时器的功能很强大,所以通过学习一个实例来验证一下,本次是通过定时器的PWM功能实现呼吸灯。 实验的硬件平台是STM32F103ZET6,软件是MDK5,STM32CUBEMX. 在学习cubemx之后发现这个软件是真的强大。 首先勾选引脚,在RCC的HSE选择Crystal/Ceramic Resonator ...

build_oooxf的博客 6394

初学51单片机之PWM实例呼吸灯以及遇到的问题(已解答)

事实上主函数第一次执行 ConfigPWM()的时候,把PWMOUT赋值为1,是可以进入一次if函数的,然后会经过9ms的等待再次进入中断进入else()函数,从此后就再也无法进入if函数了,后续现象和视频一样。第二:在debug时间误差的时候笔者发现,定时器0中断,程序指针一直无法进入if函数,直接进入了else函数,导致中断时间间隔一直都是1ms,看视频。总结:不知道是keil5软件本身有问题,还是笔者的keil5软件有问题,还是笔者哪里没有考虑到,路过的小伙伴如果知道缘由,

firewood2024的博客 3789

嵌入式系统学习笔记之“定时器呼吸灯”——STM32(六)

本实验旨在通过使用定时器和PWM(脉冲宽度调制)技术实现一个呼吸灯效果。

weixin_71260630的博客 2880

按键呼吸灯(循环)

入门 stm32 实验

ming_chen_jing的博客 1788

10、江科大stm32视频学习笔记——PWM驱动led呼吸灯、驱动舵机、驱动直流机

stm32——PWM波应用,涉及led呼吸灯、驱动舵机、驱动直流机

weixin_45981798的博客 5187

STM32之呼吸灯程序

听说呼吸灯是很久以前的事情了,那时候刚刚学习51单片机,没有单片机的基础。后来在网上看到了一个呼吸灯的电路图,甚是复杂,根本看不懂,无奈之下放弃了呼吸灯的制作。在接触了STM32后,发现呼吸灯还是比较容易实现的,而且不需要什么硬件知识就可以完成。于是开始尝试做呼吸灯了。

STM32+PWM+DMA驱动WS2812彩灯模块(附源码)

STM32+PWM+DMA驱动WS2812彩灯模块

qq_51182593的博客 3万+

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 295

NRF52840学习历程(十)PWM04共同模式下之双序列合成输出_呼吸灯+闪烁灯组合

时间在2021年2月5日,寒假放假在家好好学一学nRF52840 今天还在感冒,休息一波 开发板:初雪的100出头那块 NRF52840 EVAL KIT 下载工具:JINLK V11(最好是JLINK V9以上 也有人用JLINK OB也行,其他的下载器诸如STLINK,DAP不建议用) 版本号: KEIL5编程环境,CMSIS为5.3.0, NRF52840的CMSIS为8.35.0 参考资料: NRF52840-Eval-Kit-Schematic.pdf(原理图) nRF..

jwdeng1995的博客 890

模拟IC设计避坑:手把手教你用Cadence仿真恒定跨导轨到轨运放(附完整工艺库文件)

本文详细解析了使用Cadence仿真恒定跨导轨到轨运放的全流程,涵盖电路原理、工艺库配置、尺寸设计及仿真分析。通过1:3电流镜补偿技术实现跨导稳定,提供CSMC 0.25um工艺下的实战案例,帮助工程师规避设计陷阱,提升模拟IC设计效率。

weixin_30952535的博客 496

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 263

STM32学习笔记之呼吸灯实验

STM32呼吸灯实验(寄存器版本) 在继定时器中断之后,开始PWM的学习, 脉冲宽度调制(PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。 以下就是原子的PWM的原理图 图中,我们假定定时器工作在向上计数PWM模式,且当CNT<CCRx时,输出0,当CNT>=CCRx时输出1。那么就可以得到如上的PWM示意图:当CNT值小于CCRx的时候,IO输出低电平(0),当CNT值大于等于CCRx的时候,IO输出高电平(1),当CNT达到ARR

xyycrossworld的博客 2252

【FPGA】DDR3调试总结

DDR3管脚根据不同的功能可以分为:数据组、地址组、控制组和电源组。如图上所示,共96个管脚。

m0_51679724的博客 4967

STM32:TIM中断配置应用(1)呼吸灯:库函数讲解笔记+代码讲解笔记

TIM库、OC、CC、输出比较、引脚重映射、JTAG、SWD、呼吸灯

北邮22级信通一枚 1494

若依开源框架(分离版)在人大金仓数据库下使用

对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。

🐱喵测实验室 5942

用Playwright MCP让AI帮你完成所有浏览器自动化

Playwright MCP(Model Context Protocol)是微软基于 Playwright 框架推出的 AI 浏览器自动化新协议。它通过结构化快照数据和自然语言指令结合大型语言模型(如 GPT),实现无需编码的网页交互。无论你是要测试登录流程、抓取价格数据,还是用 AI 远程控制浏览器,Playwright MCP 都能大幅降低门槛,让“说人话”也能驱动自动化脚本。本篇将从功能介绍、技术架构、使用方法到实际场景,带你全面理解这一自动化革命。

todoitbo的博客 3万+

[STM32CubeMX]学习笔记3:PWM呼吸灯

使用标准库实现本次功能的源代码已上传: https://github.com/yzmj0986/STM32_Std.lib_PWM.git Tips:预分频系数和自动重装值的理解(二.2中) MCU:STM32F103ZET6 IDE: MDK-ARM V5 +STM32CubeMX5.0.0 功能描述:将定时器TIM3全映射到外部端口PC6和PC7,设置输出模式为PW...

zytjasper的博客 6030

DSP开发环境及工具之CCS

CCS( Code Composer Studio)是美国德州仪器(TI)公司的嵌入式处理器的开发环境,可以用于TI公司的各个系列处理器的软件开发和调试,如DSP,MCU,ARM等。CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件。从其名称可以看出,该文件的作用是指明如何链接程序的。编辑完C语言设置,添加cmd文件之后,然后检查编译配置选项。主要的操作都是在这个窗口之间做相应的切换。

小柚子的博客 4311

STM32-笔记18-呼吸灯

使用定时器 4 通道 3 生成 PWM 波控制 LED1 ,实现呼吸灯效果。频率:2kHz,PSC=71,ARR=499利用定时器溢出公式周期等于频率的倒数。故Tout = 1/2KHZ;Ft = 72MHZPSC=71(喜欢设置成Ft的倍数),ARR=499其实PSC与ARR的组合有很多种,上面只是一种。

L_1068的博客 1258

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试

本文详细介绍了在 CentOS 7 系统上安装与配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载与部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行与 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3237

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

写pwm波函数可以调用stm32固件库函数直接生成,也可以通过中断来写pwm波;下面就介绍这两种方法,这里先说一下呼吸灯,其原理就是让LED灯由暗变亮再由亮变暗循环,类似呼吸的效果,亮-暗是一个大周期,而LED灯亮或暗是由其刷新的占空比决定,高电平时间占比长则亮,反之则暗; stm32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM...

abcvincent的博客 8064

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STM32学习笔记一(LED,跑马灯,呼吸灯)

本人是初学者,水平有限,写个简单的学习笔记方便大家参考,同时也方便自己查缺补漏。

huazhen1234的专栏 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

STM32学习笔记 定时器总结和呼吸灯

第四章 定时器和呼吸灯 4.1基本定时器 先根据数据手册查看自己芯片对应的定时器分类。 这里选用STM32F1系列,STM32F1系列共有 8 个定时器,分为基本定时器(TIM6 和 TIM7),通用定时器(TIM2/3/4/5)和高级定时器(TIM1/8)。 ①时钟源 定时器时钟TIMxCLK,即内部时钟CKINT,经APB1预分频器后分频提供,如果APB1预分频系数等于1,则频率不变,否则频率乘以2,库函数中APB1预分频的系数是2,即PCLK1=36M,所以定时器时钟TIMxCLK=36*2=72

qq_52670281的博客 5456

STM32CubeMX学习笔记(13)——PWM输出(呼吸灯)使用

一、PWM简介 **脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调试。**是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。 例如上图中,图b)是微处理输出的数字信号,实际上他接到电机等功率设备上时,效果相当于图a)。这就是PWM调制。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输

Leung的博客 1万+

【STM32】STM32学习笔记-PWM驱动LED呼吸灯 舵机 直流电机(16)

【代码】【STM32】STM32学习笔记-PWM驱动LED呼吸灯 舵机 直流电机(16)

Print World的专栏 1万+

STM32F1开发指南笔记7----STM32呼吸灯

依据人体视觉暂留效应,利用简单的延时函数形成一个PWM周期,输出不同占空比的LED灯亮灭状态,视觉上达到呼吸灯的效果,逐渐暗-逐渐亮-逐渐暗…。 #include "stm32f10x.h" #include "delay.h" #include "sys.h" void LED_Init(void); int main(void) { u8 MENU; u16 t,i; ...

qq_38958704的博客 789
上一篇: STM32笔记--定时器(PWM产生)
下一篇: STM32笔记--DAC(正弦波发生)
VCA821
博客等级 码龄9年 395粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值