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