STM32HAL 快速入門(七):GPIO 輸入之光敏傳感器控制蜂鳴器

STM32HAL 快速入門(七):GPIO 輸入之光敏傳感器控制蜂鳴器

前言

大家好,這里是 Hello_Embed。上一篇我們用 GPIO 輸入模式實現了按鍵控制 LED,本篇將進階到 “光敏傳感器控制蜂鳴器”—— 通過讀取光敏傳感器的信號,實現 “環境變暗時 LED 點亮、蜂鳴器報警” 的聯動效果,進一步熟悉 GPIO 輸入與輸出的結合應用。下一篇我們會引入 “中斷” 的概念,讓 GPIO 響應更高效。

一、核心組件與原理

本次實戰涉及光敏傳感器模塊、有源蜂鳴器模塊,以及 STM32 的 GPIO 引腳,先了解各組件的工作原理。

1. 光敏傳感器模塊
  • 使用說明
    請添加圖片描述
  • 電路圖
    請添加圖片描述
  • 核心芯片 LM393(比較器)
    • 當 “+” 引腳電壓 > “-” 引腳電壓時,DO 端輸出高電平,模塊自帶 LED 熄滅;
    • 當 “+” 引腳電壓 < “-” 引腳電壓時,DO 端輸出低電平,模塊自帶 LED 點亮。
  • 光照與電壓的關系
    • 光照增強 → 光敏電阻阻值減小 → “+” 引腳電壓降低 → DO 輸出高電平(模塊 LED 滅);
    • 光照減弱 → 光敏電阻阻值增大 → “+” 引腳電壓升高 → DO 輸出低電平(模塊 LED 亮)。
2. 有源蜂鳴器模塊
  • 實物圖
    請添加圖片描述
  • 原理圖
    請添加圖片描述
  • 控制邏輯:通過 2 號 I/O 引腳控制,當 I/O 為低電平時,蜂鳴器發聲;高電平時,蜂鳴器不發聲。
二、硬件連接

按以下方式連接電路(與韋東山課程保持一致):

  • 光敏傳感器
    • AO 腳(模擬輸出,本篇暫不用)接 PA3;
    • DO 腳(數字輸出)接 PB11;
    • 剩余兩腳分別接 GND 和 VCC。
  • 蜂鳴器
    • I/O 控制腳接 PA8;
    • 剩余兩腳分別接 GND 和 VCC。
  • 系統板 LED:沿用 PC13(已配置為輸出)。
    實物連接圖
    請添加圖片描述
三、CubeMX 配置
  1. 引腳功能配置
    • PB11:GPIO_Input(讀取光敏傳感器 DO 信號);
    • PA8:GPIO_Output(控制蜂鳴器);
    • PC13:GPIO_Output(控制系統板 LED)。
  2. 生成工程(確保時鐘、調試模式等基礎配置正確)。
四、代碼實現:封裝函數與邏輯控制

為使代碼更清晰,我們封裝三個函數分別處理 “判斷環境亮度”“控制蜂鳴器”“控制 LED”,再在主循環中調用。

1. 函數封裝(在/* USER CODE BEGIN PV */區域)
/* USER CODE BEGIN PV */
// 判斷環境是否變暗(光敏傳感器DO輸出高電平表示光照強,低電平表示光照弱)
static int Dark(void)
{// PB11為低電平時,返回1(暗);高電平時,返回0(亮)return (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11) == GPIO_PIN_RESET);
}// 控制蜂鳴器(on=1時發聲,on=0時不發聲)
static void BeepControl(int on)
{if (on)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);  // 低電平發聲elseHAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);    // 高電平不發聲
}// 控制LED(on=1時點亮,on=0時熄滅)
static void LedControl(int on)
{if (on)HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 低電平點亮elseHAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);    // 高電平熄滅
}
/* USER CODE END PV */
2. 主循環邏輯(在while(1)中)
while (1)
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if (Dark())  // 環境變暗{BeepControl(1);  // 蜂鳴器發聲LedControl(1);   // LED點亮}else  // 環境變亮{BeepControl(0);  // 蜂鳴器不發聲LedControl(0);   // LED熄滅}/* USER CODE END 3 */
}
五、實驗結果
  • 未遮擋光敏傳感器(光照強)
    請添加圖片描述
    光敏傳感器模塊雙燈亮(DO 輸出低電平),PC13 LED 熄滅,蜂鳴器不發聲。
  • 遮擋光敏傳感器(光照弱)
    請添加圖片描述
    光敏傳感器模塊一燈滅(DO 輸出高電平),PC13 LED 點亮,蜂鳴器鳴叫。
結尾

