【藍橋杯嵌入式】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 ? ?  /* 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.pswp.cn/news/894810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894810.shtml
英文地址,請注明出處:http://en.pswp.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)的概念。 秘鑰共享 則…