藍橋杯第13屆真題2

由硬件框圖可以知道我們要配置LED 和按鍵

一.LED

先配置LED的八個引腳為GPIO_OutPut,鎖存器PD2也是,然后都設置為起始高電平,生成代碼時還要去解決引腳沖突問題

二.按鍵

按鍵配置,由原理圖按鍵所對引腳要GPIO_Input

生成代碼,在文件夾中添加code文件夾,code中添加fun.c、fun.h、headfile.h文件,去資源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去寫按鍵控制燈亮滅的程序,看是否有問題

按鍵控制led沒有問題后寫lcd顯示代碼,顯示沒問題后,解決lcd與led引腳沖突問題,方法在我的其他文章中CSDN

? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET ); //為解決引腳沖突初始化lcd時? ??LCD_Init (); ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 要將鎖存器鎖存器來;
? LCD_Clear (Black);
? LCD_SetBackColor(Black);
? LCD_SetTextColor(White);

三.LCD顯示函數

void lcd_show(void)
{
?? ?sprintf(text," ? ? ?hello world");
?? ?LCD_DisplayStringLine (Line0 ,(uint8_t *)text);
}

四.界面顯示

購買界面

按照要求把其顯示的東西先顯示出來

價格界面

界面轉換

寫好三個界面的顯示函數后需要寫一個界面轉換的函數,按要求B1按鍵負責界面轉換,用一個標志位來解決界面轉換。

五.按鍵功能實現

B2按鍵

B1按鍵的功能我們在界面轉換哪里已經完成,現在完成B2按鍵

在C語言中,1.0f表示一個單精度浮點數(float類型)的字面值。

具體來說:???1.0f的含義?

1.0f中的f后綴明確表示這是一個單精度浮點數(float類型)。如果不加f,默認情況下1.0會被視為雙精度浮點數(double類型)。
?與1.0的區別?

1.0是雙精度浮點數(double類型),占用64位內存,精度更高。
1.0f是單精度浮點數(float類型),占用32位內存,精度較低,但計算速度可能更快。

庫存界面

B3按鍵

B4按鍵

六.EEPROM存儲功能(不熟)

去資源包中把IIC_hal.c與.h添加到code文件中,添加頭文件,main中初始化

寫好之后測試一下是否正確

七.串口輸出接收功能(不熟)

需要把PA9設置為TX? ?PA10為RX,開啟中斷后生成代碼

添加頭文件,在usart.h中找到

輸出

HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout),串口發送函數

定義一個數組存放要發送的數據char send[20];

接收

細節不會請看CSDN

?在頭文件中找到串口接收回調函數HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)寫接收函數;

在函數中先if判斷串口,定義的uint8_t rec_data;在headfile.h中加一個外部聲明extern,便于數據跨文件使用

找到串口接收函數HAL_UART_Receive_IT();

第一個參數為串口句柄

第二個參數為接收的數據

第三個參數接收數據的字節數

寫好的接收函數要在main中聲明,相當于使能,代碼執行到此時發生串口中斷,把數據存到rec-data中然后跳到串口中斷函數中

在函數中將剛才儲存的數據發送出去后又接收新的數據,這也就是為什么接收函數中發送數據的代碼要在接收代碼上面

八.燈

題目要求燈的亮滅有時間要求,這就需要去配置一個0.1s的定時器,定時器記得使能中斷后生成代碼

九.PWM輸出功能(不熟)

輸出PWM

PA1配置為PWM輸出,計算f'為2000hz,不需要開啟中斷

生成代碼,開啟PWM,設置占空比

輸入捕獲

還需要一個引腳來捕獲頻率,這個題目沒有要求。但是我們需要用來查看自己的PWM和占空比是否正確,輸入捕獲是需要用中斷的

生成代碼,開啟

找到回調函數寫輸入捕獲函數

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);

占空比計算的時候,如果輸出用%d,CCR/ARR是的小數的,這個輸出是會出錯的,CCR*100再除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72757.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72757.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72757.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java之IP 工具類

java程序一直需要獲取物理機的ip,寫了一個ip的工具類,感覺日常所需夠了 import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException;/*** IP 工具類*/ public class IpUtil {public static St…

貪心算法作業參考:P1106,P4995,P5019

貪心算法作業參考:P1106,P4995,P5019 P1106 刪數問題 作業批注: 原作業提交,是刪除k個最大的數。 不一定是刪除最大的數。 參考如下,用例: 輸入: 50074897 2輸出: 4…

雙曲空間學習記錄

文章目錄 前期學習內容雙曲空間中的圖卷積神經網絡 前期學習內容 雙曲空間中的圖卷積神經網絡 250318:這個博客的產生原因是我去看了B站上的一個視頻,up說ppt上傳到github上了,但是我去找了一圈也沒有找到,然后想給他留言&#x…

【ES6新特性】默認參數常見用法

ES6新特性之默認參數的多種用法 🚀默認參數基礎用法 在ES6中,我們可以直接在函數參數列表中為參數設置默認值: // ES5的實現方式 function greet(name) {name name || Guest;console.log(Hello, ${name}!); }// ES6默認參數寫法 function…

LORA的AB矩陣是針對Transformer的多頭還是MLP

LORA的AB矩陣是針對Transformer的多頭還是MLP Transformer中的矩陣是一個整體還是分開的每個小矩陣 在LORA(Low-Rank Adaptation)中,AB矩陣的應用位置和Transformer中的矩陣拆分方式如下: 1. LORA的AB矩陣作用對象 LORA的AB矩陣主要作用于Transformer的多頭注意力模塊和…

【大模型基礎_毛玉仁】2.4 基于 Encoder-Decoder 架構的大語言模型

更多內容:XiaoJ的知識星球 目錄 2.4 基于 Encoder-Decoder 架構的大語言模型2.4.1 Encoder-Decoder 架構2.4.2 T5 語言模型1)T5 模型結構2)T5 預訓練方式3)T5 下游任務 2.4.3 BART 語言模型1)BART 模型結構2&#xff0…