本文通過 “光敏傳感器控制蜂鳴器和 LED”,進一步練習了 GPIO 輸入信號的讀取與輸出控制的結合,核心是通過封裝函數使邏輯更清晰。但這種 “循環查詢” 的方式效率較低 —— 如果需要同時處理多個任務,持續查詢某一引腳會占用大量 CPU 資源。
下一篇筆記,我們將學習 “GPIO 中斷”,讓引腳狀態變化時主動通知 CPU 處理,大幅提升響應效率。Hello_Embed 繼續帶你探索更高效的 GPIO 應用方式,敬請期待~

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

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

相關文章

windows環境,安裝kafka

步驟 1: 準備工作 確保已安裝 Java&#xff1a;Kafka 需要 Java 運行時環境 (JRE) 或 Java 開發工具包 (JDK) 來運行。請確認您的系統上已安裝了 Java&#xff0c;并且 JAVA_HOME 環境變量正確配置。 解壓 Kafka&#xff1a;將下載的 Kafka 壓縮包解壓到一個目錄&#xff0c;比…

機器翻譯60天修煉專欄介紹和目錄

文章目錄 第一章:機器翻譯基礎認知與語言學鋪墊 第二章:經典機器翻譯模型(統計機器翻譯) 第三章:神經網絡基礎與詞向量技術 第四章:神經機器翻譯(NMT)基礎架構 第五章:NMT模型進階與訓練實踐 第六章:預訓練模型與機器翻譯應用 第七章:研究前沿與綜合項目 導論:學習…

openwrt增加自定義網頁

一. 簡介 本文介紹在OpenWRT中使用Luci框架定制設備配置頁面的方法,包括添加靜態頁面和參數配置頁面的過程,以及如何利用lua腳本實現界面與功能的結合。 二. Luci介紹 UCI 是 Openwrt 中為實現所有系統配置的一個統一接口,英文名 Unified Configuration Interface,即統一…

微服務的編程測評系統11-jmeter-redis-競賽列表

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言1. 退出登錄1.1 后端1.2 前端2. 獲取當前用戶信息3. C端用戶競賽列表功能3.1 后端3.2 Jmeter-基本操作3.3 數據版本性能測試-壓力測試3.4 redis版本-緩存結構設計…

海濱浴場應急廣播:守護碧海藍天的安全防線

海濱浴場應急廣播&#xff1a;守護碧海藍天的安全防線&#xff01;海濱浴場&#xff0c;是人們休閑娛樂、親近自然的理想場所。然而&#xff0c;變幻莫測的海洋環境也潛藏著諸多安全隱患&#xff0c;如溺水、離岸流、海蜇蜇傷、極端天氣等。為了有效應對突發事件&#xff0c;保…

華曦達港股IPO觀察丨以創新研發為筆,構建AI Home智慧生活新藍圖

深圳市華曦達科技股份有限公司自創立伊始&#xff0c;便將敏銳的市場洞察與前沿技術追蹤視為生命線。通過構建一支卓越的研發團隊&#xff0c;公司專注于自主核心技術的深耕與積累&#xff0c;以精密的硬件與創新的軟件筑起堅實的技術壁壘。其精心打造的“技術創新&#xff0d;…

構建現代化的Web UI自動化測試框架:從圖片上傳測試實踐說起

構建現代化的Web UI自動化測試框架&#xff1a;從圖片上傳測試實踐說起如何設計一個可維護、可擴展的Web UI自動化測試框架&#xff1f;本文通過一個圖片上傳測試實例&#xff0c;詳細介紹專業測試框架的搭建與實踐。當前測試框架結構 首先&#xff0c;讓我們了解一下當前的測試…

Apache IoTDB:大數據時代時序數據庫選型的技術突圍與實踐指南

摘要&#xff1a;時序數據庫在大數據時代迎來爆發式增長&#xff0c;IoTDB作為Apache頂級開源項目展現出顯著優勢&#xff1a;1. 性能卓越&#xff1a;支持千萬級數據點/秒寫入&#xff0c;18:1高壓縮比&#xff0c;查詢延遲低至500ms&#xff1b;2. 創新架構&#xff1a;采用樹…

2025年8月16日(星期六):雨騎古蓮村游記

清晨&#xff0c;當第一縷微光還未完全驅散夜幕的靜謐&#xff0c;我們這群由校長領銜的騎行愛好者已整裝待發。咖啡節早市尚未開攤&#xff0c;空氣中彌漫著一種期待與寧靜交織的氛圍&#xff0c;仿佛連時間都在為我們即將開啟的旅程而放慢腳步。今天的目標是古蓮村&#xff0…

Pandas數據預處理中缺失值處理

