当前位置: 首页 > news >正文

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇大鹏一日同风起,扶摇直上九万里。假令风歇时下来,犹能簸却沧溟水。📈


目录

看原理图

 设置STM32CubeMX

配置文件

 初始化LED函数

实例运用


看原理图

可以看到控制LED灯的是PC8~PC15,由于图中最左边是VDD,也就是高电平控制的,所以当PC8~PC15为高电平的时候,LED亮,为低电平的时候,LED灭。同理PD2低电平关,高电平开。

设置STM32CubeMX

打开我们已经建立好的工程(如何初始化STM32工程)中的STM32CubeMX

将PC8~PC15和PD2引脚设置为输出模式

 然后点击红框中的System Core中的GPIO,在弹出来的中间界面中选中PC8~PC15,根据原理图的分析,我们将这些引脚置为高电平(high)。

同理,将PD2置为低电平(low)

 然后右上角点击生成代码(GENERATE CODE)即可

配置文件

首先打开Keil5,新建两个文件,命名为led.c和led.h,并加入到我们的bsp文件中去。

然后再左侧工程文件右击,添加一个组(Add Group...)

创建成功后,双击红框中的bsp,找到你的bsp文件路径下的lcd.c,并添加进去

 接下来我们要将我们写得bsp模块代码路径添加到默认路径中去

点击魔法棒,点击C/C++,根据图中数字引导,在第五步时将bsp的路劲添加进去即可(记得点OK 哦)

初始化LED函数

初始化一个函数前,我们首先要明白要将这个设备初始化成上面样子的,如LED灯,我们一般希望LED灯初始化后,是全部熄灭的,从这个角度来些代码

另外我们有时还希望初始化能集成一些其他功能,如LED的初始化,我们可以使它拥有点亮灯的功能,于是有如下代码(特别要理解第一句与第二句代码的关系哦)

/*
LED_Disp:全灭LED灯,然后点亮一个LED灯@dsLED:要点亮的LED灯,如dsLED==0x01,点亮LED1
*/
void LED_Disp(uchar dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);		//将GPIOC的所有引脚置为高电平,也就是LED初始化熄灭HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);			//因为控制LED灯是在8~15位,上面一句代码是默认前八位置0,所以我们左移8位,就能将GPIOC的8~15置为0了HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);			//初始化锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

 这样,我们的初始化函数就写成啦,其中的参数设置为“0x01”,就是LED灯全熄灭了。

实例运用

现在我们来简单的写一个流水灯吧

如果理解了初始化代码中的第一句与第二句,我们就可以利用位运算来用更简单的代码实现流水灯了,以下是从左至右依次亮0.5秒,然后熄灭0.5秒:

/*
LED_liushui:实现LED灯流水
*/
void LED_liushui(void)
{int i = 1;while(1){LED_Disp(i);HAL_Delay(500);LED_Disp(0x00);HAL_Delay(500);if(i == 128)i = 1;elsei = i<<1;}
}

相关文章:

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…...

RK3288-android8-es7210-阵列麦克风

ES7210驱动包 应需求调试一个ES7210的阵列麦克风 首先移植 From 234647c69a57c32198c65836e7fc521dc22e444b Mon Sep 17 00:00:00 2001 From: LuoXiaoTan <lxt@rock-chips.com> Date: Tue, 10 Jul 2018 18:08:50 -0700 Subject: [PATCH] ASoC: codecs: add es7210 adc …...

硬件工程师常见问题与答疑

在工作中&#xff0c;尤其是做了很多年的&#xff0c;有些问题可能不知道&#xff0c;又不好意思问&#xff0c;怕别人说你连这个都不知道&#xff1f;很尴尬&#xff0c;而且百度又搜不到&#xff0c;本博主收集了很多答疑&#xff0c;希望里面有对你有用的&#xff0c;或者是…...

【Java】Java进阶学习笔记(一)—— 面向对象(封装)

【Java】Java进阶学习笔记&#xff08;一&#xff09;—— 面向对象&#xff08;封装&#xff09;一、类中成分1、类中成分2、this关键字this() 访问构造器方法3、static关键字1. 成员变量的区分2. 成员方法的区分3. 成员变量访问语法的区分二、封装1、封装的定义封装的好处2、…...

jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 拆迁管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

CCNP350-401学习笔记(易错题合集)

CCNP350-401学习笔记&#xff08;1-50题&#xff09;_殊彦_sy的博客-CSDN博客CCNP350-401学习笔记&#xff08;2023.2.17&#xff09;https://blog.csdn.net/shuyan1115/article/details/129088574?spm1001.2014.3001.5502CCNP350-401学习笔记&#xff08;51-100题&#xff09…...

