(自用)藍橋杯準備(需要寫的基礎)

要寫的文件
led_app
lcd_app
key_app
adc_app
usart_app
scheduler
LHF_SYS

一、外設引腳配置

1. 按鍵引腳

按鍵引腳配置如下:

  • B1:PB0
  • B2:PB1
  • B3:PB2
  • B4:PA0

2. LCD引腳

LCD引腳配置如下:

  • GPIO_Pin_9 /* PB.9 */
  • GPIO_Pin_8 /* PB.8 */
  • GPIO_Pin_5 /* PB.5 */
  • GPIO_Pin_10 /* PB.10 */

3. LED引腳

LED引腳配置如下:

  • PC8-PC15

4. USART引腳

USART引腳配置如下:

  • A9(USART1_TX)
  • A10(USART1_RX)
  • 今天一直因為串口的事情弄不起耗費兩個小時,結果不是代碼的問題,是板子有問題,啊,我真的服了,還把我的代碼改成了一坨
  • https://blog.csdn.net/m0_46175974/article/details/134515555?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229b5dc5d8695d41de72dc965cac7280d8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=9b5dc5d8695d41de72dc965cac7280d8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-134515555-null-null.142v102pc_search_result_base3&utm_term=%E4%B8%B2%E5%8F%A3%E5%8F%AA%E6%8E%A5%E5%8F%971%E6%AC%A1%E7%9A%84%E5%8E%9F%E5%9B%A0&spm=1018.2226.3001.4187
    這個博主提到的一個問題,是我把自己弄暈過去遇到的,希望對你有幫助

5. 板上電阻

板上電阻R37和R38連接到:

  • PB15
  • PB12

二、關鍵函數

1. LCD顯示函數

void LcdSprintf(uint8_t Line, char *format, ...)
{char String[21];va_list arg;va_start(arg, format);vsprintf(String, format, arg);va_end(arg);LCD_DisplayStringLine(Line, String);
}

使用說明

  • Line:指定LCD顯示的行號。
  • format:格式化字符串,類似于printf的用法。
  • 該函數通過va_listvsprintf實現可變參數的格式化顯示。

2. 按鍵狀態檢測

key_val = key_read();
key_down = key_val & (key_old ^ key_val);
key_up = ~key_val & (key_old ^ key_val);
key_old = key_val;

使用說明

  • key_read():讀取當前按鍵狀態。
  • key_down:檢測按鍵按下事件。
  • key_up:檢測按鍵釋放事件。
  • key_old:保存上一次按鍵狀態,用于對比。

3. ADC電壓采集

uint32_t GetAdcVoltage(HAL_ADC_HandleTypeDef *hadc)
{HAL_ADC_Start(hadc);uint32_t adc = HAL_ADC_GetValue(hadc);return adc * 3.3 / 4096;
}

使用說明

  • HAL_ADC_Start(hadc):啟動ADC轉換。
  • HAL_ADC_GetValue(hadc):獲取ADC轉換后的值。
  • 由于ADC精度為12位,參考電壓為3.3V,因此通過公式adc * 3.3 / 4096計算實際電壓值。

4. 串口通信

(1)中斷方式

如果忘記使用DMA,可以直接使用中斷方式:

  • 配置引腳A9(USART1_TX)和A10(USART1_RX)。
(2)DMA方式

使用DMA接收串口數據:

HAL_UARTEx_ReceiveToIdle_DMA(&huart1, uart_rx_dma_buffer, sizeof(uart_rx_dma_buffer));
__HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);

使用說明

  • HAL_UARTEx_ReceiveToIdle_DMA:配置DMA接收串口數據,直到接收到空閑信號。
  • __HAL_DMA_DISABLE_IT:禁用DMA的半傳輸中斷。
(3)標準輸入輸出重定向

為了在STM32上使用標準輸入輸出函數(如printfscanf),需要重定向fputcfgetc函數:

int fputc(int ch, FILE* str)
{HAL_UART_Transmit(&huart1, (uint8_t *) &ch, 1, 10);return ch;
}int fgetc(FILE *fp)
{uint8_t ch = 0;HAL_UART_Receive(&huart1, &ch, 1, 0xffff);return ch;
}

使用說明

  • fputc:將字符通過串口發送。
  • fgetc:從串口接收字符。

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

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

相關文章

PM2 完全指南:Node.js 應用后臺啟動、關閉與重啟詳解

文章目錄 **PM2 完全指南:Node.js 應用后臺啟動、關閉與重啟詳解****1. 什么是 PM2?****2. 安裝 PM2****全局安裝****驗證安裝** **3. 使用 PM2 啟動 Node.js 應用****基本啟動****指定應用名稱****集群模式(多進程負載均衡)****監…

Linux環境變量詳解

引言 在Linux系統中,環境變量是一種非常重要的概念,它影響著系統的運行方式和應用程序的行為。無論你是Linux新手還是經驗豐富的管理員,深入理解環境變量都能幫助你更高效地使用和管理Linux系統。本文將從基礎概念到高級應用,全面…

408 計算機網絡 知識點記憶(8)

前言 本文基于王道考研課程與湖科大計算機網絡課程教學內容,系統梳理核心知識記憶點和框架,既為個人復習沉淀思考,亦希望能與同行者互助共進。(PS:后續將持續迭代優化細節) 往期內容 408 計算機網絡 知識…

@linux系統SSL證書轉換(Openssl轉換PFX)

在Linux中,你可以使用OpenSSL工具將PFX/P12格式的證書轉換為單獨的CRT(證書)、KEY(私鑰)文件以及提取證書鏈 1. 提取私鑰文件(.key) openssl pkcs12 -in your_certificate.pfx -nocerts -out private.key -nodes系統會…

