本書基于ARM Cortex-M3處理器的STM32微控制器,使用MDK-ARM開發(fā)軟件和C語言,結(jié)合STM32驅(qū)動程序庫和STM32開發(fā)板,面向底層應(yīng)用編程,介紹嵌入式計算機系統(tǒng)的工作原理和應(yīng)用技術(shù),包括嵌入式系統(tǒng)組成、Cortex-M3處理器編程結(jié)構(gòu)、常用指令、STM32微控制器通用輸入/輸出端口(GPIO)、外部中斷接口(EXTI)、串行接口(USART)、直接存儲器傳輸接口(DMA)、定時器接口(SysTick、IWDG、WWDG、TIMx、RTC)和模擬接口(ADC、DAC)等。本書可以作為高等院校計算機、電子、通信及自動控制等專業(yè)“嵌入式系統(tǒng)導(dǎo)論”或“嵌入式系統(tǒng)基礎(chǔ)”的教材或參考書,也適合嵌入式系統(tǒng)應(yīng)用開發(fā)人員和希望學(xué)習(xí)嵌入式系統(tǒng)的普通讀者和技術(shù)人員參考。
錢曉捷,男,副教授,鄭州大學(xué)信息學(xué)院。中國計算機學(xué)會會員,現(xiàn)任河南省計算機學(xué)會教育專委副主任,主要從事計算機系統(tǒng)結(jié)構(gòu)、嵌入式系統(tǒng)、計算機輔助教學(xué)等方面的研究。主持教育部-微軟、河南省精品課程“匯編語言程序設(shè)計”、校級遠(yuǎn)程教育精品課程“微機原理及接口技術(shù)”建設(shè)。主持完成“網(wǎng)絡(luò)CAI課件研究與開發(fā)”、“河南省新世紀(jì)網(wǎng)絡(luò)課程建設(shè)工程項目”等科研項目。主編10余部高校教材,其中2部屬于普通高等教育“十一五”國家級規(guī)劃教材。具有豐富的教學(xué)經(jīng)歷和教研體會,主講計算機硬件系列課程20余年,主要包括“微機原理及接口技術(shù)”、“匯編語言程序設(shè)計”、“計算機組織與結(jié)構(gòu)”、“高級計算機系統(tǒng)結(jié)構(gòu)”等。
目 錄
第1章 嵌入式系統(tǒng)設(shè)計基礎(chǔ) 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 什么是嵌入式系統(tǒng) 1
1.1.2 嵌入式系統(tǒng)的技術(shù)特點 2
1.1.3 嵌入式系統(tǒng)的組成 2
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章 ARM Cortex-M3處理器 9
2.1 ARM處理器 9
2.2 Cortex-M3處理器結(jié)構(gòu) 10
2.3 寄存器 13
2.4 存儲器組織 15
習(xí)題2 19
第3章 Thumb指令系統(tǒng) 20
3.1 ARM指令集和Thumb指令集 20
3.2 統(tǒng)一匯編語言(UAL) 21
3.2.1 匯編語言的語句格式 21
3.2.2 匯編語言的程序結(jié)構(gòu) 22
3.2.3 存儲器空間分配指示符 24
3.2.4 常量表達 24
3.3 數(shù)據(jù)尋址 25
3.3.1 寄存器尋址 26
3.3.2 存儲器尋址 27
3.4 常用指令 28
3.4.1 處理器指令格式 28
3.4.2 數(shù)據(jù)傳送指令 30
3.4.3 數(shù)據(jù)處理指令 31
3.4.4 分支跳轉(zhuǎn)指令 32
3.5 STM32啟動代碼 33
3.6 開發(fā)工具MDK 37
3.6.1 MDK安裝 38
3.6.2 MDK目錄結(jié)構(gòu) 39
3.6.3 創(chuàng)建應(yīng)用程序 40
3.6.4 匯編語言程序的開發(fā) 43
習(xí)題3 45
第4章 STM32微控制器 47
4.1 STM32微控制器結(jié)構(gòu) 47
4.1.1 STM32系列微控制器 47
4.1.2 STM32系統(tǒng)結(jié)構(gòu) 49
4.1.3 STM32存儲結(jié)構(gòu) 51
4.2 STM32微控制器開發(fā) 52
4.2.1 Cortex微控制器軟件接口標(biāo)準(zhǔn)CMSIS 53
4.2.2 STM32驅(qū)動程序庫 54
4.2.3 C語言應(yīng)用 56
4.3 復(fù)位與時鐘控制(RCC) 59
習(xí)題4 64
第5章 STM32的通用I/O端口 66
5.1 GPIO的結(jié)構(gòu)與功能 66
5.2 GPIO寄存器 67
5.2.1 GPIO寄存器的功能 68
5.2.2 GPIO寄存器的應(yīng)用 69
5.3 GPIO輸出應(yīng)用示例:LED燈的亮滅控制 71
5.3.1 項目創(chuàng)建和選項配置 71
5.3.2 應(yīng)用程序分析 74
5.3.3 應(yīng)用程序編寫 77
5.3.4 程序模擬運行 80
5.3.5 程序硬件仿真 83
5.4 GPIO輸入應(yīng)用示例:查詢按鍵狀態(tài) 85
5.4.1 程序分析和編寫 86
5.4.2 程序調(diào)試和運行 88
5.5 STM32庫編程總結(jié) 90
5.5.1 基于STM32庫的開發(fā)過程 90
5.5.2 使用STM32庫的一般規(guī)則 91
5.5.3 對比直接對寄存器編程 93
習(xí)題5 96
第6章 CM3異常和STM32中斷 98
6.1 Cortex-M3的異常 98
6.2 STM32的中斷應(yīng)用 101
6.2.1 NVIC初始化配置 102
6.2.2 外部中斷EXTI 103
6.2.3 GPIO引腳的中斷配置 106
6.2.4 芯片外設(shè)的中斷配置 107
6.3 EXTI應(yīng)用示例:按鍵中斷 107
6.3.1 主程序流程 107
6.3.2 中斷初始化配置 109
6.3.3 中斷應(yīng)用程序編寫 111
習(xí)題6 113
第7章 STM32的串行通信接口 115
7.1 串行異步通信 115
7.1.1 串行異步通信字符格式 115
7.1.2 串行異步通信接口 116
7.2 通用同步/異步接收/發(fā)送器(USART) 118
7.2.1 STM32的USART功能 118
7.2.2 STM32的USART應(yīng)用 120
7.3 USART應(yīng)用示例:實現(xiàn)C語言標(biāo)準(zhǔn)輸入/輸出函數(shù) 121
7.3.1 USART初始化配置 121
7.3.2 輸入/輸出函數(shù)的重定向 123
7.3.3 信息交互應(yīng)用程序 126
7.3.4 USART接口的中斷應(yīng)用 128
習(xí)題7 133
第8章 STM32的DMA接口 135
8.1 DMA控制器 135
8.1.1 DMA傳輸過程 135
8.1.2 STM32的DMA功能 136
8.1.3 STM32的DMA應(yīng)用 138
8.2 DMA應(yīng)用示例:USART接口的DMA傳輸 140
8.2.1 DMA初始化配置 140
8.2.2 DMA傳輸應(yīng)用程序編寫 142
8.3 DMA、USART和GPIO的綜合應(yīng)用 145
8.3.1 綜合應(yīng)用的項目分析 145
8.3.2 綜合應(yīng)用的編程 146
習(xí)題8 149
第9章 STM32的定時器接口 151
9.1 系統(tǒng)時鐘(SysTick) 151
9.1.1 系統(tǒng)嘀嗒定時器 151
9.1.2 SysTick應(yīng)用示例:精確定時 154
9.2 STM32看門狗 156
9.2.1 獨立看門狗(IWDG) 156
9.2.2 IWDG應(yīng)用示例:IWDG復(fù)位 159
9.2.3 窗口看門狗(WWDG) 161
9.2.4 WWDG應(yīng)用示例:適時“喂狗” 164
9.3 STM32定時器(TIMx) 166
9.3.1 基本定時器(TIM6和TIM7) 166
9.3.2 基本定時器應(yīng)用示例:周期性定時中斷 170
9.4 STM32實時時鐘(RTC) 173
9.4.1 RTC結(jié)構(gòu)及特性 173
9.4.2 RTC應(yīng)用示例:鬧鐘 176
習(xí)題9 179
第10章 STM32的模擬接口 181
10.1 STM32的ADC接口 181
10.1.1 ADC結(jié)構(gòu)及特性 181
10.1.2 ADC的轉(zhuǎn)換模式 186
10.1.3 STM32的ADC函數(shù) 187
10.1.4 ADC應(yīng)用示例:數(shù)據(jù)采集 189
10.2 STM32的DAC接口 194
10.2.1 DAC結(jié)構(gòu)及特性 194
10.2.2 STM32的DAC函數(shù) 197
10.2.3 DAC應(yīng)用示例:輸出模擬電壓 199
習(xí)題10 202
參考文獻 203