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