DAOS系統架構-組件

如上圖所示,一個完整的DAOS系統是由管理節點組件、客戶端節點組件、服務端節點組件以及網絡通信組件四個部分組成。管理節點組件通過管理網絡通道(藍色)對DAOS服務管理和監控。客戶端節點組件通過數據網絡通道(紅色)與…

制作一款打飛機游戲教程2:背景滾動

滾動原型開發 接下來,我們開始聚焦滾動原型的開發。我們需要確定游戲關卡的長度以及背景滾動的速度。 地圖與精靈空間限制 在開發過程中,我們遇到了地圖與精靈空間限制的問題。PICO 8的地圖編輯器下半部分與精靈表共享空間,這意味著我們只…

計算機組成原理——CPU與存儲器連接例題

計算機組成原理——CPU與存儲器連接例題 設CPU共有16根地址線和8根數據線,并用(MREQ) ?作為訪存控制信號(低電平有效),(WR) ?作為讀/寫命令信號(高電平讀,低電平寫)。現有下列存儲芯片&#…

GNSS靜態數據處理

1 安裝數據處理軟件:儀器之星(InStar )和 Trimble Business Center 做完控制點靜態后,我們需要下載GNSS數據,對靜態數據進行處理。在處理之前需要將相關軟件在自己電腦上安裝好: 儀器之星(InS…

Process Explorer 性能調優實戰:精準定位資源泄漏與高負載進程

一、下載與安裝 ?下載地址? Process Explorer安裝包下載:https://pan.quark.cn/s/950c36ba5364下載后解壓壓縮包,運行 procexp.exe(32 位系統)或 procexp64.exe(64 位系統)?。 ?界面概覽? 主界面以樹…

SVMSPro分布式綜合安防管理平臺-->以S3存儲革新,開啟智能安防新紀元

SVMSPro分布式綜合安防管理平臺–>以S3存儲革新,開啟智能安防新紀元 在數字化轉型浪潮下,企業安防管理正面臨海量數據存儲、跨區域協同以及數據安全的嚴峻挑戰。如何實現高效、彈性、低成本的存儲擴容?如何確保關鍵錄像數據萬無一失&…

Python 裝飾器(Decorator)

文章目錄 代碼解析1. 裝飾器定義 timer(func)2. 應用裝飾器 timer **執行流程****關鍵點****實際應用場景****改進版本(帶 functools.wraps)** 這是一個 Python 裝飾器(Decorator) 的示例,用于測量函數的執行時間。下…

git commit時自動生成Change-ID

創建全局鉤子目錄: 創建一個全局的Git hooks目錄: mkdir -p ~/.githooks 下載并設置commit-msg鉤子腳本: 下載Gerrit的commit-msg鉤子腳本,并放置在全局鉤子目錄中(如下載不了,可從本頁面附件中下載,“…

最新Ktransformers v0.24(Docker)并發部署DeepSeek-V3-0324模型

一、介紹 KTransformers v0.2.4 發布說明 我們非常高興地宣布,期待已久的 KTransformers v0.2.4 現已正式發布!在這個版本中,我們對整 體架構進行了重大重構,更新了超過 1 萬行代碼,為社區帶來了備受期待的多并發支…

飛牛私有云5大硬核功能實測!

📸 1. 智能相冊:AI搜圖原圖自由 - 自動備份:手機照片/視頻實時同步,支持RAW格式、實況照片無損備份,釋放128G手機秒變256G。 - AI黑科技: - 人臉識別:自動歸類人物相冊,輸入「媽媽…

webrtc pacer模塊(一) 平滑處理的實現

Pacer起到平滑碼率的作用,使發送到網絡上的碼率穩定。如下的這張創建Pacer的流程圖,其中PacerSender就是Pacer,其中PacerSender就是Pacer。這篇文章介紹它的核心子類PacingController及Periodic模式下平滑處理的基本流程。平滑處理流程中還有…

【android bluetooth 協議分析 01】【HCI 層介紹 1】【hci_packets.pdl 介紹】

在 AOSP 的藍牙協議棧 (Gabeldorsche) 中,hci_packets.pdl 是一個 協議描述語言文件,用于定義 HCI (Host Controller Interface) 層的數據包結構和通信協議。以下是詳細解析: 1. 文件作用 system/gd/hci/hci_packets.pdl 協議自動化生成&…

操作系統 4.2-鍵盤

鍵盤中斷初始化和處理 提取的代碼如下: // con_init 函數,初始化控制臺(包括鍵盤)的中斷 void con_init(void) {set_trap_gate(0x21, &keyboard_interrupt); } ? // 鍵盤中斷處理函數 .globl _keyboard_interrupt _keyboard…

深入理解Softmax函數及其在PyTorch中的實現

Softmax函數簡介 Softmax函數在機器學習和深度學習中,被廣泛用于多分類問題的輸出層。它將一個實數向量轉換為概率分布,使得每個元素介于0和1之間,且所有元素之和為1。 Softmax函數的定義 給定一個長度為 K K K的輸入向量 z [ z 1 , z 2 …

Vue 3 響應式更新問題解析

在 Vue 3 中,即使使用 reactive 或 ref 創建的響應式數據,當數據量很大時也可能出現更新不及時的情況。以下是原因和解決方案: 核心原因 ??響應式系統優化機制??: Vue 3 使用 Proxy 實現響應式,比 Vue 2 更高效但為…

異形遮罩之QML中的 `OpacityMask` 實戰

文章目錄 🌧? 傳統實現的問題👉 效果圖 🌈 使用 OpacityMask 的理想方案👉代碼如下🎯 最終效果: ? 延伸應用🧠 總結 在 UI 設計中,經常希望實現一些“異形區域”擁有統一透明度或顏…