喀秋莎Camtasia2023最新版本电脑录屏剪辑软件

录屏软件的鼻祖是techSmith 的喀秋莎&#xff08;Techsmith Camtasia Studio&#xff09;&#xff0c;视频编辑软件Camtasia 2023发布&#xff0c;十大新功能放出!作为一个自媒体人&#xff0c;每天都要录制编辑视频&#xff0c;选择一个好的视频编辑工具就是大家首先面临的一个…...

「考研算法」

考研算法 前言 本系列文章涉及的算法内容&#xff0c;针对的是哈尔滨工业大学854科目。在本文中通过具体的算法题进行讲解相应算法。 今天涉及的算法主要有线性筛&#xff0c;十大排序中快速排序和归并排序。 后续会有动态规划的相关算法以及尝试模型的总结&#xff0c;如果…...

Android Framework-操作系统基础

最近在看《深入理解Android内核设计思想&#xff08;第2版&#xff09;》&#xff0c;个人感觉很不错&#xff0c;内容很多&#xff0c;现将书里个人认为比较重要的内容摘录一下&#xff0c;方便后期随时翻看。 计算机体系结构 硬件是软件的基石&#xff0c;所有的软件功能最…...

美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?

美国企业开始使用ChatGPT&#xff0c;我认为这不是什么新闻。 如果美国的企业现在还不使用ChatGPT&#xff0c;那才是个大新闻。 据新闻源显示&#xff0c;已经使用chatGPT的企业中&#xff0c;48%已经让其代替员工工作。 ChatGPT的具体职责包括&#xff1a;客服、代码编写、招…...

[Java·算法·中等]LeetCode17. 电话号码的字母组合

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。…...

C#7/C#8/C#9 与dotnetSDK 以及dotnet framework对应关系

语言版本 对应的.net framework版本 对应的.net sdk版本 推荐使用的vs studio C#7.3 3.5、 4.0、 4.5 、4.5.1、 4.5.2 、4.6 、4.6.1、 4.6.2 4.7.1、 4.7.2 .netcore 2.0、.netcore2.1、 .netcore2.2 C#8.0 / F#4.7 不支持 .netcore 3.0、.netcore 3.1 C# 9.0 …...

jvm调优经验总结

最近一段时间很忙&#xff0c;忙到每天10点多11点下班还是感觉有很多事没有做完&#xff0c;不过倒也没有什么太过低落的情绪&#xff0c;有时候只安静的看一个视频&#xff0c;简单看点文字&#xff0c;或者平静的坐着&#xff0c;并没有太多想法。短时间的工作压力是可以接受…...

等保合规知识常见问题解答

Q1&#xff1a;什么是等级保护&#xff1f; 答&#xff1a;等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统…...

分享5款Windows同类软件中的翘楚

今天要给大家推荐的是5款软件&#xff0c;每个都是同类软件中的个中翘楚&#xff0c;请大家给我高调地使用起来&#xff0c;不用替我藏着掖着。1.沙盒工具——Sandboxie Sandboxie是一个电脑必备的沙盘工具&#xff0c;对于从网上下载的软件安装包、文件、视频、图片等等一切不…...

记--springboot-工具类中使用@Component、@Resource与@Value失效

写一个工具类 需要使用Resource注入RedisTemplate 使用Value获取application.properties配置文件中配置 并使用Component将该工具类交个spring管理 调试的时候RedisTemplate以及所有的变量全是是null 看了网上的各种解决方式五花八门 有的说出现问题的原因&#xff1a;Compon…...

手写一个react,看透react运行机制

适合人群 本文适合0.5~3年的react开发人员的进阶。 讲讲废话&#xff1a; react的源码&#xff0c;的确是比vue的难度要深一些&#xff0c;本文也是针对初中级&#xff0c;本意让博友们了解整个react的执行过程。 写源码之前的必备知识点 JSX 首先我们需要了解什么是JSX。…...

JS判断输入值是否为正整数,判断变量是否为数字

这篇文章将讨论如何确定一个变量是否代表 JavaScript 中的有效数字。 1.JS中的test是原来是JS中检测字符串中是否存在的一种模式&#xff0c;JS输入值是否为判断正整数代码&#xff1a; <script type”text/javascript”> function test() { var num document.getElem…...

Android开发八股文,Android也有自己的八股文了

前言别的行业都有自己的八股文&#xff0c;凭什么Android没有。2023春招即将来临&#xff0c;很多同学会问 Android开发的面试题有必要背吗&#xff1f;我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。国内…...

