●第1章嵌入式繫統與微控制器1
1.1嵌入式繫統相關概念1
1.1.1什麼是嵌入式繫統1
1.1.2嵌入式繫統的特點1
1.1.3嵌入式繫統主要組成1
1.1.4嵌入式芯片類型3
1.2微控制器4
1.2.1微控制器特點4
1.2.2微控制器芯片型號及發展歷史4
1.2.3ARM微控制器介紹6
1.2.4STM32ARMCortex-M微控制器7
1.3嵌入式繫統開發8
1.3.1方案設計及芯片選型8
1.3.2嵌入式繫統硬件開發8
1.3.3嵌入式繫統軟件開發9
1.3.4嵌入式代碼編譯11
1.3.5嵌入式代碼下載及調試11
1.4微控制器芯片的發展趨勢12
習題113
第2章微控制器體繫結構及彙編語言14
2.1Cortex-M3內核體繫架構15
2.1.1Cortex-M3總體架構15
2.1.2Cortex-M3總線接口16
2.1.3Cortex-M3寄存器16
2.1.4Cortex-M3操作模式18
2.1.5Cortex-M3存儲器映射19
2.1.6流水線19
2.1.7異常和中斷20
2.1.8存儲器(MPU)20
2.2彙編指令尋址方式20
2.3ARM指令集22
2.3.1指令基本形式22
2.3.2ARM指令集條件碼23
2.3.3ARM指令種類23
2.4Thumb指令集28
習題229
第3章微控制器硬件繫統31
3.1微控制器概述31
3.1.1STM32F103內部結構31
3.1.2STM32F103常用接口33
3.1.3STM32F103繫列微控制器簡介35
3.2微控制器基本電路36
3.2.1電源電路36
3.2.2復位電路37
3.2.3時鐘源38
3.2.4時鐘39
3.2.5下載電路41
3.2.6啟動配置電路42
3.3微控制器低功耗模式43
習題344
第4章微控制器軟件開發45
4.1微控制器開發語言45
4.1.1開發語言介紹45
4.1.2嵌入式C語言46
4.2微控制器開發庫函數51
4.2.1STM32開發庫函數介紹51
4.2.2STM32STD庫53
4.2.3STM32HAL庫和LL庫54
4.3微控制器開發環境56
4.3.1MDK開發環境56
4.3.2STM32CubeMX軟件57
4.4微控制器虛擬仿真環境58
4.5微控制器程序調試和下載60
習題461
第5章GPIO62
5.1GPIO結構及特點62
5.1.1GPIO功能模式62
5.1.2GPIO特點及操作63
5.1.3GPIO開發實例64
5.2GPIO寄存器開發方式65
5.2.1GPIO寄存器說明65
5.2.2GPIO寄存器實現應用實例66
5.3GPIOSTD庫開發方式67
5.3.1GPIOSTD庫函數說明67
5.3.2GPIOSTD庫應用實例69
5.4GPIOHAL庫開發方式71
5.4.1GPIOHAL庫函數說明71
5.4.2GPIOHAL庫應用實例73
5.5GPIOLL庫開發方式76
5.5.1GPIOLL庫函數說明76
5.5.2GPIOLL庫應用實例79
5.6GPIO應用開發實例80
5.6.1數碼管顯示實例80
5.6.2行列式鍵盤掃描實例83
習題586
第6章中斷87
6.1STM32中斷簡介87
6.2嵌套向量中斷控制器89
6.2.1NVIC寄存器89
6.2.2繫統控制寄存器(SCB)89
6.2.3中斷和異常處理90
6.2.4STM32中斷優先級91
6.3EXTI外部中斷92
6.3.1EXTI硬件結構92
6.3.2EXTI中斷操作93
6.4EXTI中斷應用實例94
習題695
第7章串行通信96
7.1串行通信簡介96
7.1.1串行通信基礎知識96
7.1.2微控制器常見串行通信方式97
7.2STM32USART接口98
7.2.1USART硬件引腳98
7.2.2USART主要寄存器及中斷請求99
7.2.3UART異步通信100
7.2.4USART其他功能模式101
7.3UART異步串行操作102
7.3.1串行數據發送和接收102
7.3.2UART數據發送和接收應用實例104
7.3.3RS-232接口107
7.3.4printf串口終端實現109
7.3.5RS-485接口110
7.4基於串口的無線通信111
7.4.1移動通信112
7.4.2藍牙串口112
7.4.3串口無線網絡(WiFi)113
7.4.4ZigBee通信113
7.5SPI通信113
7.5.1STM32SPI接口113
7.5.2SPI接口應用實例115
習題7117
第8章定時器118
8.1定時器概述118
8.1.1通用定時器119
8.1.2高級定時器119
8.1.3高級/通用定時器接口119
8.1.4定時器引腳和寄存器122
8.1.5定時器時鐘源123
8.1.6定時器計數模式123
8.2定時器操作124
8.2.1定時功能及實例124
8.2.2計數功能及實例127
8.2.3捕獲功能及實例129
8.2.4輸出PWM模式及實例131
8.2.5其他功能模式134
8.3繫統滴答定時器(SysTick)135
8.3.1SysTick工作分析及配置136
8.3.2SysTick功能實現136
8.4看門狗定時器(WDT)138
8.4.1獨立看門狗138
8.4.2窗口看門狗139
8.4.3獨立看門狗與窗口看門狗的區別141
8.5實時時鐘(RTC)141
習題8145
第9章ADC146
9.1ADC概述146
9.1.1STM32的ADC功能146
9.1.2STM32的ADC結構146
9.1.3STM32芯片的ADC引腳148
9.1.4STM32的ADC工作模式149
9.1.5STM32的ADC主要寄存器153
9.2ADC應用實例154
9.2.1實例主要庫函數說明154
9.2.2ADC查詢和中斷實例155
習題9157
第10章DMA158
10.1DMA概述158
10.1.1STM32的DMA特性158
10.1.2STM32的DMA主要寄存器160
10.2DMA應用實例160
10.2.1ADC數據采集DMA方式160
10.2.2串口發送DMA方式161
習題10163
第11章其他接口164
11.1I2C總線164
11.1.1I2C總線介紹164
11.1.2STM32的I2C總線165
11.1.3I2C總線應用實例167
11.2CAN總線171
11.2.1CAN總線介紹171
11.2.2STM32的CAN總線173
11.3USB總線173
11.3.1USB簡介173
11.3.2STM32的USB接口174
習題11174
第12章嵌入式操作繫統175
12.1嵌入式操作繫統概述175
12.1.1傳統小型嵌入式操作繫統175
12.1.2嵌入式小型物聯網操作繫統176
12.1.3嵌入式操作繫統實時性特點178
12.2μC/OS-II嵌入式操作繫統178
12.2.1μC/OS-II特性179
12.2.2μC/OS-II主要代碼說明179
12.2.3μC/OS-II的啟動過程181
12.3μC/OS-II操作繫統移植181
12.3.1移植規劃181
12.3.2編寫OS_CPU.H182
12.4μC/OS-II內核結構184
12.4.1μC/OS-II的任務狀態184
12.4.2任務控制塊OS_TCB185
12.4.3μC/OS-II的任務調度186
12.4.4μC/OS-II的任務切換187
12.4.5μC/OS-II的中斷處理188
12.5μC/OS-II任務、時間及事件控制塊188
12.5.1任務管理188
12.5.2時間管理189
12.5.3事件控制塊191
12.6互斥信號量( tex)192
12.6.1互斥信號量介紹192
12.6.1互斥信號量實例192
12.7信號量194
12.7.1概述194
12.7.2信號量任務同步實例195
12.7.3信號量資源共享實例197
12.7.4中斷服務程序與任務同步實例198
12.8事件標志組200
12.8.1概述200
12.8.2事件標志組操作201
12.9消息郵箱202
12.9.1概述202
12.9.2消息郵箱操作203
12.10消息隊列205
12.10.1概述205
12.10.2消息隊列操作206
12.11動態內存管理207
12.11.1概述207
12.11.2動態內存管理操作實例207
習題12208
第13章綜合設計實例209
13.1嵌入式繫統開發流程209
13.2嵌入式繫統開發實例210
13.2.1小車繫統及整體設計210
13.2.2硬件設計說明210
13.2.3軟件設計說明214
習題13219
參考文獻220
本書基於STM32芯片及Proteus仿真開發來講述嵌入式微控制器原理與設計,主要內容包括:嵌入式繫統開發的相關背景;嵌入式ARM芯片體繫結構及彙編語言;嵌入式繫統開發環境、工具、編程語言及庫函數;嵌入式芯片基本組成、最小繫統、下載方式和低功耗模式;嵌入式芯片接口和嵌入式操作繫統。本書分別對微控制器常見的GPIO、中斷、異步串行通信、同步串行通信、高級定時器、通用定時器、滴答時鐘、ADC、DMA、總線及USB接口進行了講解;同時對嵌入式物聯網操作繫統進行了介紹,基於μC/OS-Ⅱ展開並說明嵌入式操作繫統的核心內容和功能;最後通過一個小車的實例說明嵌入式繫統綜合實例的實現過程。本書在講解各個知識點的同時設計了Proteus仿真開發實例,從而有助於讀者對各個知識點的理解。本書可作為高等院校電子工程、自動化、計算機科學及技術和電氣工程等專業教材和參考書,也可供相關工程技術人員參考。