本書基于ARM公司的Cortex-M3處理器的STM32微控制器,使用MDK-ARM開發(fā)軟件和C語言,結(jié)合STM32固件庫和STM32開發(fā)板,面向底層應(yīng)用編程,介紹嵌入式系統(tǒng)的工作原理和應(yīng)用技術(shù),包括嵌入式系統(tǒng)設(shè)計基礎(chǔ)、Cortex-M3處理器、Thumb指令集、STM32微控制器、STM32的GPIO、Cortex-M3異常和STM32中斷、STM32的串行通信接口、STM32的DMA接口、STM32的定時器接口、STM32的模擬接口。 本書可以作為高等院校計算機(jī)、電子、通信及自動控制等專業(yè)"嵌入式系統(tǒng)導(dǎo)論”課程或"嵌入式系統(tǒng)基礎(chǔ)”課程的教材或參考書,也可以作為嵌入式系統(tǒng)應(yīng)用開發(fā)人員和希望了解嵌入式系統(tǒng)的人員的參考書。
錢曉捷,男,副教授,1963年生,北京航空航天大學(xué)電子工程學(xué)院學(xué)士學(xué)位,鄭州大學(xué)計算機(jī)軟件與理論專業(yè)碩士學(xué)位,碩士生導(dǎo)師。中國計算機(jī)學(xué)會會員,現(xiàn)任河南省計算機(jī)學(xué)會教育專委副主任,主要從事計算機(jī)系統(tǒng)結(jié)構(gòu)、嵌入式系統(tǒng)、計算機(jī)輔助教學(xué)等方面的研究。主持教育部-微軟、河南省精品課程“匯編語言程序設(shè)計”、校級遠(yuǎn)程教育精品課程“微機(jī)原理及接口技術(shù)”建設(shè)。主持完成“網(wǎng)絡(luò)CAI課件研究與開發(fā)”、“河南省新世紀(jì)網(wǎng)絡(luò)課程建設(shè)工程項目”等科研項目。主編10余部高校教材,其中2部屬于普通高等教育“十一五”國家級規(guī)劃教材。具有豐富的教學(xué)經(jīng)歷和教研體會,主講計算機(jī)硬件系列課程20余年,主要包括“微機(jī)原理及接口技術(shù)”、“匯編語言程序設(shè)計”、“計算機(jī)組織與結(jié)構(gòu)”、“高級計算機(jī)系統(tǒng)結(jié)構(gòu)”等。
目 錄
第1章 嵌入式系統(tǒng)設(shè)計基礎(chǔ) 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 什么是嵌入式系統(tǒng) 2
1.1.2 嵌入式系統(tǒng)的技術(shù)特點 2
1.1.3 嵌入式系統(tǒng)的組成 3
1.2 嵌入式系統(tǒng)的開發(fā) 4
1.2.1 嵌入式系統(tǒng)的開發(fā)模式 4
1.2.2 嵌入式系統(tǒng)開發(fā)需要的軟件、硬件 5
1.2.3 軟件開發(fā)流程 6
習(xí)題1 7
第2章 Cortex-M3處理器 9
2.1 ARM處理器 9
2.2 Cortex-M3處理器結(jié)構(gòu) 11
2.3 寄存器 13
2.4 存儲器組織 15
習(xí)題2 19
第3章 Thumb指令集 21
3.1 ARM指令集和Thumb指令集 21
3.2 UAL 22
3.2.1 匯編語言的語句格式 23
3.2.2 匯編語言的程序結(jié)構(gòu) 23
3.2.3 存儲器空間分配指示符 25
3.2.4 常量表達(dá) 26
3.3 數(shù)據(jù)尋址 27
3.3.1 寄存器尋址 27
3.3.2 存儲器尋址 29
3.4 常用指令 30
3.4.1 處理器指令格式 30
3.4.2 數(shù)據(jù)傳送指令 31
3.4.3 數(shù)據(jù)處理指令 32
3.4.4 分支跳轉(zhuǎn)指令 33
3.5 STM32啟動代碼 35
3.6 開發(fā)工具M(jìn)DK 39
3.6.1 MDK安裝 40
3.6.2 MDK目錄結(jié)構(gòu) 41
3.6.3 創(chuàng)建應(yīng)用程序 43
3.6.4 匯編語言程序的開發(fā) 46
習(xí)題3 49
第4章 STM32微控制器 51
4.1 STM32微控制器結(jié)構(gòu) 51
4.1.1 STM32微控制器簡介 51
4.1.2 STM32微控制器的系統(tǒng)結(jié)構(gòu) 54
4.1.3 STM32微控制器的存儲結(jié)構(gòu) 55
4.2 STM32微控制器開發(fā) 57
4.2.1 Cortex微控制器軟件接口標(biāo)準(zhǔn)——CMSIS 57
4.2.2 STM32固件庫 59
4.2.3 C語言應(yīng)用 61
4.3 RCC 63
習(xí)題4 69
第5章 STM32的GPIO 71
5.1 GPIO的結(jié)構(gòu)和功能 71
5.2 GPIO寄存器 72
5.2.1 GPIO寄存器的功能 73
5.2.2 GPIO寄存器的應(yīng)用 74
5.3 GPIO輸出應(yīng)用示例:LED的亮滅控制 76
5.3.1 項目創(chuàng)建和選項配置 76
5.3.2 應(yīng)用程序分析 79
5.3.3 應(yīng)用程序編寫 82
5.3.4 程序模擬運行 85
5.3.5 程序硬件仿真 87
5.4 GPIO輸入應(yīng)用示例:查詢按鍵狀態(tài) 90
5.4.1 程序分析和編寫 90
5.4.2 程序調(diào)試和運行 92
5.5 STM32固件庫編程總結(jié) 94
5.5.1 基于STM32固件庫的開發(fā)過程 94
5.5.2 STM32固件庫的一般規(guī)則 95
5.5.3 對比直接對寄存器進(jìn)行編程 98
習(xí)題5 100
第6章 Cortex-M3異常和STM32中斷 103
6.1 Cortex-M3的異常 103
6.2 STM32中斷應(yīng)用 106
6.2.1 NVIC初始化配置 107
6.2.2 外部中斷EXTI 108
6.2.3 GPIO引腳的中斷配置 111
6.2.4 STM32外設(shè)的中斷配置 112
6.3 EXTI應(yīng)用示例:按鍵中斷 112
6.3.1 主程序流程 112
6.3.2 中斷初始化配置 114
6.3.3 中斷應(yīng)用程序編寫 115
習(xí)題6 118
第7章 STM32的串行通信接口 120
7.1 串行異步通信 120
7.1.1 串行異步通信字符格式 120
7.1.2 串行異步通信接口 121
7.2 通用同步/異步接收/發(fā)送器 123
7.2.1 STM32的USART功能 123
7.2.2 STM32的USART應(yīng)用 125
7.3 USART應(yīng)用示例:實現(xiàn)C語言標(biāo)準(zhǔn)I/O函數(shù) 126
7.3.1 USART初始化配置 126
7.3.2 I/O函數(shù)的重定向 128
7.3.3 信息交互應(yīng)用程序 131
7.3.4 USART的中斷應(yīng)用 133
習(xí)題7 137
第8章 STM32的DMA接口 139
8.1 DMA控制器 139
8.1.1 DMA傳輸過程 139
8.1.2 STM32的DMA功能 140
8.1.3 STM32的DMA應(yīng)用 142
8.2 DMA應(yīng)用示例:USART的DMA傳輸 144
8.2.1 DMA初始化配置 144
8.2.2 DMA傳輸應(yīng)用程序編寫 146
8.3 DMA、USART和GPIO的綜合應(yīng)用 149
8.3.1 綜合應(yīng)用的項目分析 149
8.3.2 綜合應(yīng)用的編程 150
習(xí)題8 153
第9章 STM32的定時器接口 155
9.1 系統(tǒng)時鐘 155
9.1.1 系統(tǒng)滴答定時器 155
9.1.2 SysTick應(yīng)用示例:精確定時 158
9.2 STM32的看門狗 160
9.2.1 IWDG 160
9.2.2 IWDG應(yīng)用示例:IWDG復(fù)位 163
9.2.3 WWDG 164
9.2.4 WWDG應(yīng)用示例:適時“喂狗” 167
9.3 STM32定時器 169
9.3.1 基本定時器 170
9.3.2 基本定時器應(yīng)用示例:周期性定時中斷 173
9.4 STM32實時時鐘(RTC) 176
9.4.1 RTC結(jié)構(gòu)及特性 176
9.4.2 RTC應(yīng)用示例:鬧鐘 179
習(xí)題9 182
第10章 STM32的模擬接口 184
10.1 STM32的ADC 184
10.1.1 ADC結(jié)構(gòu)及特性 184
10.1.2 ADC的轉(zhuǎn)換模式 189
10.1.3 STM32固件庫中的ADC函數(shù) 190
10.1.4 ADC應(yīng)用示例:數(shù)據(jù)采集 192
10.2 STM32的DAC 196
10.2.1 DAC結(jié)構(gòu)及特性 197
10.2.2 STM32固件庫中的DAC函數(shù) 200
10.2.3 DAC應(yīng)用示例:輸出模擬電壓 201
習(xí)題10 204
參考文獻(xiàn) 206