STM32單片機于2007年由意法半導體有限公司(ST公司)推出,經(jīng)過多年的發(fā)展,已經(jīng)成為通用32位MCU(microcontroller unit,微控制器或單片機)市場的領先產(chǎn)品。截至2022年,STM32系列在通用32位MCU市場份額排名第一。
STM32單片機程序目前有STD庫、HAL/LL庫兩種開發(fā)方式。STD庫是ST公司早期推出的驅(qū)動庫,開發(fā)人員可通過調(diào)用驅(qū)動庫的API函數(shù)開發(fā)STM32單片機程序。STD庫開發(fā)方式曾經(jīng)是主流的STM32單片機程序開發(fā)方式,但由于官方后續(xù)不再維護更新,STD庫無法支持新推出的STM32單片機型號,因此STD庫的使用者不斷減少。HAL/LL庫是繼STD庫之后,由ST公司推出的新型驅(qū)動庫,支持全系列STM32單片機產(chǎn)品,并且HAL/LL庫直接嵌入了ST公司推出的集成開發(fā)環(huán)境
(IDE)STM32CubeIDE中,用戶可先進行圖形化配置生成初始化代碼,再完成STM32單片機其他代碼的編寫。實際上,大量的代碼由IDE自動生成,真正實現(xiàn)了編程的半自動化,開發(fā)效率得到極大提高。本書采用的是HAL/LL庫開發(fā)方式。
本書以項目化教學模式編寫,每個項目分為若干個任務,每個任務分別基于仿真平臺和實物進行開發(fā)與調(diào)試。仿真平臺采用Proteus 8.6及以上版本,Proteus的優(yōu)勢在于方便快捷,在缺乏實驗條件的情況下,只需要一臺計算機就可完成STM32單片機程序的開發(fā)與調(diào)試。實物采用百科榮創(chuàng)(北京)科技發(fā)展有限公司生產(chǎn)的嵌入式創(chuàng)新實驗箱,在真實環(huán)境下驗證STM32單片機程序的正確性。
本書針對高職院校學生的特點,做到理論知識適用、夠用,專業(yè)技能實用、管用,密切聯(lián)系實際,本書的主要特色如下。
(1) 采用項目引領、任務驅(qū)動的模式。將一個項目分為若干個任務,每個任務設置任務目標、任務說明或任務實現(xiàn)等。
(2) 采用企業(yè)真實任務,把知識、技能的學習融入任務完成過程中,真正實現(xiàn)做中學,學中做的教學理念。
(3) 每章前面設置素養(yǎng)目標,后面設置拓展閱讀,體現(xiàn)文化自信、家國情懷、職業(yè)道德、工匠精神。
本書由陳明忠任主編,陳妍、陳麒、曾曦琳任副主編。具體編寫分工如下: 第1章、第2章和第8章由陳妍編寫,第3章至第6章由陳明忠編寫,第7章由曾曦琳編寫,第9章由陳麒編寫。本書由汕頭職業(yè)技術學院陳明忠教授統(tǒng)閱定稿。在本書的編寫和出版過程中得到了汕頭職業(yè)技術學院、廣州華立學院、百科榮創(chuàng)(北京)科技發(fā)展有限公司、清華大學出版社各位老師的大力支持,在此一并表示衷心感謝。
由于編者水平所限,書中如有不足之處,敬請使用本書的讀者批評指正,以便修訂時改進。如您在使用本書的過程中有其他意見或建議,懇請向編者踴躍提出寶貴意見。
編者
2025年1月
本書配套資源
第1章進入STM32世界00
1.1嵌入式系統(tǒng)簡介00
1.1.1嵌入式系統(tǒng)的定義00
1.1.2嵌入式系統(tǒng)的組成00
1.1.3嵌入式系統(tǒng)的應用領域00
1.2ARM和STM32單片機00
1.2.1什么是ARM 00
1.2.2什么是STM32單片機00
1.3STM32單片機的引腳和內(nèi)部結(jié)構00
1.3.1引腳結(jié)構00
1.3.2單片機最小系統(tǒng)00
1.3.3STM32內(nèi)部結(jié)構00
1.4STM32程序的開發(fā)環(huán)境安裝00
1.4.1圖形化配置工具: STM32CubeIDE00
1.4.2Keil MDK開發(fā)環(huán)境00
1.4.3虛擬仿真工具: Proteus00
1.4.4STM32F103嵌入式實驗箱0
1.5Proteus仿真工具的使用0
1.5.1任務目標0
1.5.2任務實現(xiàn)0
練習題0
第2章C語言的高級應用0
2.1與Keil MDK開發(fā)有關的重點知識0
2.1.1帶符號數(shù)的原碼、反碼、補碼0
2.1.2位運算符和位運算0
2.1.3編譯預處理0
2.1.4外部變量0
2.2用戶自己建立數(shù)據(jù)類型0
2.2.1使用typedef聲明新類型0
2.2.2使用結(jié)構體類型0
2.2.3使用枚舉類型0
2.3指針認知0
練習題0
第3章LED控制設計與實現(xiàn)0
3.1LED閃爍控制0
3.1.1基于Proteus虛擬仿真的LED閃爍控制0
3.1.2基于STM32F103嵌入式實驗箱的LED閃爍控制0
3.2I/O引腳的工作模式0
3.2.1I/O引腳的工作模式類別0
3.2.2基于HAL庫的工作模式表示0
3.3LED循環(huán)點亮控制0
3.3.1基于HAL庫的輸入/輸出函數(shù)0
3.3.2基于Proteus虛擬仿真的LED循環(huán)點亮控制0
3.3.3基于STM32F103嵌入式實驗箱的LED循環(huán)點亮控制0
3.4LED跑馬燈控制0
3.4.1基于Proteus虛擬仿真的LED跑馬燈控制0
3.4.2基于STM32F103嵌入式實驗箱的LED跑馬燈控制0
練習題0
第4章數(shù)碼管顯示設計與實現(xiàn)0
4.1數(shù)碼管靜態(tài)顯示設計與實現(xiàn)0
4.1.1數(shù)碼管的結(jié)構和字形碼0
4.1.2基于Proteus虛擬仿真0
4.2數(shù)碼管動態(tài)顯示設計與實現(xiàn)0
4.2.1基于Proteus虛擬仿真數(shù)碼管動態(tài)顯示0
4.2.2基于STM32F103嵌入式實驗箱數(shù)碼管動態(tài)顯示0
練習題0
第5章按鍵控制設計與實現(xiàn)0
5.1按鍵抖動和消抖0
5.1.1按鍵抖動0
5.1.2消抖方法0
5.2STM32外部中斷0
5.2.1STM32中斷及分類0
5.2.2STM32外部中斷原理0
5.2.3STM32的中斷優(yōu)先級0
5.2.4基于HAL庫的外部中斷函數(shù)0
5.3中斷方式的按鍵控制0
5.3.1基于Proteus虛擬仿真的中斷方式的按鍵控制0
5.3.2基于STM32F103嵌入式實驗箱的中斷方式的按鍵控制0
練習題0
第6章STM32定時器應用設計與實現(xiàn)0
6.1STM32定時器介紹0
6.1.1認識STM32定時器0
6.1.2STM32定時器中與計數(shù)相關的寄存器0
6.1.3與計數(shù)相關的STM32定時器函數(shù)0
6.2LED單燈閃爍之定時器延時(阻塞方式)0
6.2.1定時器的阻塞方式和非阻塞方式0
6.2.2基于Proteus虛擬仿真的LED單燈閃爍控制0
6.3LED循環(huán)點亮之定時器延時(中斷方式)0
6.3.1與中斷相關的STM32定時器函數(shù)0
6.3.2基于Proteus虛擬仿真的流水燈控制0
6.3.3基于STM32F103嵌入式實驗箱的流水燈控制0
6.4PWM控制呼吸燈0
6.4.1STM32定時器的PWM輸出0
6.4.2PWM信號控制呼吸燈0
練習題0
第7章串行通信設計與實現(xiàn)0
7.1STM32的串行通信 0
7.1.1串行通信的基本知識0
7.1.2STM32與PC的串口通信0
7.2USART串口通信設計
7.2.1基于HAL庫的串口數(shù)據(jù)收發(fā)函數(shù)
7.2.2基于Proteus虛擬仿真的串口通信
7.2.3基于STM32F103嵌入式實驗箱的串口通信
7.3基于終端顯示的RTC時鐘設計
7.3.1RTC基礎知識
7.3.2基于Proteus虛擬仿真的RTC實驗
7.3.3基于STM32F103嵌入式實驗箱的RTC實驗
7.4基于IIC總線的OLED液晶屏顯示
7.4.1IIC總線
7.4.2OLED12864液晶顯示屏
7.4.3基于Proteus虛擬仿真的液晶屏顯示
練習題
第8章數(shù)模轉(zhuǎn)換設計與實現(xiàn)
8.1SPI總線和DAC芯片簡介
8.1.1SPI總線簡介
8.1.2DAC模塊(MCP4921)簡介
8.2DAC數(shù)模轉(zhuǎn)換實例
練習題
第9章綜合實訓
9.1顯示終端工作原理
9.1.1LCD12864顯示模塊
9.1.23.5英寸TFT液晶屏模塊
9.2PWM控制直流電動機
9.2.1直流電動機與H橋電路
9.2.2基于Proteus虛擬仿真的直流電動機控制實訓
9.2.3基于STM32F103嵌入式實驗箱的直流電動機控制實訓
9.3STM32單片機超聲波測距
9.3.1超聲波測距原理
9.3.2超聲波測距公式驗證
9.3.3基于Proteus虛擬仿真的超聲波測距
9.3.4基于STM32F103嵌入式實驗箱的超聲波測距
練習題
參考文獻