一、缺失值的概念表現形式1.數據庫中常用null表示2.部分編程語言中用NA表示3.可能表現為空字符串&#xff08;‘’&#xff09;或特定數值4.在Pandas中統一用NaN表示&#xff08;來自NumPy庫&#xff0c;NaN、NAN、nan本質一致&#xff09;NaN的特性1.與任何值都不相等&#xf…

計算機網絡:(十五)TCP擁塞控制與擁塞控制算法深度剖析

> 當網絡變成"堵城",TCP如何化身智能交通指揮家?揭秘百萬級并發背后的流量控制藝術! ### 一、生死攸關:為什么需要擁塞控制? **真實災難案例**:1986年勞倫斯伯克利實驗室網絡大崩潰,因缺乏擁塞控制導致全網癱瘓36小時。TCP擁塞控制由此誕生,核心解決**資…

python中的單下劃線“_”與雙下劃線“__”的使用場景及“左右雙下劃線”(魔術方法:`__xxx__`)

在Python中&#xff0c;單下劃線“_”和雙下劃線“__”的使用場景和含義有顯著區別&#xff0c;主要體現在命名約定和語法 一、單下劃線“_”的使用場景 單下劃線更多是編程約定&#xff08;而非強制語法&#xff09;&#xff0c;用于傳遞特定的“暗示”&#xff0c;不影響代碼…

我們為什么需要時序數據庫?

引言在當今數據驅動的世界中&#xff0c;時間序列數據正以前所未有的速度增長。從物聯網設備傳感器、金融交易記錄到應用程序性能監控&#xff0c;時間序列數據無處不在。傳統的關系型數據庫在處理這類數據時往往力不從心&#xff0c;這時時序數據庫(Time Series Database, TSD…

python-林粒粒的視頻筆記1

python的方法和函數指什么 可變類型和不可變類型 不可變類型&#xff0c;比如字符串通過方法調用后&#xff0c;字符串本身的值不改變 要改變需要重新賦值才能進行改變 比如可變數據類型類型&#xff0c;調用方法后可以直接改變原列表 因此&#xff0c;可變數據類型需要再重新賦…

CentOS 7的下載與安裝

一 、CentOS 7的下載與安裝 注意&#xff1a; CentOS 7 已于2024年6月30日停止維護&#xff01; 1、下載 由于 centos 7 已經停止維護&#xff0c;部分鏡像網站移除了對centos 7的支持&#xff0c;這里找到了部分現在還可以使用的鏡像網站 阿里云開源鏡像站&#xff1a;http…

礦物分類系統開發筆記(二):模型訓練[刪除空缺行]

目錄 一、階段銜接與開發目標 二、數據準備 三、模型選擇與訓練 1. 邏輯回歸&#xff08;LR&#xff09; 2. 隨機森林&#xff08;RF&#xff09; 3. 高斯樸素貝葉斯&#xff08;GNB&#xff09; 4. 支持向量機&#xff08;SVM&#xff09; 5. AdaBoost 6. XGBoost 四…

通信方式:命名管道

一、命名管道 1. 命名管道的原理 有了匿名管道&#xff0c;理解命名管道就非常簡單了。 對于普通文件而言&#xff0c;兩個進程打開同一個文件&#xff0c;OS是不會將文件加載兩次的&#xff0c;這兩個進程都會指向同一個文件&#xff0c;那么&#xff0c;也就享有同一份 in…

如何將數據庫快速接入大模型實現智能問數,實現chatbi、dataagent,只需短短幾步,不需要配置工作流!

智能問數系統初始化操作流程 一、系統初始化與管理員賬號創建登錄與初始化提示&#xff1a;首次訪問系統登錄頁&#xff0c;若系統未初始化&#xff0c;會彈出 “系統未完成初始化&#xff0c;請初始化管理員賬號” 提示&#xff0c;點擊【去創建】。填寫管理員信息&#xff1a…

告別手寫文檔!Spring Boot API 文檔終極解決方案:SpringDoc OpenAPI

在前后端分離和微服務盛行的今天&#xff0c;API 文檔是團隊協作的“通用語言”。一份清晰、準確、實時同步的文檔&#xff0c;能極大提升開發和聯調效率。然而&#xff0c;手動編寫和維護 API 文檔&#xff08;如 Word、Markdown 或 Postman&#xff09;是一場永無止境的噩夢—…

N4200EX是一款全智能超聲波檢測儀產品簡析

N4200EX是一款全智能超聲波檢測儀&#xff0c;適用于石油、石化、天然氣、氣體生產等行業的壓力管路、閥門、設備的各種防爆場合氣體泄漏、真空泄漏、閥門內漏檢測。●本安防爆設計&#xff0c;防爆、防塵、防水、抗摔。●適應惡劣環境&#xff0c;可在-25℃超低溫環境檢測&…