基于STM32最简单的呼吸灯

发布者:星空行者最新更新时间:2021-09-28 来源: eefocus关键字:STM32  呼吸灯  逐渐变化 手机看文章 扫描二维码
随时随地手机看文章

下午做了一个呼吸灯,十几行代码,调试好久,才出来一个比较好的呼吸灯效果。下面我示范以下,怎么用最简单的方法实现一个基于STM32的呼吸灯(基于安富莱 STM32-V5开发板,里面用的了ST官方的库函数,还有安富莱他们自己写的Led,Timer函数)


呼吸灯原理:LED灯光在MCU的控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸。


呼吸灯分为两个过程: 亮度有暗到亮(模拟吸气过程,该过程需要1.5S ),在由亮到暗(模拟呼气过程,该过程需要1.5S. )(对成人而言,平均每分钟呼吸16~18次; 对儿童而言,平均每分钟呼吸20次)


下面贴出主要的代码:


void LedOnOff(uint16_t t,uint16_t i,uint8_t no)

bsp_LedOn(no);

bsp_DelayUS(i);

        bsp_LedOff(no);

bsp_DelayUS(t-i);

}

Main函数:


int main(void)

{

int i;

bsp_Init(); /* 硬件初始化 */

while(1)

  for(i=0;i<25000;i+=416)

          LedOnOff(25000,i,3);

  for(i=25000;i>0;i-=416)

          LedOnOff(25000,i,3);

  }


关键字:STM32  呼吸灯  逐渐变化 引用地址:基于STM32最简单的呼吸灯

上一篇:STM32f103核心板点呼吸灯教程
下一篇:stm32f103pwm实现呼吸灯(寄存器)

推荐阅读最新更新时间:2024-11-12 04:51