browser-use WebUI + DeepSeek 基于AI的UI自動化解決方案

browser-use WebUI 一、browser-use是什么Browser-use采用的技術棧為: 二、browser-use webui 主要功能使用場景 三、使用教程1.python 安裝2、把項目clone下來3、安裝依賴4、配置環境5、啟動6、配置1.配置 Agent2.配置要用的大模型3.關于瀏覽器的一些設置 四、Deep…

WPF CommunityToolkit.MVVM庫的簡單使用

CommunityToolkit.MVVM 是 .NET 社區工具包中的一部分,它為實現 MVVM(Model-View-ViewModel)模式提供了一系列實用的特性和工具,能幫助開發者更高效地構建 WPF、UWP、MAUI 等應用程序。以下是關于它的詳細使用介紹: 1…

Windows安裝Apache Maven 3.9.9

第一步下載資源 官網:下載 Apache Maven – Maven 環境變量配置 M2_HOME 指向bin目錄 MAVEN_HOME 指向根目錄 M2_HOME 不確定是否必須要 Path配置 ,需要注意MAVEN順序應當在java之前 驗證是否安裝成功,在cmd中以管理員方式打開&#xff0c…

【spring-boot-starter-data-neo4j】創建結點和查找結點操作

配置連接neo4j # application.properties spring.neo4j.uribolt://localhost:7687 spring.neo4j.authentication.usernameneo4j spring.neo4j.authentication.password你的密碼定義實體類 package com.anmory.platform.GraphService.Dao;import org.springframework.data.neo…

pytorch小記(十三):pytorch中`nn.ModuleList` 詳解

pytorch小記(十三):pytorch中nn.ModuleList 詳解 PyTorch 中的 nn.ModuleList 詳解1. 什么是 nn.ModuleList?2. 為什么不直接使用普通的 Python 列表?3. nn.ModuleList 的基本用法示例:構建一個包含兩層全連…

Excel導出工具類--復雜的excel功能導出(使用自定義注解導出)

Excel導出工具類 前言: 簡單的excel導出,可以用easy-excel, fast-excel, auto-poi,在導出實體類上加上對應的注解,用封裝好的工具類直接導出,但對于復雜的場景, 封裝的工具類解決不了,要用原生的excel導出(easy-excel, fast-excel, auto-poi都支持原生的) 業務場景: 根據…

批量測試IP和域名聯通性2

在前面批量測試IP和域名聯通性-CSDN博客的基礎上,由于IP和域名多樣性,比如帶端口號的192.168.1.17:17,實際上應該ping 192.168.1.17。如果封禁http://www.abc.com/a.exe,實際可ping www.abc.com。所以又完善了代碼。 echo off se…

國產編輯器EverEdit - 語法著色文件的語法

1 語法著色定義(官方文檔) 1.1 概述 EverEdit有著優異的語法著色引擎,可以高亮現存的絕大多數的編程語言。在EverEdit的語法著色中有Region和Item兩個概念,Region表示著不同的區塊。而Item則代表著這些區塊中不同的部分。一般情況下,Region…

Excel處理控件Aspose.Cells教程:如何自動將 HTML 轉換為 Excel

在處理 HTML 表中呈現的結構化數據時,將 HTML 轉換為 Excel 是一種常見需求。無論您是從網站、報告還是任何其他來源提取數據,將其轉換為 Excel 都可以更好地進行分析、操作和共享。 開發人員通常更喜歡使用編程方法將 HTML 轉換為 Excel,因…

基于springbo校園安全管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著信息時代的來臨,過去信息校園安全管理方式的缺點逐漸暴露,本次對過去的校園安全管理方式的缺點進行分析,采取計算機方式構建校園安全管理系統。本文通過閱讀相關文獻,研究國內外相關技術,提出了一種集進出校…

vim在連續多行行首插入相同的字符

工作中經常需要用vim注釋掉一段代碼或者json文件中的一部分,需要在多行前面插入//或者#符號。在 Vim 中,在連續多行行首插入相同字符主要有以下兩種方法: Visual Block 模式插入 將光標移到要插入相同內容的第一行的行首24。按下Ctrl v進入…

Git 實戰指南:本地客戶端連接 Gitee 全流程

本文將以 Gitee(碼云)、系統Windows 11 為例,詳細介紹從本地倉庫初始化到遠程協作的全流程操作 目錄 1. 前期準備1.1 注冊與配置 Gitee1.2 下載、安裝、配置客戶端1.3 配置公鑰到 Gitee2. 本地倉庫操作(PowerShell/Git Bash)2.1 初始化本地倉庫2.2 關聯 Gitee 遠程倉庫3. …

Pytest項目_day01(HTTP接口)

HTTP HTTP是一個協議(服務器傳輸超文本到瀏覽器的傳送協議),是基于TCP/IP通信協議來傳輸數據(HTML文件,圖片文件,查詢結果等)。 訪問域名 例如www.baidu.com就是百度的域名,我們想…

MySQL超詳細介紹(近2萬字)

1. 簡單概述 MySQL安裝后默認有4個庫不可以刪除,存儲的是服務運行時加載的不同功能的程序和數據 information_schema:是MySQL數據庫提供的一個虛擬的數據庫,存儲了MySQL數據庫中的相關信息,比如數據庫、表、列、索引、權限、角色等…