STM32單片機(jī)于2007年由意法半導(dǎo)體有限公司(ST公司)推出,經(jīng)過(guò)多年的發(fā)展,已經(jīng)成為通用32位MCU(microcontroller unit,微控制器或單片機(jī))市場(chǎng)的領(lǐng)先產(chǎn)品。截至2022年,STM32系列在通用32位MCU市場(chǎng)份額排名第一。
STM32單片機(jī)程序目前有STD庫(kù)、HAL/LL庫(kù)兩種開(kāi)發(fā)方式。STD庫(kù)是ST公司早期推出的驅(qū)動(dòng)庫(kù),開(kāi)發(fā)人員可通過(guò)調(diào)用驅(qū)動(dòng)庫(kù)的API函數(shù)開(kāi)發(fā)STM32單片機(jī)程序。STD庫(kù)開(kāi)發(fā)方式曾經(jīng)是主流的STM32單片機(jī)程序開(kāi)發(fā)方式,但由于官方后續(xù)不再維護(hù)更新,STD庫(kù)無(wú)法支持新推出的STM32單片機(jī)型號(hào),因此STD庫(kù)的使用者不斷減少。HAL/LL庫(kù)是繼STD庫(kù)之后,由ST公司推出的新型驅(qū)動(dòng)庫(kù),支持全系列STM32單片機(jī)產(chǎn)品,并且HAL/LL庫(kù)直接嵌入了ST公司推出的集成開(kāi)發(fā)環(huán)境
(IDE)STM32CubeIDE中,用戶可先進(jìn)行圖形化配置生成初始化代碼,再完成STM32單片機(jī)其他代碼的編寫。實(shí)際上,大量的代碼由IDE自動(dòng)生成,真正實(shí)現(xiàn)了編程的半自動(dòng)化,開(kāi)發(fā)效率得到極大提高。本書采用的是HAL/LL庫(kù)開(kāi)發(fā)方式。
本書以項(xiàng)目化教學(xué)模式編寫,每個(gè)項(xiàng)目分為若干個(gè)任務(wù),每個(gè)任務(wù)分別基于仿真平臺(tái)和實(shí)物進(jìn)行開(kāi)發(fā)與調(diào)試。仿真平臺(tái)采用Proteus 8.6及以上版本,Proteus的優(yōu)勢(shì)在于方便快捷,在缺乏實(shí)驗(yàn)條件的情況下,只需要一臺(tái)計(jì)算機(jī)就可完成STM32單片機(jī)程序的開(kāi)發(fā)與調(diào)試。實(shí)物采用百科榮創(chuàng)(北京)科技發(fā)展有限公司生產(chǎn)的嵌入式創(chuàng)新實(shí)驗(yàn)箱,在真實(shí)環(huán)境下驗(yàn)證STM32單片機(jī)程序的正確性。
本書針對(duì)高職院校學(xué)生的特點(diǎn),做到理論知識(shí)適用、夠用,專業(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ù)說(shuō)明或任務(wù)實(shí)現(xiàn)等。
(2) 采用企業(yè)真實(shí)任務(wù),把知識(shí)、技能的學(xué)習(xí)融入任務(wù)完成過(guò)程中,真正實(shí)現(xiàn)做中學(xué),學(xué)中做的教學(xué)理念。
(3) 每章前面設(shè)置素養(yǎng)目標(biāo),后面設(shè)置拓展閱讀,體現(xiàn)文化自信、家國(guó)情懷、職業(yè)道德、工匠精神。
本書由陳明忠任主編,陳妍、陳麒、曾曦琳任副主編。具體編寫分工如下: 第1章、第2章和第8章由陳妍編寫,第3章至第6章由陳明忠編寫,第7章由曾曦琳編寫,第9章由陳麒編寫。本書由汕頭職業(yè)技術(shù)學(xué)院陳明忠教授統(tǒng)閱定稿。在本書的編寫和出版過(guò)程中得到了汕頭職業(yè)技術(shù)學(xué)院、廣州華立學(xué)院、百科榮創(chuàng)(北京)科技發(fā)展有限公司、清華大學(xué)出版社各位老師的大力支持,在此一并表示衷心感謝。
由于編者水平所限,書中如有不足之處,敬請(qǐng)使用本書的讀者批評(píng)指正,以便修訂時(shí)改進(jìn)。如您在使用本書的過(guò)程中有其他意見(jiàn)或建議,懇請(qǐng)向編者踴躍提出寶貴意見(jiàn)。
編者
2025年1月
本書配套資源
第1章進(jìn)入STM32世界00
1.1嵌入式系統(tǒng)簡(jiǎn)介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程序的開(kāi)發(fā)環(huán)境安裝00
1.4.1圖形化配置工具: STM32CubeIDE00
1.4.2Keil MDK開(kāi)發(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ǔ)言的高級(jí)應(yīng)用0
2.1與Keil MDK開(kāi)發(fā)有關(guān)的重點(diǎn)知識(shí)0
2.1.1帶符號(hào)數(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庫(kù)的工作模式表示0
3.3LED循環(huán)點(diǎn)亮控制0
3.3.1基于HAL庫(kù)的輸入/輸出函數(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)先級(jí)0
5.2.4基于HAL庫(kù)的外部中斷函數(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)識(shí)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信號(hào)控制呼吸燈0
練習(xí)題0
第7章串行通信設(shè)計(jì)與實(shí)現(xiàn)0
7.1STM32的串行通信 0
7.1.1串行通信的基本知識(shí)0
7.1.2STM32與PC的串口通信0
7.2USART串口通信設(shè)計(jì)
7.2.1基于HAL庫(kù)的串口數(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ǔ)知識(shí)
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芯片簡(jiǎn)介
8.1.1SPI總線簡(jiǎn)介
8.1.2DAC模塊(MCP4921)簡(jiǎn)介
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ī)超聲波測(cè)距
9.3.1超聲波測(cè)距原理
9.3.2超聲波測(cè)距公式驗(yàn)證
9.3.3基于Proteus虛擬仿真的超聲波測(cè)距
9.3.4基于STM32F103嵌入式實(shí)驗(yàn)箱的超聲波測(cè)距
練習(xí)題
參考文獻(xiàn)