STM32 UART串口通讯编程方法
在对通讯时间要求比较高的时候,就需要自己对UART的通讯底层直接进行操作。我以STM32单片机为例,讲一下比较快速的UART编程方法。——其实不止是STM32这么处理,我以前使用过51的单片机,TI的MSP单片机,三菱的16位单片机,都可以采用这种方法。 基本的处理思路如下: 1. UART接收的处理方法 打开UART的接收中断,每收到一个字节就放到接收缓冲区,同时更新接收指针。当连续100ms没有收到接收字符,则认为本次帧接收完毕,置位帧接收完成标志,由主程序进行处理。 2. UART发送的处理方法 将需要发送的数据放到发送缓冲区,设置发送长度。然后发送第一个字节,并打开发送中断。在发送中断中判断是否已经发送
[单片机]
STM32 基础系列教程 1- CubeMX+GPIO
前言 学习stm32 GPIO 的使用,设置某一GPIO引脚为输出功能,将对应引脚拉高或拉低输出,同时学会初步认识STM32最新的HAL库的使用, 用代码实现控制GPIO引脚输出产生周期出1s 占空比为50%的PWM波。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 新建STM32 CUBEMX 工程, 双击桌面STM32CubeMX工具 在CubeMX中菜单中点 File à New Project … 在新弹出的界面
[单片机]
<font color='red'>STM32</font> 基础系列教程 1- CubeMX+GPIO
STM32_外部中断之按键控制点亮LED灯
/* 名称:STM32_外部中断之按键控制点亮LED灯 说明:对于STM32来说,其中断种类众多。(除了外部中断还有内部异常)其每个GPIO端口的引脚都可以作为外部中断的中断源。 对其的设置也比C51要复杂的多。对于具体的使用来说可以总结为以下步骤: 1.初始化作为外部中断源的GPIO口。和普通的GPIO的设置类似,不过由于是使用GPIO引脚作为中断源,所以还需要开启复用时钟。 2..配置中断控制器 NVIC。由于有很多的中断,所以STM32用NVIC来控制操作各种中断。配置NVIC主要是配置一些中断源,中断的优先级(包括抢占优先级和相应优先级)还有设置使能中断(类似于C51中开启总开关)。 3..配置中断线EXIT线,是
[单片机]
STM32常见问题解决
STM32 仿真延时程序蹊跷事件 我的 stm32 开发板定了 1ms 定时,到 500ms 让一个灯翻转一次。 用 J-lin k 进行仿真的时候能正常看到灯 是 1 s 亮一次 , 但脱离仿真器重新上电后这灯就变成 了 4 S 亮一次了 。比较奇怪 解决了,晶振的故障,好像跟晶振旁的电容有关。导致了振幅不对。 估计是我们买的电容有问题。 请教 STM32 工作时发热的问题 第一次使用 STM32 的芯片 , 根据手册了解到它的 IO 脚是支持 5V 的电平的 , 于是我利用了几个 IO 引脚直接与 5V 电平的电路联通 , 在硬件调试过程中修改某些连接电阻时出现了芯片击穿 , 几个相关联的引脚与 3.3 V击穿,导通。后来
[单片机]
ch32f103c8t6替换stm32可以吗
首先,让我们来了解一下这两个芯片。STM32是意法半导体公司推出的32位ARM Cortex-M系列单片机,它具有高性能、低功耗和广泛的外设集成等优点,被广泛应用于各种嵌入式应用领域。而CH32F103C8T6是国产的32位ARM Cortex-M3核心的单片机,也具有类似的性能和功能,但是价格更加亲民。 那么,是否可以用CH32F103C8T6替换STM32呢?答案是取决于具体的应用场景和需求。 首先,从硬件方面来看,这两个芯片具有类似的外设集成和引脚布局,因此在一些简单的应用场景下,它们可以相互替换。但是,在一些对性能和稳定性要求比较高的应用中,比如高速通信、实时控制等,使用STM32更加稳定可靠。 其次,从软件方面来看,这两
[单片机]
技术文章—RS-485总线电平异常解决方案解析
摘要:各位工程师是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接失败等情况。出错的原因是什么?本文将从门限电平为你揭秘RS-485组网异常。 RS-485总线是具有结构简单、通信距离远、通信速度高、成本低等优点,广泛应用于工业通讯、电力监控以及仪器仪表等行业。若总线上接有终端电阻,则在总线空闲状态时,RS-485总线AB差分电压可能处于门限电平(±200mV)之内,这时可能会导致通信出错,那么,出错的原因是什么?MCU接收到的数据会发生什么样的变化? 1、 数据出错的原因 如图 1所示为8位数据位无校验位的UART时序图,当使用UART进行通信时,MCU在检测到起始位后
[测试测量]
技术文章—RS-485总线电平异常解决方案解析
基于STM32单片机的64Mbit单对单通信
简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。ARM主控芯片STM32F103,flash芯片为MACRONIX INTERNATIONAL的MX25L6465E,64Mbit。 SPI应该是嵌入式外围中最简单的一种应用了吧!一般SPI应用有两种方法:软件仿真,手动模拟产生时序和应用主控芯片的SPI控制器。 一般采用第二种方法比较好,比较稳定。应用主控芯片的SPI控制器,要点:正确的初始化SPI、操作SPI各寄存器和正确理解flash的时序。下面是过程,采用的是STM32F10X自带的库函数 1、初始化:void SpiFlashIniTIalzaTIon(void); 要知道
[单片机]
基于<font color='red'>STM32</font>单片机的64Mbit单对单通信
STM32开漏,推挽的知识
有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出 以及上拉输入、下拉输入、浮空输入、模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN模拟输入 (2)GPIO_Mode_IN_FLOATING浮空输入 (3)GPIO_Mode_IPD下拉输入 (4)GPIO_Mode_IPU上拉输入 (5)GPIO_Mode_Out_OD开漏输出 (6)GPIO_Mode_Out_PP推挽输出 (7)GPIO_Mode_AF_OD复用开漏输出 (8)GPIO_M
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved