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