STM32F0實(shí)戰(zhàn)(基于HAL庫開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書
定 價(jià):129 元
叢書名:華章科技
- 作者:高顯生 著
- 出版時(shí)間:2019/1/1
- ISBN:9787111612964
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP368.1
- 頁碼:742
- 紙張:膠版紙
- 版次:1
- 開本:16開
作為STM32單片機(jī)的入門者,往往在從寄存器開發(fā)還是從固件庫開發(fā)上糾結(jié)不定,《STM32F0實(shí)戰(zhàn)(基于HAL庫開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書》將從市場上非常暢銷的STM32FO系列微控制器入手,利用意法半導(dǎo)體公司新近推出的一款全新的開發(fā)軟件——STM32CubeMX作為項(xiàng)目建立和代碼初始化工具,快速生成F0系列的開發(fā)環(huán)境,并在MDK-ARM軟件上對代碼進(jìn)行進(jìn)一步的編輯修改,直至生成最終的開發(fā)項(xiàng)目。
《STM32F0實(shí)戰(zhàn)(基于HAL庫開發(fā))/電子與嵌入式系統(tǒng)設(shè)計(jì)叢書》將使用STM32CubeMX軟件自帶的HAL固件庫來開發(fā),書內(nèi)附HAL庫詳解,HAL庫不同于以往的標(biāo)準(zhǔn)外設(shè)庫,是意法半導(dǎo)體公司新推出的替代標(biāo)準(zhǔn)外設(shè)庫的產(chǎn)品。
本書作者為“骨灰級”單片機(jī)愛好者。長期致力于單片機(jī)的產(chǎn)品開發(fā)和應(yīng)用研究,并熱衷于單片機(jī)公益培訓(xùn)和推廣,倡導(dǎo)簡潔易懂、立足應(yīng)用的單片機(jī)學(xué)習(xí)方法,著有《迷入的8051單片機(jī)》《我和PIC單片機(jī):基于PIC18》《AVR單片機(jī)入門與速成攻略》《STM8實(shí)戰(zhàn)》等多部MCU系列著作,深受學(xué)生朋友及科研工作者的喜愛和好評。
本書基于STM32FO系列微控制器,結(jié)合STM32CubeMX開發(fā)平臺及其附帶的HAL庫完成STM32F0系列微控制器的應(yīng)用開發(fā),涵蓋ARM Cortex內(nèi)核的STM32F072VBT6微控制器大部分外設(shè)。使用C語言開發(fā),配套源代碼,由淺入深,快速入門。
意法半導(dǎo)體公司(下文簡稱意法公司)近年來在國內(nèi)單片機(jī)市場上的業(yè)績可圈可點(diǎn),旗下STM32系列單片機(jī)憑借其高性能、高性價(jià)比成為32位單片機(jī)的市場主力,在如今的人才市場上,會不會使用STM8和STM32單片機(jī)往往是用人方選擇硬件工程師的條件之一,其重要性和業(yè)界的影響力可見一斑。在意法公司的產(chǎn)品線中,STM32F0系列是32位微控制器中的入門級產(chǎn)品。該系列基于ARM公司的CortexM0內(nèi)核,集實(shí)時(shí)性能、低功耗運(yùn)算和STM32平臺的先進(jìn)架構(gòu)及外設(shè)于一身,既保留了對傳統(tǒng)8位和16位市場的壓倒性競爭力,又可以傳承STM32用戶的開發(fā)平臺和程序代碼,是入門STM32開發(fā)的不二之選。本書將以STM32F0系列微控制器中的旗艦型號STM32F072VBT6微控制器為例,從整體架構(gòu)、存儲器、時(shí)鐘樹、異常處理、DMA和外設(shè)模塊等方面做詳細(xì)的介紹,特別是對微控制器片內(nèi)的bxCAN模塊和USB模塊的原理和開發(fā)方法進(jìn)行重點(diǎn)介紹。
學(xué)習(xí)ARM微控制器的方法其實(shí)與學(xué)習(xí)8位機(jī)并無兩樣,只要找準(zhǔn)入門的方法就會事半功倍。在接觸STM32F0系列的32位單片機(jī)之前,你一定也曾經(jīng)是8位單片機(jī)的“發(fā)燒友”,回想當(dāng)初我們使用8051單片機(jī)點(diǎn)亮一個(gè)LED時(shí),那種激動的心情至今仍難以忘懷。在此筆者向大家推薦與當(dāng)初學(xué)習(xí)8051單片機(jī)相同的方法,即從一個(gè)簡單的實(shí)驗(yàn)入手,如點(diǎn)亮一個(gè)LED,由局部到整體,逐步積累開發(fā)經(jīng)驗(yàn),增強(qiáng)信心,循序漸進(jìn),由淺入深。要特別注意的是不要在你還沒有學(xué)會使用寄存器和函數(shù)來操作STM32的時(shí)候,就貿(mào)然研究操作系統(tǒng)移植、圖形用戶界面(GUI)以及上位機(jī)開發(fā)等。這不但會讓你對學(xué)習(xí)STM32望而卻步,還會使你對學(xué)習(xí)嵌入式開發(fā)的信心喪失,這是最可怕的事情。本書不拘泥于概念和原理的探究,而是立足于實(shí)踐,從系統(tǒng)板基礎(chǔ)電路起步,一章一個(gè)例子、一章一個(gè)實(shí)驗(yàn)、一章一個(gè)總結(jié)、一個(gè)模塊一套或多套代碼,從最基本的I/O口學(xué)起,逐步拓展到定時(shí)器、時(shí)鐘、串行口、ADC等,屆時(shí)你會發(fā)現(xiàn)其實(shí)STM32與8位單片機(jī)也沒有太大差別。
近期,意法公司專門針對旗下不同系列的微控制器產(chǎn)品推出了一款全新的開發(fā)軟件—STM32CubeMX。該軟件允許用戶使用圖形化界面簡單直觀地對目標(biāo)微控制器的引腳、時(shí)鐘等進(jìn)行初始化設(shè)置,并能針對不同的集成開發(fā)環(huán)境,如EWARM、MDKARM、TrueSTUDIO等快速生成開發(fā)項(xiàng)目,這無疑是STM32入門用戶最重大的利好消息。本書將利用STM32CubeMX作為項(xiàng)目建立和代碼初始化工具,快速生成STM32F0系列微控制器的程序架構(gòu),并在MDKARM軟件上對代碼進(jìn)行進(jìn)一步的編輯修改,直至完成最終的項(xiàng)目開發(fā)。
作為STM32微控制器開發(fā)的新手,往往在從寄存器開發(fā)入手還是從固件庫開發(fā)入手的選擇上糾結(jié)不定。業(yè)界對開發(fā)STM32系列微控制器的方法通常也持有兩種不同的觀點(diǎn):一種認(rèn)為寄存器開發(fā)能使開發(fā)者明晰單片機(jī)內(nèi)部結(jié)構(gòu),編寫出簡潔的代碼,執(zhí)行效率高;而另一種則認(rèn)為固件庫開發(fā)能避開對寄存器操作,減輕編程者的壓力,還可以為開發(fā)者訪問底層硬件提供一個(gè)中間應(yīng)用編程界面(API),并方便上層軟件的調(diào)用。筆者認(rèn)為,作為開發(fā)STM32的硬件工程師,以上兩種開發(fā)方法都應(yīng)該掌握,原因是寄存器開發(fā)能加深對芯片內(nèi)部結(jié)構(gòu)和功能的理解,是微控制器入門的必經(jīng)之路,而固件庫開發(fā)則是一種趨勢,它的編程思想更加先進(jìn),對應(yīng)代碼更規(guī)范,更具有可讀性。本書基于STM32CubeMX軟件自帶的HAL庫開發(fā)—HAL庫不同于以往的標(biāo)準(zhǔn)外設(shè)庫,是意法公司最新推出的替代標(biāo)準(zhǔn)外設(shè)庫的產(chǎn)品,書內(nèi)附HAL庫、函數(shù)、結(jié)構(gòu)、常量等的詳細(xì)說明及開發(fā)實(shí)例。
為了配合本書的出版,相應(yīng)的開發(fā)板和視頻教程“STM32奇幻漂流記”也會在近期由“睿芯美微”淘寶網(wǎng)店同步推出,網(wǎng)址為http://shop59521455.taobao.com。由于作者水平有限,加之寫作時(shí)間倉促,書中錯(cuò)誤在所難免,在此懇請讀者和有識之士給予批評斧正,也歡迎大家通過互聯(lián)網(wǎng)與筆者分享STM32的開發(fā)心得。
作者QQ:710878209,微信號:gpmza2000。
本書得以出版,首先要特別感謝機(jī)械工業(yè)出版社華章公司朱捷等資深編輯,他們對本書的選題、立意和編纂給予了大力支持和悉心指導(dǎo)。其次要感謝的是廣大熱心網(wǎng)友,你們?yōu)楸緯鴥?nèi)容、結(jié)構(gòu)、寫法獻(xiàn)言獻(xiàn)策,給予了莫大關(guān)心和支持。再次要感謝筆者的家人,在筆者奮筆疾書的日日夜夜照顧飲食起居,讓筆者能更加專注于本書的創(chuàng)作。
尺有所短,寸有所長。每個(gè)人的天賦迥異,如果你發(fā)現(xiàn)自己對電子產(chǎn)業(yè)時(shí)常會萌發(fā)出一些新奇的想法或創(chuàng)意,請一定將其捕捉住,并且盡早閱讀本書,那時(shí)你會發(fā)現(xiàn)使用STM32系列微控制器會讓你的想法變?yōu)楝F(xiàn)實(shí),會讓你的創(chuàng)意盡情表達(dá),這也許就是你走上研發(fā)之路的起點(diǎn),你的人生也會因此而更加精彩!再次感謝你選擇本書,祝學(xué)業(yè)有成,事業(yè)順達(dá)!
高顯生
于哈爾濱
高顯生,男,1972年出生,電氣工程師,骨灰級單片機(jī)愛好者,長期熱衷于單片機(jī)公益培訓(xùn)和研發(fā),倡導(dǎo)簡捷易懂、立足應(yīng)用的單片機(jī)學(xué)習(xí)方法,著有《我和POC單片機(jī):基于PIC18》《AVR單片機(jī)入門與速成攻略》等書。先后錄制了《我和單片機(jī)的21天之旅》《我的PIC日記》《迷人的AVR單片機(jī)》等多部大型公益視頻教程,在網(wǎng)絡(luò)上得以廣泛傳播和推廣,深受學(xué)生朋友及科研工作者的喜愛和好評。
前言
第一篇 系統(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處理器簡介 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è)初始化過程分析 94
第4章 HAL庫 98
4.1 HAL庫結(jié)構(gòu) 98
4.1.1 HAL庫的特點(diǎn) 98
4.1.2 HAL庫的構(gòu)成 99
4.1.3 HAL庫用戶應(yīng)用程序 99
4.2 HAL庫文件 101
4.2.1 HAL庫頭文件 101
4.2.2 HAL庫源文件 104
第5章 系統(tǒng)配置 107
5.1 系統(tǒng)架構(gòu) 107
5.1.1 總線結(jié)構(gòu) 107
5.1.2 存儲器的組織 108
5.1.3 啟動配置 108
5.2 Flash存儲器 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 可編程電壓檢測器 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 自動喚醒 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的處理過程 183
8.1.3 DMA中斷 186
8.1.4 DMA請求映射 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中斷請求的掛起和清除 202
9.1.5 中斷優(yōu)先級控制 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的啟動和關(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)換的啟動和停止 231
10.2.4 A/D轉(zhuǎn)換時(shí)序 232
10.2.5 ADC過沖 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