STM32F0實(shí)戰(zhàn)(基于HAL庫(kù)開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書
定 價(jià):129 元
叢書名:華章科技
- 作者:高顯生 著
- 出版時(shí)間:2019/1/1
- ISBN:9787111612964
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP368.1
- 頁(yè)碼:742
- 紙張:膠版紙
- 版次:1
- 開本:16開
作為STM32單片機(jī)的入門者,往往在從寄存器開發(fā)還是從固件庫(kù)開發(fā)上糾結(jié)不定,《STM32F0實(shí)戰(zhàn)(基于HAL庫(kù)開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書》將從市場(chǎng)上非常暢銷的STM32FO系列微控制器入手,利用意法半導(dǎo)體公司新近推出的一款全新的開發(fā)軟件——STM32CubeMX作為項(xiàng)目建立和代碼初始化工具,快速生成F0系列的開發(fā)環(huán)境,并在MDK-ARM軟件上對(duì)代碼進(jìn)行進(jìn)一步的編輯修改,直至生成最終的開發(fā)項(xiàng)目。
《STM32F0實(shí)戰(zhàn)(基于HAL庫(kù)開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書》將使用STM32CubeMX軟件自帶的HAL固件庫(kù)來(lái)開發(fā),書內(nèi)附HAL庫(kù)詳解,HAL庫(kù)不同于以往的標(biāo)準(zhǔn)外設(shè)庫(kù),是意法半導(dǎo)體公司新推出的替代標(biāo)準(zhǔn)外設(shè)庫(kù)的產(chǎn)品。
本書作者為“骨灰級(jí)”單片機(jī)愛(ài)好者。長(zhǎng)期致力于單片機(jī)的產(chǎn)品開發(fā)和應(yīng)用研究,并熱衷于單片機(jī)公益培訓(xùn)和推廣,倡導(dǎo)簡(jiǎn)潔易懂、立足應(yīng)用的單片機(jī)學(xué)習(xí)方法,著有《迷入的8051單片機(jī)》《我和PIC單片機(jī):基于PIC18》《AVR單片機(jī)入門與速成攻略》《STM8實(shí)戰(zhàn)》等多部MCU系列著作,深受學(xué)生朋友及科研工作者的喜愛(ài)和好評(píng)。
本書基于STM32FO系列微控制器,結(jié)合STM32CubeMX開發(fā)平臺(tái)及其附帶的HAL庫(kù)完成STM32F0系列微控制器的應(yīng)用開發(fā),涵蓋ARM Cortex內(nèi)核的STM32F072VBT6微控制器大部分外設(shè)。使用C語(yǔ)言開發(fā),配套源代碼,由淺入深,快速入門。
意法半導(dǎo)體公司(下文簡(jiǎn)稱意法公司)近年來(lái)在國(guó)內(nèi)單片機(jī)市場(chǎng)上的業(yè)績(jī)可圈可點(diǎn),旗下STM32系列單片機(jī)憑借其高性能、高性價(jià)比成為32位單片機(jī)的市場(chǎng)主力,在如今的人才市場(chǎng)上,會(huì)不會(huì)使用STM8和STM32單片機(jī)往往是用人方選擇硬件工程師的條件之一,其重要性和業(yè)界的影響力可見(jiàn)一斑。在意法公司的產(chǎn)品線中,STM32F0系列是32位微控制器中的入門級(jí)產(chǎn)品。該系列基于ARM公司的CortexM0內(nèi)核,集實(shí)時(shí)性能、低功耗運(yùn)算和STM32平臺(tái)的先進(jìn)架構(gòu)及外設(shè)于一身,既保留了對(duì)傳統(tǒng)8位和16位市場(chǎng)的壓倒性競(jìng)爭(zhēng)力,又可以傳承STM32用戶的開發(fā)平臺(tái)和程序代碼,是入門STM32開發(fā)的不二之選。本書將以STM32F0系列微控制器中的旗艦型號(hào)STM32F072VBT6微控制器為例,從整體架構(gòu)、存儲(chǔ)器、時(shí)鐘樹、異常處理、DMA和外設(shè)模塊等方面做詳細(xì)的介紹,特別是對(duì)微控制器片內(nèi)的bxCAN模塊和USB模塊的原理和開發(fā)方法進(jìn)行重點(diǎn)介紹。
學(xué)習(xí)ARM微控制器的方法其實(shí)與學(xué)習(xí)8位機(jī)并無(wú)兩樣,只要找準(zhǔn)入門的方法就會(huì)事半功倍。在接觸STM32F0系列的32位單片機(jī)之前,你一定也曾經(jīng)是8位單片機(jī)的“發(fā)燒友”,回想當(dāng)初我們使用8051單片機(jī)點(diǎn)亮一個(gè)LED時(shí),那種激動(dòng)的心情至今仍難以忘懷。在此筆者向大家推薦與當(dāng)初學(xué)習(xí)8051單片機(jī)相同的方法,即從一個(gè)簡(jiǎn)單的實(shí)驗(yàn)入手,如點(diǎn)亮一個(gè)LED,由局部到整體,逐步積累開發(fā)經(jīng)驗(yàn),增強(qiáng)信心,循序漸進(jìn),由淺入深。要特別注意的是不要在你還沒(méi)有學(xué)會(huì)使用寄存器和函數(shù)來(lái)操作STM32的時(shí)候,就貿(mào)然研究操作系統(tǒng)移植、圖形用戶界面(GUI)以及上位機(jī)開發(fā)等。這不但會(huì)讓你對(duì)學(xué)習(xí)STM32望而卻步,還會(huì)使你對(duì)學(xué)習(xí)嵌入式開發(fā)的信心喪失,這是最可怕的事情。本書不拘泥于概念和原理的探究,而是立足于實(shí)踐,從系統(tǒng)板基礎(chǔ)電路起步,一章一個(gè)例子、一章一個(gè)實(shí)驗(yàn)、一章一個(gè)總結(jié)、一個(gè)模塊一套或多套代碼,從最基本的I/O口學(xué)起,逐步拓展到定時(shí)器、時(shí)鐘、串行口、ADC等,屆時(shí)你會(huì)發(fā)現(xiàn)其實(shí)STM32與8位單片機(jī)也沒(méi)有太大差別。
近期,意法公司專門針對(duì)旗下不同系列的微控制器產(chǎn)品推出了一款全新的開發(fā)軟件—STM32CubeMX。該軟件允許用戶使用圖形化界面簡(jiǎn)單直觀地對(duì)目標(biāo)微控制器的引腳、時(shí)鐘等進(jìn)行初始化設(shè)置,并能針對(duì)不同的集成開發(fā)環(huán)境,如EWARM、MDKARM、TrueSTUDIO等快速生成開發(fā)項(xiàng)目,這無(wú)疑是STM32入門用戶最重大的利好消息。本書將利用STM32CubeMX作為項(xiàng)目建立和代碼初始化工具,快速生成STM32F0系列微控制器的程序架構(gòu),并在MDKARM軟件上對(duì)代碼進(jìn)行進(jìn)一步的編輯修改,直至完成最終的項(xiàng)目開發(fā)。
作為STM32微控制器開發(fā)的新手,往往在從寄存器開發(fā)入手還是從固件庫(kù)開發(fā)入手的選擇上糾結(jié)不定。業(yè)界對(duì)開發(fā)STM32系列微控制器的方法通常也持有兩種不同的觀點(diǎn):一種認(rèn)為寄存器開發(fā)能使開發(fā)者明晰單片機(jī)內(nèi)部結(jié)構(gòu),編寫出簡(jiǎn)潔的代碼,執(zhí)行效率高;而另一種則認(rèn)為固件庫(kù)開發(fā)能避開對(duì)寄存器操作,減輕編程者的壓力,還可以為開發(fā)者訪問(wèn)底層硬件提供一個(gè)中間應(yīng)用編程界面(API),并方便上層軟件的調(diào)用。筆者認(rèn)為,作為開發(fā)STM32的硬件工程師,以上兩種開發(fā)方法都應(yīng)該掌握,原因是寄存器開發(fā)能加深對(duì)芯片內(nèi)部結(jié)構(gòu)和功能的理解,是微控制器入門的必經(jīng)之路,而固件庫(kù)開發(fā)則是一種趨勢(shì),它的編程思想更加先進(jìn),對(duì)應(yīng)代碼更規(guī)范,更具有可讀性。本書基于STM32CubeMX軟件自帶的HAL庫(kù)開發(fā)—HAL庫(kù)不同于以往的標(biāo)準(zhǔn)外設(shè)庫(kù),是意法公司最新推出的替代標(biāo)準(zhǔn)外設(shè)庫(kù)的產(chǎn)品,書內(nèi)附HAL庫(kù)、函數(shù)、結(jié)構(gòu)、常量等的詳細(xì)說(shuō)明及開發(fā)實(shí)例。
為了配合本書的出版,相應(yīng)的開發(fā)板和視頻教程“STM32奇幻漂流記”也會(huì)在近期由“睿芯美微”淘寶網(wǎng)店同步推出,網(wǎng)址為http://shop59521455.taobao.com。由于作者水平有限,加之寫作時(shí)間倉(cāng)促,書中錯(cuò)誤在所難免,在此懇請(qǐng)讀者和有識(shí)之士給予批評(píng)斧正,也歡迎大家通過(guò)互聯(lián)網(wǎng)與筆者分享STM32的開發(fā)心得。
作者QQ:710878209,微信號(hào):gpmza2000。
本書得以出版,首先要特別感謝機(jī)械工業(yè)出版社華章公司朱捷等資深編輯,他們對(duì)本書的選題、立意和編纂給予了大力支持和悉心指導(dǎo)。其次要感謝的是廣大熱心網(wǎng)友,你們?yōu)楸緯鴥?nèi)容、結(jié)構(gòu)、寫法獻(xiàn)言獻(xiàn)策,給予了莫大關(guān)心和支持。再次要感謝筆者的家人,在筆者奮筆疾書的日日夜夜照顧飲食起居,讓筆者能更加專注于本書的創(chuàng)作。
尺有所短,寸有所長(zhǎng)。每個(gè)人的天賦迥異,如果你發(fā)現(xiàn)自己對(duì)電子產(chǎn)業(yè)時(shí)常會(huì)萌發(fā)出一些新奇的想法或創(chuàng)意,請(qǐng)一定將其捕捉住,并且盡早閱讀本書,那時(shí)你會(huì)發(fā)現(xiàn)使用STM32系列微控制器會(huì)讓你的想法變?yōu)楝F(xiàn)實(shí),會(huì)讓你的創(chuàng)意盡情表達(dá),這也許就是你走上研發(fā)之路的起點(diǎn),你的人生也會(huì)因此而更加精彩!再次感謝你選擇本書,祝學(xué)業(yè)有成,事業(yè)順達(dá)!
高顯生
于哈爾濱
高顯生,男,1972年出生,電氣工程師,骨灰級(jí)單片機(jī)愛(ài)好者,長(zhǎng)期熱衷于單片機(jī)公益培訓(xùn)和研發(fā),倡導(dǎo)簡(jiǎn)捷易懂、立足應(yīng)用的單片機(jī)學(xué)習(xí)方法,著有《我和POC單片機(jī):基于PIC18》《AVR單片機(jī)入門與速成攻略》等書。先后錄制了《我和單片機(jī)的21天之旅》《我的PIC日記》《迷人的AVR單片機(jī)》等多部大型公益視頻教程,在網(wǎng)絡(luò)上得以廣泛傳播和推廣,深受學(xué)生朋友及科研工作者的喜愛(ài)和好評(píng)。
前言
第一篇 系統(tǒng)架構(gòu)
第1章 “芯”系A(chǔ)RM 2
1.1 強(qiáng)勁的ARM芯 2
1.1.1 最成功的科技公司 2
1.1.2 ARMv6M架構(gòu) 3
1.1.3 CortexM0處理器簡(jiǎn)介 3
1.1.4 CortexM0處理器的特點(diǎn) 5
1.1.5 RISC架構(gòu) 6
1.1.6AMBA總線 6
1.1.7微控制器軟件接口標(biāo)準(zhǔn)(CMSIS) 7
1.2 STM32系列微控制器 9
1.2.1 STM32微控制器家族 9
1.2.2 STM32的命名規(guī)則 9
1.2.3STM32F0系列微控制器功能概述 13
第2章 開發(fā)環(huán)境 17
2.1 軟件開發(fā)工具 17
2.1.1MDKARM集成開發(fā)環(huán)境 18
2.1.2 安裝MDKARM軟件 21
2.1.3 STM32CubeMX軟件 27
2.1.4安裝STM32CubeMX軟件 34
2.2 硬件開發(fā)工具 46
2.2.1 仿真/編程器 47
2.2.2 STM32系統(tǒng)板 51
2.3 項(xiàng)目建立 52
2.3.1 新建開發(fā)項(xiàng)目 52
2.3.2 查看項(xiàng)目文件 62
2.3.3 打開項(xiàng)目 64
2.3.4 查看項(xiàng)目屬性 69
2.3.5 編譯項(xiàng)目 73
第3章 GPIO 76
3.1 GPIO概述 76
3.1.1 GPIO的功能 76
3.1.2 GPIO的位結(jié)構(gòu) 78
3.1.3 GPIO的特殊功能 80
3.1.4 GPIO的寄存器分類 82
3.2 GPIO函數(shù) 82
3.2.1 GPIO類型定義 82
3.2.2 GPIO常量定義 83
3.2.3 GPIO函數(shù)定義 84
3.3 GPIO應(yīng)用實(shí)例 86
3.3.1 生成開發(fā)項(xiàng)目 86
3.3.2 主程序文件結(jié)構(gòu)解析 90
3.3.3 外設(shè)初始化過(guò)程分析 94
第4章 HAL庫(kù) 98
4.1 HAL庫(kù)結(jié)構(gòu) 98
4.1.1 HAL庫(kù)的特點(diǎn) 98
4.1.2 HAL庫(kù)的構(gòu)成 99
4.1.3 HAL庫(kù)用戶應(yīng)用程序 99
4.2 HAL庫(kù)文件 101
4.2.1 HAL庫(kù)頭文件 101
4.2.2 HAL庫(kù)源文件 104
第5章 系統(tǒng)配置 107
5.1 系統(tǒng)架構(gòu) 107
5.1.1 總線結(jié)構(gòu) 107
5.1.2 存儲(chǔ)器的組織 108
5.1.3 啟動(dòng)配置 108
5.2 Flash存儲(chǔ)器 110
5.2.1 Flash的讀操作 110
5.2.2 Flash的寫和擦除操作 111
5.2.3 Flash讀保護(hù) 113
5.2.4 Flash寫保護(hù) 114
5.2.5 Flash中斷 114
5.2.6 CRC計(jì)算單元 114
5.3 選項(xiàng)字節(jié) 115
5.3.1 選項(xiàng)字節(jié)的格式 115
5.3.2 選項(xiàng)字節(jié)編程 118
5.4 Flash函數(shù) 119
5.4.1 Flash類型定義 119
5.4.2 Flash常量定義 120
5.4.3 Flash函數(shù)定義 121
5.5 CRC函數(shù) 128
5.5.1 CRC類型定義 128
5.5.2 CRC常量定義 129
5.5.3 CRC函數(shù)定義 131
第6章 時(shí)鐘 135
6.1 概述 135
6.1.1 時(shí)鐘樹的結(jié)構(gòu) 135
6.1.2 時(shí)鐘源 137
6.1.3 時(shí)鐘安全 140
6.1.4 時(shí)鐘應(yīng)用 140
6.1.5 低功耗模式下的時(shí)鐘 141
6.1.6 復(fù)位 141
6.2 RCC函數(shù) 143
6.2.1 RCC類型定義 143
6.2.2 RCC常量定義 145
6.2.3 RCC函數(shù)定義 152
6.3 時(shí)鐘控制實(shí)例 159
第7章 電源控制 162
7.1 供電管理 162
7.1.1 供電引腳 162
7.1.2 上電復(fù)位和掉電復(fù)位 165
7.1.3 可編程電壓檢測(cè)器 166
7.2 低功耗模式 166
7.2.1 低功耗模式的分類 166
7.2.2 睡眠模式 167
7.2.3 停機(jī)模式 168
7.2.4 待機(jī)模式 169
7.2.5 自動(dòng)喚醒 170
7.3 電源控制函數(shù) 170
7.3.1 電源控制類型定義 170
7.3.2 電源控制常量定義 171
7.3.3 電源控制函數(shù)定義 172
7.4 低功耗模式應(yīng)用實(shí)例 178
7.4.1 從停機(jī)模式喚醒 178
7.4.2 從待機(jī)模式喚醒 180
第8章 DMA控制器 183
8.1 DMA概述 183
8.1.1 DMA控制器內(nèi)部結(jié)構(gòu) 183
8.1.2 DMA的處理過(guò)程 183
8.1.3 DMA中斷 186
8.1.4 DMA請(qǐng)求映射 186
8.2 DMA函數(shù) 189
8.2.1 DMA類型定義 189
8.2.2 DMA常量定義 190
8.2.3 DMA函數(shù)定義 191
8.3 DMA應(yīng)用實(shí)例 194
第9章 異常 198
9.1 CortexM0的異常處理 198
9.1.1 異常的特點(diǎn) 198
9.1.2 嵌套向量中斷控制器 201
9.1.3 中斷的使能 201
9.1.4中斷請(qǐng)求的掛起和清除 202
9.1.5 中斷優(yōu)先級(jí)控制 204
9.1.6 SysTick定時(shí)器 204
9.2擴(kuò)展中斷和事件控制器(EXTI) 207
9.2.1 事件線概述 207
9.2.2 事件線的控制邏輯 208
9.2.3 事件線的配置方法 210
9.2.4 EXTI喚醒 210
9.2.5 中斷服務(wù)程序(ISR) 210
9.3 異常相關(guān)函數(shù) 212
9.3.1 異常類型定義 212
9.3.2 異常常量定義 213
9.3.3 異常函數(shù)定義 213
9.4 EXTI應(yīng)用實(shí)例 219
第二篇 外設(shè)模塊
第10章 模擬數(shù)字轉(zhuǎn)換器 224
10.1 ADC模塊概述 224
10.1.1 ADC的內(nèi)部結(jié)構(gòu) 224
10.1.2 ADC校準(zhǔn) 225
10.1.3 ADC的啟動(dòng)和關(guān)閉 226
10.1.4 ADC時(shí)鐘 228
10.2 ADC功能配置 229
10.2.1 ADC的基礎(chǔ)配置 229
10.2.2 ADC的轉(zhuǎn)換模式 230
10.2.3 A/D轉(zhuǎn)換的啟動(dòng)和停止 231
10.2.4 A/D轉(zhuǎn)換時(shí)序 232
10.2.5 ADC過(guò)沖 233
10.2.6 管理轉(zhuǎn)換數(shù)據(jù) 235
10.2.7 ADC的低功耗特性 235
10.2.8 模擬看門狗 237
10.2.9 ADC的內(nèi)部通道轉(zhuǎn)換 238
10.2.10 ADC中斷 240
10.3 ADC函數(shù) 241
10.3.1 ADC類型定義 241
10.3.2 ADC常量定義 242
10.3.3 ADC函數(shù)定義 246
10.4 ADC的應(yīng)用實(shí)例 253
10.4.1 數(shù)字顯示電壓值 254
10.4.2 讀取溫度傳感器 256
第11章 數(shù)字模擬轉(zhuǎn)換器 259
11.1 DAC模塊概述 259
11.1