目的:

实现呼吸灯。逐渐亮,逐渐灭。

一.呼吸灯原理分析

外设工作靠电流,因此要改变电流大小,所以要动电阻或电压。

电阻:阻值固定,不可更改。

电压:怎么改变电压大小呢?

方法1:在单位时间(4s),通过GPIO口,给高电平的时间逐渐变长,给低电平时间逐渐变短,来实现灯逐渐变亮。反之,灯逐渐变暗。

方法2:通过PWM实现,跟定时器有关,咱以后再说。

二:代码实现

  1. 设置亮暗的循环周期

    for(i = 0; i < 4000; i++)

    解释:在四秒的单位时间中,时间是逐渐增加的。那我可不可以把高电平的时间逐渐增加Delay(i)呢?把低电平的时间逐渐减少Delay(4000 - i)呢?

  2. 这样单位时间的平均电流就变小了!!!

    如下:

    1s:低低低高

    2s:低低高高

    3s: 低高高高

    4s: 高高高高

    逐渐亮的逻辑:

          for(i = 0; i < 4000; i++){GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}

    逐渐暗一样,只需要把高电平时间逐渐减少,低电平时间逐渐增加

           for(i = 0; i < 4000; i++){GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}
  3. 最后的main函数

    int main(void)
    {int i;Led_Configuration();while(1){for(i = 0; i < 4000; i++){GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}for(i = 0; i < 4000; i++){GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}}
    }

  4. 用到led, 所以要包含led初始化函数, 这个很简单就不说了

    void Led_Configuration(void)
    {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
  5. 全部函数, 复制粘贴就能用, 看看效果

    void Delay(unsigned long nCount);int main(void)
    {int i;Led_Configuration();while(1){for(i = 0; i < 4000; i++){GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}for(i = 0; i < 4000; i++){GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(i);GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);Delay(4000 - i);}}
    }
    void Led_Configuration(void)
    {GPIO_InitTypeDef GPIO_InitStructure;//³õʼ»¯LED(1~4)µÄGPIORCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜAPB2ÍâÉèʱÖÓGPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
    void Delay(unsigned long nCount)
    {while(nCount--  ){}
    }
    
  6. 三:效果展示

  7. 9.呼吸灯

【STM32】8.简单呼吸灯的制作教程,附代码、效果视频相关推荐

  1. android 呼吸灯颜色,小米8青春版呼吸灯颜色如何设置?小米8青春版呼吸灯颜色设置教程...

    小米8青春版呼吸灯颜色如何设置?小米8青春版手机已经正式的发布了,这款手机骁龙660 AIE处理器,该手机支持呼吸灯提醒功能,这项功能是用来提醒我们有未读消息,那么小米8青春版呼吸灯颜色是怎样设置的呢 ...

  2. PyTorch 模型训练实用教程(附代码)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx PyTorch 能在短时间内被众多研究人员和工程师接受并推崇是因为其有着诸多优点,如采用 Py ...

  3. Gmsh剖三维网格教程附代码

    文章目录 前言 一.程序代码 二.程序结果 1. 带有点标号的结果图 2. 没有点标号的结果图 三.总结 前言 前面写过三篇关于Gmsh的教程: 有限元剖网格之Gmsh安装与使用入门 Gmsh剖一维网 ...

  4. uniapp获取手机号(详细教程附代码)

    uniapp获取手机号(详细教程附代码) 一.获取code 二.通过code获取获取openId 和 session_key 三.让用户授权(同意后需要对数据解密) 个人小程序不能使用这个功能,必须是 ...

  5. 【目标检测】基于yolov3的血细胞检测和计数(无bug教程+附代码+数据集)

    多的不说,少的不唠,先看检测效果图: 共检测三类:红细胞RBC.白细胞WBC.血小板Platelets Hello,大家好,我是augustqi.今天给大家带来的保姆级教程是:基于yolov3的血细胞 ...

  6. dw网页制作入学教程_简单的手机网页制作教程

    很多小白会以为建站只能通过电脑,但实际上,用手机也能顺利建站,而且操作非常简单,不需要你懂技术知识哦!下面就跟大家说说手机网页制作教程: 首先,你需要选择一个比较好用的手机网页制作app.尽量找知名度 ...

  7. hbuilderx制作简单网页_简单的手机网页制作教程

    很多小白会以为建站只能通过电脑,但实际上,用手机也能顺利建站,而且操作非常简单,不需要你懂技术知识哦!下面就跟大家说说手机网页制作教程: 首先,你需要选择一个比较好用的手机网页制作app.尽量找知名度 ...

  8. 简单的RPG游戏制作教程

    □企划部份 ◎第一步:决定资料格式 在进入游戏制作的初期,由于有许多和程式有关的资料需要编整,因此担任企划的人员常会忙得乱七八糟.在这个阶段,企划人员必需要和程式商量游戏中资料的格式.举个例子来说,在 ...

  9. ae制作的mg如何用到html,比AE更简单!MG动画制作教程在这里

    说到MG动画制作,最先浮现在脑海的是AE和FLASH.但是,AE和FLASH的难度很大,非专业人士基本上不可能玩转,学习成本很高.那么,有没有简单的.易上手,可以轻松做出拉风MG动画视频的方法? 有, ...

  10. mui 新闻资讯app模板下载_简单易学的app制作教程:6步0编程进行app开发

    平常我们生活总会遇到各种各样的手机app,有没有想过自己制作一款app软件?在很多人的眼里,app开发只能找专业的技术人员,其实现在,普通人也能制作app了.今天就为大家分享一个app制作教程,教你不 ...

最新文章

  1. PCA(主成分分析)降维的概念、作用及算法实现
  2. 树的广度优先搜索(BFS),深度优先搜索(DFS)
  3. mysql索引执行计划_第六章· MySQL索引管理及执行计划
  4. CodeForces - 553C Love Triangles(二分图)
  5. python画二维数组散点图_2个numpy二维数组的散点图
  6. MySQL 常用命令大全
  7. ASP.NET 2.0 中的SqlCacheDependency特性
  8. 谈对阿里应用分层的思考
  9. opencv-Haar特征
  10. 6目摄像头照片球面投影变换拼接全景图片
  11. win10查看无线密码
  12. 【PyQt】重写系统事件之拖动改变窗口大小
  13. 记录一下通过QQ发送apk安装失败原因。
  14. Lepus安装与配置
  15. 学UG编程一定要把握的曲面驱动的办法、切削区域、切削类型
  16. 小米2019秋招软件开发笔试题A选择部分解析
  17. 计算机大数据的前景方向_研究未来计算机大数据的发展方向
  18. 【Emmet 的使用手册(知识点超全版本)】
  19. 51Nod-1298 圆与三角形
  20. 华硕Prime B250M-K+英特尔i3 7100 3.9GHz+HD 630黑苹果EFI引导文件

热门文章

  1. 爬虫豆瓣top250
  2. IPC Hi3518EV300开发板——1. Linux系统移植
  3. 【资源分享】分享十个历史版本的eclipse安装包
  4. 详细解析堆排序java实现
  5. python udp socket通信
  6. discuz 门户diy实现翻页功能的修改记录
  7. Office 2007 Pro/Ent 简体中文版下载
  8. javaweb网上鞋店
  9. leaflet+vue:色斑图的实现大体步骤
  10. mid制作乐谱_【图片】分享一个自己编写的打谱软件,支持生成简谱、乐谱演奏、MID输出_简谱吧_百度贴吧...