【蓝桥杯嵌入式】2_LED

1、电路图

74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”,led此时不会改变状态,所以可通过led对应的八个引脚的电平来控制led的状态,原理图分析可知,PC脚低电平时led导通。

将PC8-PC15和PD2设置成output,并选择Output Push Pull(推挽输出)

将PC8-PC15初始电平设置为高电平,PD2设置为低电平(高电平使能)

2、代码

2.1 led.c

#include "led.h"void LED_Disp(uchar dsLED)
{HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);//将GPIO的所有引脚置为高电平HAL_GPIO_WritePin(GPIOC, dsLED<<8, GPIO_PIN_RESET);//控制PC8~PC15HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET);//将锁存器打开(高电平有效),高电平使能,PD2高电平的一瞬间数据就已经过去了HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET);//将锁存器关闭,防止引脚冲突导致的误写
}

2.2 led.h

#ifndef _LED_H_
#define _LED_H_#include "main.h"
void LED_Disp(uchar dsLED);#endif

2.3 main.c

/* USER CODE BEGIN Header */
/********************************************************************************* @file           : main.c* @brief          : Main program body******************************************************************************* @attention** Copyright (c) 2024 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "led.h"
/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */uchar i = 0;LED_Disp(0x00);//LED ij ʼ  /* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){for(i = 0; i < 8; i++){LED_Disp(0x01<<i);HAL_Delay(100);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Configure the main internal regulator output voltage*/HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV3;RCC_OscInitStruct.PLL.PLLN = 20;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//*** @brief  This function is executed in case of error occurrence.* @retval None*/
void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while (1){}/* USER CODE END Error_Handler_Debug */
}#ifdef  USE_FULL_ASSERT
/*** @brief  Reports the name of the source file and the source line number*         where the assert_param error has occurred.* @param  file: pointer to the source file name* @param  line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Diskgenius系统迁移之后无法使用USB启动

前言 本文用于记录系统迁移中遇到的问题及解决方法&#xff0c;如有不对请指出&#xff0c;谢谢&#xff01; 现象 使用DiskGenius进行系统迁移后&#xff0c;使用USB启动失败&#xff0c;反复在品牌logo和黑屏之间切换&#xff0c;期间还会在左上角显示”reset system“报错…

使用 Postman 进行 API 测试:从入门到精通

使用 Postman 进行 API 测试&#xff1a;从入门到精通 使用 Postman 进行 API 测试&#xff1a;从入门到精通一、什么是 API 测试&#xff1f;二、Postman 简介三、环境搭建四、API 测试流程1. 收集 API 文档2. 发送基本请求示例&#xff1a;发送 GET 请求示例代码&#xff08;…

Android Studio:Application 和 Activity的区别

Application 和 Activity 是 Android 中非常重要的两个组件&#xff0c;它们分别负责不同的生命周期管理和应用的不同层次的操作。 Application 是应用级别的生命周期管理&#xff0c;它在整个应用运行时只有一个实例&#xff0c;负责应用的全局初始化和资源管理。Activity 是…

Mac本地体验LM studio

博主很懒&#xff0c;不爱打字&#xff01; 1、LM studio官网&#xff1a;LM Studio - Discover, download, and run local LLMs 2、下载DMG文件&#xff0c;安装 3、使用vscode工具&#xff0c;commandshiftH【全局替换功能】&#xff0c;选择目录/Applications/LM\ Studio…

SQL Server 数据库备份指南

SQL Server备份是数据库维护的日常工作。备份的目的是在发生数据丢失、损坏甚至硬件故障时将数据库和事务日志恢复到最近的时间点。您可以借助专业的SQL Server备份软件,操作起来更方便。前提需要安装SQL Server Management Studio (SSMS)工具。 对于 SQL 数据库备份,有多种…

我最近在干什么【2】

前言 这系列的上一篇是2024.12.05写的&#xff0c;现在是2025.02.06&#xff0c;这都两个月&#x1f914;小久。 不是完整全面的技术分享&#xff0c;话题聚焦个人成长&#xff08;学的技术、了解到的信息、看的书……&#xff09; 方面。文章偏意识流点&#xff0c;单纯分享我…

Temperature、Top-P、Top-K、Frequency Penalty详解

在生成式AI&#xff08;比如ChatGPT&#xff09;中&#xff0c;Temperature、Top-P、Top-K、Frequency Penalty 这些参数用于控制文本生成的多样性、随机性和重复度&#xff0c;它们的作用如下&#xff1a; 1. Temperature&#xff08;温度&#xff09; 作用&#xff1a;控制输…

4. Go结构体使用

1、结构体的简介 结构体&#xff08;Struct&#xff09;是编程语言中常见的一种复合数据类型&#xff0c;它将不同类型的数据元素&#xff08;成员&#xff09;组合成一个单一的实体。通过结构体&#xff0c;程序员可以将具有不同类型和性质的信息绑定到一个对象中&#xff0c…

sqlite 查看表结构

在SQLite中&#xff0c;查看表结构通常有以下几种方法&#xff1a; 使用.schema命令 在SQLite的命令行界面中&#xff0c;你可以使用.schema命令加上表名来查看该表的结构。例如&#xff0c;如果你想查看名为your_table_name的表结构&#xff0c;你可以这样做&#xff1a; .s…

SpringAI介绍及本地模型使用方法

博客原文地址 前言 Spring在Java语言中一直稳居高位&#xff0c;与AI的洪流碰撞后也产生了一些有趣的”化学反应“&#xff0c;当然你要非要说碰撞属于物理反应也可以&#xff0c; 在经历了一系列复杂的反应方程后&#xff0c;Spring家族的新成员——SpringAI&#xff0c;就…

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中&#xff0c;IP地址、手机号和手机地址这三个概念如影随形&#xff0c;它们各自承载着网络世界的独特功能&#xff0c;却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语&#xff0c;经常被错误地与手机号地址或手机地址划上等号。本文旨在…

车载以太网__传输层

车载以太网中&#xff0c;传输层和实际用的互联网相差无几。本篇文章对传输层中的IP进行介绍 目录 什么是IP&#xff1f; IP和MAC的关系 IP地址分类 私有IP NAT DHCP 为什么要防火墙穿透&#xff1f; 广播 本地广播 直接广播 本地广播VS直接广播 组播 …

Docker 数据卷(Volume)详细介绍

Docker 数据卷&#xff08;Volume&#xff09;详细介绍 1. 什么是 Docker 数据卷&#xff1f; Docker 数据卷&#xff08;Volume&#xff09;是一种用于 持久化数据 和 容器间数据共享 的机制。由于容器的存储是临时的&#xff0c;容器删除后其中的数据会丢失&#xff0c;因此…

wxWidgets生成HTML文件,带图片转base64数据

编译环境大家可以看我之前的文章,CodeBlocks + msys2 + wx3.2,win10 这里功能就是生成HTML文件,没用HTML库,因为是自己固定的格式,图片是一个vector,可以动态改变数量的。 效果如下: #include <wx/string.h> #include <wx/file.h> #include <wx/ima…

网络原理一>数据链路层协议->以太网协议

目录 以太网协议的结构&#xff1a;类型&#xff1a;ARP请求应答报文&#xff1a;CRC&#xff1a;MTU: 为什么需要mac地址&#xff1a;mac地址和IP地址的区别&#xff1a; 以太网协议的结构&#xff1a; 以太网是数据链路层和物理层的主要协议 源IP&#xff0c;目的IP就不多说…

疯狂SQL转换系列- SQL for Milvs2.4

鉴于Milvus仍在不停的迭代新版本&#xff0c;推出新功能&#xff0c;其SDK目前并不稳定。目前其2.4版本的SDK接口已与之前的2.2版本有了较大的差别&#xff0c;功能上也有了一定的调整。为此&#xff0c;我们重新提供了针对[Milvus2.4](https://github.com/colorknight/moql-tr…

售后板子HDMI无输出分析

问题&#xff1a; 某产品售后有1例HDMI无输出。 分析&#xff1a; 1、测试HDMI的HPD脚&#xff08;HDMI座子的19pin&#xff09;&#xff0c;测试电压4.5V&#xff0c;属于正常。 2、用万用表直流电压档&#xff0c;测试HDMI的3对数据脚和1对时钟脚&#xff08;板子通过HDM…

【声音转文字CapsWriter】声音随时转化为文字,CapsWriter提高工作效率

文章目录 前言1. 软件与模型下载2. 本地使用测试3. 异地远程使用3.1 内网穿透工具下载安装3.2 配置公网地址3.3 修改config文件3.4 异地远程访问服务端 4. 配置固定公网地址4.1 修改config文件 5. 固定tcp公网地址远程访问服务端 前言 今天我要给大家安利一个神器——CapsWrit…

使用 Python 编程语言来实现机器学习小项目教程案例

以下是一个简单的机器学习小项目教程案例,使用 Python 编程语言和 Scikit-learn 库来实现一个分类任务。我们将使用经典的鸢尾花(Iris)数据集来训练一个分类器,预测鸢尾花的种类。 项目目标 使用机器学习算法对鸢尾花数据集进行分类,预测鸢尾花的类别(Setosa、Versicolor…

DKG(Distributed Key Generation)协议

一、DKG是什么 DKG(分布式密钥生成)提供了一种去中心化的方法,使各个参与方在不相互信任的情况下生成共享密钥,以确保安全通信和多方参与的机密性。 DKG技术的关键思想是使用多方计算(secure multiparty computation)和秘钥共享(secret sharing)的概念。 秘钥共享 则…