【备赛】点亮LED
LED部分的原理图

led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也需要用到这些引脚)。
每次想要对led操作,就需要先打开锁存器,再执行操作,最后关闭锁存器。
这里需要注意的是,引脚配置为低电平时,LED才会点亮。
具体操作
1)配置
首先要在stm32CubeMX里面配置PD2为高电平,目的是打开锁存器。
然后配置PC8-PC15都是高电平,默认刚上电是关闭的。

这里给高电平,但是不用上拉电阻。
2)代码
这是截取的一小段代码。需要强调的是:
一堆代码HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);LCD_Init();LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);一堆代码
一定要在LCD初始化之前关闭锁存器。
这样LCD无论如何操作也不会对led造成干扰。

这就是你刚才配置的那个 锁存器和PC8-PC15。
3)相关函数
void led_all_off() //关闭所有的LED灯
{HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}void led_all_on() //打开所有的LED灯
{HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}void led_on(int n) //只打开某一个LED灯(n取值为 1 ~ 8)
{HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << n, 0);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}void led_status(unsigned char c) //打开一部分LED灯(传入的8位数据分别控制8个灯)
{HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);GPIOC -> ODR = (c << 8);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}
相关文章:
【备赛】点亮LED
LED部分的原理图 led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也需要用到这些引脚)。 每次想要对led操作,就需要先打开锁存器,再执行操作,最后关闭锁存器。 这里需要注意的是,引脚配置…...
cpp中的继承
一、继承概念 在cpp中,封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类(也就是基类)的基础上创建新类(派生类或者子类),从而实现代码的复用。 如上图所示,Person是基类&…...
WPF-3天快速WPF入门并达到企业级水准
嘿,小伙伴们!如果你已经有一定的C#开发基础,但想快速掌握WPF开发,达到企业级水准,那接下来的这个三天快速入门计划绝对适合你!虽然听起来有点挑战,但别担心,只要跟着这个高强度、结构…...
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
文章目录 1. JVM内存模型2. 常量池中有什么类型?3. 常量池中真正存储的内容是什么4. 判断一个字符串(引用)是否在常量池中5. BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗?6. 获取堆内存使用情况、非堆内存使用情况 1. JVM内…...
NocoBase 本周更新汇总:新增路由管理
汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。 main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的新功…...
Spring AOP 切面打印日志完整版
我的项目使用的是 SpringBoot 3。 要在 Spring Boot 3 项目中使用 AOP(面向切面编程)来打印接收和响应的参数,如 URL、参数、头部信息、请求体等,可以按照以下步骤操作: 步骤 1: 添加依赖 确保你的 pom.xml 文件中包…...
【数据结构】(12) 反射、枚举、lambda 表达式
一、反射 1、反射机制定义及作用 反射是允许程序在运行时检查和操作类、方法、属性等的机制,能够动态地获取信息、调用方法等。换句话说,在编写程序时,不需要知道要操作的类的具体信息,而是在程序运行时获取和使用。 2、反射机制…...
SEO炼金术(4)| Next.js SEO 全攻略
在上一篇文章 SEO炼金术(3)| 深入解析 SEO 关键要素 中,我们深入解析了 SEO 关键要素,包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang,并探讨了它们在搜索引擎优化(SEO)中的作…...
ONES 功能上新|ONES Copilot、ONES Project 新功能一览
ONES Copilot 智能 AI 助手模型可配置多种类型模型,服务提供方 Dashscope 的模型列表中新增 DeepSeek V3 与 DeepSeek R1;选择自定义模型配置时,填写私有部署的 DeepSeek 模型相关参数即可。 应用场景: 企业内部自部署或在模型服务…...
STM32寄存器控制引脚高低电平
一. 引子 最近在学习32代码的过程当中,虽然在学习IMX6ULL开发板的过程中接触过很多寄存器,最近在返回去看32的时候,在研究代码的时候发现自己对于寄存器的有些特性理解的不够深刻,所以下来的时候去查了资料,以及问了一…...
SOC-ATF 安全启动BL1流程分析(1)
一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库,包含最新的代码、文档和示例。 下载方式: 使用 Git 克隆仓库: git…...
QVariantList使用详解
QVariantList 1. 基本概念2. 使用场景3. 基本操作3.1 创建和初始化3.2 访问元素3.3 修改元素3.4 删除元素 4. 实际应用示例5. 总结其他QT文章推荐 QVariantList 是 Qt 框架中的一个类,用于存储和操作 QVariant 对象的列表。 QVariant 是 Qt 中用于封装各种类型的通…...
TDesign:Cascader 级联选择器(省市区三级联动)
Cascader 级联选择器API 参考官方示例代码 在自己的模板中使用:view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:tdesign_flutter/tdesign_flutter.dart;import i…...
Ubuntu20.04下各类常用软件及库安装汇总
1.Miniconda的安装 Ubuntu 20.04版本快速安装 Miniconda(宝宝级攻略) 2.Nvidia显卡驱动/CUDA/cuDNN安装 Ubuntu 20.04安装nvidia显卡驱动/CUDA/cuDNN Ubuntu 20.04:CUDAcuDNN安装&卸载 Y9000P24款 win11ubuntu20.04 双系统教程 3.SGL…...
linux中安装部署Jenkins,成功构建springboot项目详细教程
参考别人配置Jenkins的git地址为https,无法连上github拉取项目,所以本章节介绍通过配置SSH地址来连github拉取项目 目录: 1、springboot项目 1.1 创建名为springcloudproject的springboot项目工程 1.2 已将工程上传到github中,g…...
2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)
二、软件架构复用 ◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。 ◆软件架构…...
基于定制开发开源AI大模型S2B2C商城小程序的商品选品策略研究
摘要:随着电子商务的蓬勃发展和技术的不断进步,商品选品在电商领域中的重要性日益凸显。特别是在定制开发开源AI大模型S2B2C商城小程序的环境下,如何精准、高效地选择推广商品,成为商家面临的一大挑战。本文首先分析了商品选品的基…...
后端之JPA(EntityGraph+JsonView)
不同表之间的级联操作或者说关联查询是很多业务场景都会用到的。 对于这种需求最朴素的方法自然是手动写关联表,然后对被关联的表也是手动插入数据。但是手写容易最后写成一堆shit代码,而且修改起来也是非常麻烦的。 学会使用现成的工具还是非常有利的…...
linux--卡顿
1,swappiness swappiness是一个影响操作系统如何使用交换空间(swap space)的内核参数。它的值范围是从0到100,这个数值决定了系统将数据从物理内存(RAM)移动到交换分区或交换文件的倾向程度,交…...
【Python pro】函数
1、函数的定义及调用 1.1 为什么需要函数 提高代码复用性——封装将复杂问题分而治之——模块化利于代码的维护和管理 1.1.1 顺序式 n 5 res 1 for i in range(1, n1):res * i print(res) # 输出:1201.1.2 抽象成函数 def factorial(n):res 1for i in range(1…...
Docker 2025/2/24
用来快速构建、运行和管理应用的工具。帮助部署。 快速入门 代码略 解释 docker run :创建并运行一个容器,-d是让容器在后台运行 --name mysql :给容器起个名字,必须唯一 -p 3306:3306 :设置端口映射 -e KEYVALUE :是设置环境变量 mysql :指定运行的…...
4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)
文章目录 前言代码示例:运行方法:查看结果:关键功能说明:扩展功能建议: 前言 以下是一个完整的SystemVerilog测试平台示例,包含约束随机地址生成、日志输出和波形生成功能: 代码示例࿱…...
爱普生SG-8101CE可编程晶振赋能智能手机的精准心脏
在智能手机高速迭代的今天,高性能、低功耗与小型化已成为核心诉求。智能手机作为人们生活中不可或缺的工具,需要在各种复杂场景下稳定运行。爱普生SG-8101CE可编程晶振凭借其卓越性能,成为智能手机中不可或缺的精密时钟源,为通信、…...
指针解剖学:穿透C/C++内存操作的核心密码与避坑指南
一、指针的本质与内存模型 指针是C/C的核心特性,本质是内存地址的变量化表示。每个变量在内存中占据连续的字节空间,地址是内存单元的唯一编号(如0x0028FF40)。指针变量存储的是目标数据的首地址,通过地址间接操作数据…...
Qt关于平滑滚动的使用QScroller及QScrollerProperties类说明
一、触控时代的滚动工具:QScroller类设计介绍 1.1 从机械滚轮到数字惯性 在触控设备普及前,滚动操作如同老式打字机的滚轴,只能通过鼠标滚轮或滚动条进行离散式控制。QScroller的出现如同给数字界面装上了"惯性飞轮",…...
【音视频】编解码相关概念总结
NALU RTP PS流 三者总体关系 NALU在RTP中的应用:视频流的RTP传输通常将NALU作为基本的单元进行传输。每个RTP包携带一个或多个NALU,这些NALU包含了视频编码数据。RTP协议通过其头部信息(如时间戳、序列号等)帮助接收端重新排列和…...
Vue3 + Vite + TS,使用 配置项目别名属性:resolve
使用 resolve 配置全局项目路径别名 1.优化了开发中单页面引用其他模块的路径复杂性 2.妥妥解决了,组件复用当中提高开发效率 // 不使用配置 import { useStore } from ../../../stores // 使用配置 可根据开发者需求任意定义,较多 import { useStore…...
docker创建nginx
docker run -d -p 8080:80 --name my-nginx-container nginx docker:命令 run:命令 -d:在后台运行容器 -p:8080:80:将容器内部的80端口映射到宿主机的8080端口。 --name my-nginx-container:为容器指定一个…...
StableDiffusion打包 项目迁移 项目分发 1
文章目录 SD项目迁移前置知识webui-user.batwebui.batlaunch_utils.py 下一篇开始实践 SD项目迁移 显卡驱动更新:https://www.nvidia.cn/geforce/drivers/ 下载安装三个程序: python3.10.6: https://www.python.org/downloads/release/python-3106/gi…...
【数据结构进阶】哈希表
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、哈希表的概念 二、哈希函数的实现方法 1. 直接定址法 2. 除留余数法 三、哈希冲突 1. 开放定址法(闭散列࿰…...