你需要同款“Unreal项目自动化编译、打包和部署”方案吗?

在过往几期的UWA Pipeline最佳实践案例中&#xff0c;我们分享了如何通过Pipeline实现性能优化、性能管理、游戏内容验收和云真机系统的应用&#xff08;实现批量真机设备的自动化测试&#xff0c;以及针对特效性能优化的方式&#xff09;&#xff0c;其实这些高效的方法并不局…...

WeChatMsg:如何用开源工具构建你的个人数字记忆库

WeChatMsg&#xff1a;如何用开源工具构建你的个人数字记忆库 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...

别再只点灯了!用ESP32和WebServer库做个智能家居控制面板原型(附完整代码)

用ESP32打造智能家居控制面板&#xff1a;从网页控制到硬件交互实战 想象一下&#xff0c;清晨醒来无需下床&#xff0c;轻点手机就能打开窗帘、调节灯光&#xff1b;离家时一键关闭所有电器&#xff0c;还能实时查看家中温湿度——这些看似未来的场景&#xff0c;如今用一块ES…...

从平面到立体:基于OpenLayers与Cesium的无缝地图维度切换实践

1. 二维与三维地图融合的必要性 在现代WebGIS开发中&#xff0c;单纯依赖二维地图已经难以满足用户对空间数据展示的需求。想象一下&#xff0c;当你查看一个城市规划系统时&#xff0c;平面地图能告诉你道路走向&#xff0c;但只有切换到三维视图才能直观看到建筑高度、地形起…...

ClawRouter:智能流量路由与内容处理工具的设计与实践

1. 项目概述与核心价值 最近在折腾一些网络相关的自动化任务时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫 ClawRouter。乍一看这个名字&#xff0c;可能会联想到“爪子”和“路由器”&#xff0c;感觉像是某种抓取工具和网络设备的结合体。实际上&#xff0c;这个项目…...

半导体产业3000亿美元背后的冷思考:成本高墙、利润悖论与创新挑战

1. 行业现状&#xff1a;跨越3000亿美元门槛后的冷思考 又到了一年一度回顾过去、展望未来的时刻。对于我们这些在半导体行业摸爬滚打了十几年甚至几十年的老工程师来说&#xff0c;每年的这个时候心情总是复杂的。今年有个标志性的消息&#xff1a;全球半导体产业营收终于再次…...

构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案

构建毫秒级实时传输系统&#xff1a;基于flv.js的低延迟架构优化方案 【免费下载链接】flv.js HTML5 FLV Player 项目地址: https://gitcode.com/gh_mirrors/fl/flv.js flv.js作为HTML5 FLV播放器的核心技术方案&#xff0c;通过Media Source Extensions实现浏览器端FLV…...

告别月薪四千,2026网工转网安:学习路线、岗位方向与避坑全指南

告别月薪四千&#xff0c;2026 网工转网安&#xff1a;学习路线、岗位方向与避坑全指南 相信很多在做网络运维的朋友&#xff0c;搞了几年基础工作后&#xff0c;都会遇到这样的瓶颈&#xff1a;日常主要和交换机、路由器打交道&#xff0c;处理配置、排障这些重复内容&#x…...

CV顶会周度精选:7篇驱动工业落地的视觉模型新范式

1. 这不是论文速读清单&#xff0c;而是一份“视觉模型进化切片报告” 你点开这篇标题&#xff0c;大概率是想快速抓住过去七天里计算机视觉领域真正值得花时间的几篇新工作——不是刷榜论文&#xff0c;不是工程缝合怪&#xff0c;而是那种读完会让人下意识摸键盘、想立刻跑个…...

从JLink驱动安装失败,聊聊老旧Win7系统下嵌入式工具链的“版本锁定”现象

从JLink驱动安装失败看嵌入式工具链的版本锁定困境 当你在Windows 7系统上尝试安装最新版JLink驱动时&#xff0c;那个顽固的黄色感叹号是否曾让你抓狂&#xff1f;这看似简单的驱动问题背后&#xff0c;隐藏着一个困扰嵌入式开发领域多年的系统性难题——工具链的版本锁定现象…...

避坑指南:NRF52832低功耗调试,为什么你的电流下不去?

NRF52832低功耗调试实战&#xff1a;从百微安到个位数的终极指南 当你满怀期待地将NRF52832的低功耗模式配置完毕&#xff0c;却发现实际电流依然高达几十甚至上百微安时&#xff0c;那种挫败感我深有体会。这不是简单的数据手册参数未达标问题&#xff0c;而往往是一系列隐蔽陷…...