国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個小項目看懂 STM32 全部外設

信盈達 ? 2026-01-09 19:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、項目目標:讓外設真正“協作起來”

這個小項目要實現的功能非常明確:

  1. 讀取溫度傳感器數據(ADC
  2. 顯示溫度在 OLED 上(I2C
  3. 溫度超限時蜂鳴器報警(PWM/定時器
  4. 通過按鍵調整報警閾值(GPIO 輸入)
  5. 通過串口輸出調試信息(UART
  6. 后臺定時刷新顯示(定時中斷 + DMA

這一個項目,幾乎覆蓋了 STM32 的全部核心外設模塊,是最適合系統學習的實踐框架。


二、外設初始化思路

1. RCC 時鐘系統

所有外設都依賴時鐘。先開啟 GPIO、USART、ADC、TIM、I2C 等模塊的時鐘。

  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
  2. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_I2C1,ENABLE);

2. GPIO 配置

  • 按鍵:輸入模式,帶上拉電阻
  • 蜂鳴器、LED:推挽輸出
  • 串口 TX/RX:復用推挽輸出、浮空輸入
  • I2C:開漏輸出

三、ADC 模塊:采集溫度數據

ADC 是模擬世界進入 MCU 的入口。

  • 選擇通道(如 ADC1_IN0)
  • 配置采樣時間
  • 啟動轉換并讀取結果
  1. ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);
  2. ADC_SoftwareStartConvCmd(ADC1,ENABLE);
  3. while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
  4. tempValue=ADC_GetConversionValue(ADC1);

可通過分壓電路接 NTC 熱敏電阻,將電壓轉換為溫度值。


四、I2C 模塊:驅動 OLED 顯示

OLED 顯示模塊常用 SSD1306 芯片,通過 I2C 與 MCU 通信

  • 初始化 I2C(SCL/SDA)
  • 發送初始化命令
  • 周期刷新顯示緩沖區
  1. I2C_Start();
  2. I2C_SendByte(0x78);// 設備地址
  3. I2C_SendByte(0x00);// 命令模式
  4. I2C_SendByte(0xAF);// 開啟顯示
  5. I2C_Stop();

在循環中刷新數據顯示:

  1. 溫度:26.5
  2. 閾值:30
  3. 狀態:正常

五、PWM + 定時器:控制蜂鳴器報警

PWM 信號可由定時器輸出,通過占空比控制蜂鳴器響度。

  • 配置定時器周期、分頻系數
  • 配置 PWM 模式
  • 當溫度超出閾值時,開啟 PWM 輸出
  1. TIM_OCInitTypeDef TIM_OCInitStructure;
  2. TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  3. TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  4. TIM_OCInitStructure.TIM_Pulse=500;
  5. TIM_OC1Init(TIM3,&TIM_OCInitStructure);

六、UART 串口輸出調試信息

嵌入式開發中,UART 是最常用的調試工具。

我們可以定期輸出溫度、閾值、報警狀態,用于監控系統狀態。

  1. printf("Temp=%.2f, Th=%.2f, Status=%s\r\n",temp,threshold,status);

七、按鍵輸入:閾值動態調整

按鍵檢測需要消抖處理,推薦使用定時中斷周期采樣。

  • 按下 “+”:閾值上調
  • 按下 “-”:閾值下降
  1. if(KEY_UP==0)threshold+=1;
  2. if(KEY_DOWN==0)threshold-=1;

八、DMA + 定時中斷:后臺刷新機制

為了讓系統持續工作但不占用主循環,可使用 DMA 結合定時中斷實現后臺任務:

  • 定時器中斷周期觸發一次數據刷新
  • DMA 自動搬運顯示數據到 I2C 緩沖區
  • 主循環只負責邏輯判斷

九、系統主循環邏輯

綜合以上外設,主循環的結構大致如下:

  1. while(1)
  2. {
  3. temp=Read_Temperature();
  4. if(temp>threshold)
  5. Buzzer_On();
  6. else
  7. Buzzer_Off();
  8. OLED_ShowTemperature(temp);
  9. UART_PrintStatus(temp,threshold);
  10. }

這一小段循環,幾乎串起了 STM32 的所有關鍵模塊:

ADC 采集 → 數據邏輯判斷 → PWM 控制輸出 → I2C 顯示 → UART 調試。


十、擴展與總結

通過這個小項目,你會發現 STM32 的外設并不是孤立存在的,而是圍繞數據流與控制流相互協作:

  • 數據從ADC進入系統;
  • 經由定時器與中斷機制組織邏輯;
  • 由I2C、UART、PWM將結果輸出到外部世界。

理解這條鏈路,你就真正邁過了 STM32 的學習門檻。


結語

很多人學習 STM32 時陷在細節:一個寄存器、一段 HAL 庫函數、一個外設例程。

但當你通過一個完整的系統去理解它們的協作關系,外設就不再是孤立的模塊,而是系統的一部分。

從這個小項目開始,把“每個外設單獨跑通”變成“讓它們一起工作”,你就能真正讀懂 STM32。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2576

    文章

    55021

    瀏覽量

    791216
  • STM32
    +關注

    關注

    2309

    文章

    11161

    瀏覽量

    373395
  • RCC
    RCC
    +關注

    關注

    0

    文章

    96

    瀏覽量

    28507
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    適合新手做的小項目

    接觸Labview一個月,有沒有適合新手做的小項目,求介紹下
    發表于 08-09 14:14

    請問除了Flash芯片STM32F7的QSPI能接其他外設嗎?

    如題,最近要用STM32F767ZI做一個小項目,需要用STM32F7外接QSPI
    發表于 11-23 08:41

    stm32做了小項目

    前些日子用stm32做了小項目,現在對項目中出現的些奇怪問題總結如下。這里不做代碼層面的探
    發表于 08-11 09:32

    使用NodeMCU開發一些小項目

    NodeMCU是開源的物聯網平臺,擁有開源,交互式,可編程,低成本,簡單,智能,WI-FI硬件等特點,可以在Arduino IDE中進行編程開發,對新手十分友好。這是本人使用NodeMCU開發的一些小項目,僅為自己
    發表于 11-01 06:13

    如何利用STM32開發計算器小項目

    如何利用STM32開發計算器小項目
    發表于 11-17 06:58

    使用STM32H750型號的單片機做一個小項目

    、問題敘述筆者最近在使用STM32H750型號的單片機做一個小項目,調試的時候發現無法進行軟件仿真,進入仿真之后出現下圖類似的錯誤,并且無法進入main函數。筆者在網上找了許多方法,
    發表于 11-23 07:36

    【野火魯班貓2開發板體驗】Debian + 物聯網 + 綜合小項目

    野火魯班貓2單板電腦=物聯網+綜合小項目野火開發板,魯班貓2單板電腦,這次分享物聯網+綜合小項目使用到外設有火焰傳感器,蜂鳴器,語音模塊
    發表于 03-08 20:12

    【魯班貓創意氛圍賽】魯班貓2單板電腦=物聯網+綜合小項目

    野火魯班貓2單板電腦=物聯網+綜合小項目 項目概述 這次分享物聯網+綜合小項目 使用的開發板 野火家的開發板,魯班貓2單板電腦開發板
    發表于 05-18 20:06

    單片機的一些小項目資料

    單片機的一些小項目,單片機入門必備,適合初學者
    發表于 11-18 17:24 ?11次下載

    物聯網小項目STM32F103單片機通過MQTT協議連接阿里云

    物聯網小項目STM32F103單片機通過MQTT協議連接阿里云
    發表于 11-19 10:51 ?43次下載
    物聯網<b class='flag-5'>小項目</b>:<b class='flag-5'>STM32</b>F103單片機通過MQTT協議連接阿里云

    STM32學習——入門小項目

    STM32學習——入門小項目
    發表于 12-07 17:21 ?72次下載
    <b class='flag-5'>STM32</b>學習——入門<b class='flag-5'>小項目</b>

    一個STM32CubeIDE項目

    使用STM32CubeIDE的第一個項目開始第一個項目添加代碼今天開始做一個
    發表于 12-29 19:29 ?11次下載
    第<b class='flag-5'>一個</b><b class='flag-5'>STM32</b>CubeIDE<b class='flag-5'>項目</b>

    Arduino Bootcamp師生小項目

    電子發燒友網站提供《Arduino Bootcamp師生小項目.zip》資料免費下載
    發表于 07-28 11:22 ?0次下載
    Arduino Bootcamp師生<b class='flag-5'>小項目</b>

    Linux小項目-數碼相冊設計

    這是基于Linux系統開發板設計小項目-數碼相冊,在LCD屏上可以顯示完成常見的圖片顯示,翻頁、旋轉、縮放等功能。
    的頭像 發表于 08-14 09:15 ?2966次閱讀

    【開源小項目】基于STM32的OLED舵機菜單顯示

    本文的OLED多級菜單UI為綜合性的STM32小項目,使用多傳感器與OLED顯示屏實現智能終端的效果。項目中的多級菜單UI使用了較為常見
    的頭像 發表于 01-16 12:06 ?5720次閱讀