相關主題
商品描述
基於Cortex-M4內核的STM32F4系列微控制器具有較高的性價比,在多個領域都得到了廣泛的應用。本書以STM32F407為例,通過11個具體的項目詳細介紹微控制器和嵌入式系統開發技術,主要內容涉及開發環境、標準固件庫、GPIO接口、定時器、外部中斷、USART、SPI總線、I2C總線、ADC、嵌入式操作系統等。本書採用項目式教學方法進行講解,可幫助讀者快速熟悉ARM微控制器與嵌入式系統的開發流程、STM32系列微控制器的標準固件庫和各種外設的使用方法。
目錄大綱
目 錄
項目1 開發環境的搭建 1
任務1.1 瞭解ARM微控制器STM32F407 2
1.1.1 ARM微控制器 2
1.1.2 STM32F407的功能 6
任務1.2 初識開發板硬件電路 10
1.2.1 核心板的電路原理圖 10
1.2.2 擴展板的電路原理圖 13
任務1.3 開發環境的搭建 15
1.3.1 KEIL開發環境搭建 16
1.3.2 安裝調試工具 19
1.4 項目總結 22
1.5 動手實踐 22
1.6 潤物無聲:中國芯片 22
1.7 知識鞏固 23
項目2 標準固件庫函數開發初探:從點亮LED開始 25
任務2.1 多文件編程 25
2.1.1 C程序的編譯 26
2.1.2 模塊化編程 26
任務2.2 標準固件庫函數工程模板的建立 29
2.2.1 標準固件庫文件 29
2.2.2 使用幫助文檔 35
2.2.3 建立庫函數工程模板 36
任務2.3 點亮LED 44
2.3.1 點亮LED的開發步驟 44
2.3.2 硬件電路設計 44
2.3.3 軟件設計 45
2.4 項目總結 48
2.5 動手實踐 49
2.6 項目拓展 49
2.7 潤物無聲:千里之行,始於足下 49
2.8 知識鞏固 49
項目3 使用GPIO接口完成簡單的開發任務 54
任務3.1 使用GPIO接口實現流水燈 54
3.1.1 GPIO接口的工作模式 54
3.1.2 STM32F407ZGT6的時鐘系統 60
3.1.3 GPIO接口的結構體及庫函數 65
3.1.4 流水燈的軟硬件設計 69
任務3.2 使用GPIO接口控制按鍵 71
3.2.1 任務描述 71
3.2.2 硬件設計 72
3.2.3 軟件設計 72
任務3.3 數碼管的動態顯示 76
3.3.1 任務描述 76
3.3.2 硬件設計 76
3.3.3 軟件設計 77
3.4 項目總結 82
3.5 動手實踐 82
3.6 潤物無聲:代碼規範 83
3.7 知識鞏固 84
項目4 使用定時器實現電子鐘 89
任務4.1 熟悉STM32系列微控制器的中斷系統 89
4.1.1 嵌套向量中斷控制器 91
4.1.2 NVIC的結構體 93
4.1.3 NVIC的標準固件庫函數 95
4.1.4 中斷編程的要點 95
任務4.2 熟悉STM32F407微控制器的定時器特性 96
4.2.1 高級控制定時器 96
4.2.2 通用定時器 97
4.2.3 基本定時器 97
任務4.3 使用定時器實現電子鐘的軟件設計 97
4.3.1 基本定時器的主要功能 97
4.3.2 定時器的結構體及標準固件庫函數 100
4.3.3 電子鐘的軟件設計 104
4.4 項目總結 109
4.5 動手實踐 109
4.6 潤物無聲:誠信 109
4.7 知識鞏固 109
項目5 利用外部中斷為電子鐘校準 113
任務5.1 熟悉中斷/事件線的特性 113
任務5.2 學會使用EXTI的結構體及標準固件庫函數 116
任務5.3 利用外部中斷實現電子鐘校準的軟件設計 118
5.3.1 任務要求 118
5.3.2 編程要點 119
5.3.3 實例代碼 120
5.3.3 下載驗證 126
5.4 項目總結 126
5.5 動手實踐 126
5.6 潤物無聲:知識產權 127
5.7 知識鞏固 127
項目6 通過USART收發數據 130
任務6.1 理解串行通信協議 131
6.1.1 物理層 131
6.1.2 協議層 132
6.1.3 有效數據和數據校驗 133
任務6.2 熟悉STM32系列微控制器的USART 133
6.2.1 USART的特性 134
6.2.2 USART的功能 134
任務6.3 學會使用USART的結構體及標準固件庫函數 139
任務6.4 通過USART收發數據 143
6.4.1 任務要求 143
6.4.2 編程要點 143
6.4.3 硬件連接 144
6.4.4 軟件編程 145
6.4.5 實例代碼 146
6.4.6 下載驗證 148
6.5 項目總結 151
6.6 動手實踐 151
6.7 潤物無聲:華為5G通信 151
6.8 知識鞏固 152
項目7 使用SPI總線操作外設 154
任務7.1 理解SPI協議 155
7.1.1 物理層 155
7.1.2 協議層 155
任務7.2 熟悉STM32系列微控制器的SPI 157
7.2.1 SPI的特性 158
7.2.2 SPI的功能 158
任務7.3 學會使用SPI的結構體及標準固件庫函數 160
任務7.4 利用MAX7219實現8位數碼管的顯示功能 164
7.4.1 編程任務 164
7.4.2 硬件設計 164
7.4.3 軟件設計 166
7.4.4 實例代碼 169
7.4.5 下載驗證 172
7.5 項目總結 173
7.6 動手實踐 173
7.7 潤物無聲:6G爭奪戰已然打響 174
7.8 知識鞏固 174
項目8 使用定時器生成PWM信號 176
任務8.1 理解使用定時器生成PWM信號的原理 176
任務8.2 熟悉STM32系列微控制器的定時器 179
8.2.1 TIM2~TIM5的主要特性 179
8.2.2 TIM9~TIM14的主要特性 180
8.2.3 通用定時器的功能 181
任務8.3 學會使用定時器的結構體和標準固件庫函數 189
任務8.4 使用定時器生成PWM信號的軟件設計 192
8.4.1 任務描述 192
8.4.2 編程要點 192
8.4.3 實例代碼 196
8.4.4 下載驗證 198
8.5 項目總結 199
8.6 項目拓展 199
8.7 動手實踐 199
8.8 潤物無聲:精益求精 199
8.9 知識鞏固 199
項目9 使用I2C總線驅動OLED 201
任務9.1 理解I2C總線協議 201
9.1.1 I2C總線的物理層 201
9.1.2 I2C總線的協議層 203
任務9.2 熟悉STM32系列微控制器的I2C總線 205
9.2.1 I2C總線接口的特性 205
9.2.2 I2C總線接口的功能 206
9.2.3 I2C總線的通信過程 208
任務9.3 學會使用I2C總線的結構體及標準固件庫函數 209
任務9.4 使用I2C總線驅動OLED的軟件設計 216
9.4.1 編程任務 216
9.4.2 編程要點 217
9.4.3 硬件設計 217
9.4.4 軟件設計 217
9.4.5 實例代碼 223
9.4.6 下載驗證 236
9.5 項目總結 236
9.6 動手實踐 236
9.7 潤物無聲:柔性OLED 237
9.8 知識鞏固 237
項目10 通過ADC採集光敏傳感器輸出電壓值 241
任務10.1 熟悉STM32系列微控制器的ADC 241
10.1.1 ADC的特性 243
10.1.2 ADC的功能 243
任務10.2 學會使用ADC的結構體及標準固件庫函數 249
任務10.3 通過ADC單通道採集光敏傳感器的輸出電壓 258
10.3.1 獨立模式下ADC單通道數據採集的硬件連接 258
10.3.2 獨立模式下ADC單通道數據採集的編程要點 259
10.3.3 實例代碼 261
10.3.4 下載驗證 263
10.4 項目總結 264
10.5 動手實踐 264
10.6 潤物無聲:集成電路工程技術人員 264
10.7 知識鞏固 265
項目11 嵌入式操作系統μC/OS-Ⅲ的移植 267
任務11.1 瞭解嵌入式操作系統 267
11.1.1 嵌入式系統的特點 267
11.1.2 常用的嵌入式操作系統 268
任務11.2 如何將μC/OS-Ⅲ移植到STM32F407開發板 270
11.2.1 裸機系統和多任務操作系統的區別 270
11.2.2 μCOS-Ⅲ的移植方法 272
任務11.3 如何在μC/OS-Ⅲ上實現單任務——LED閃爍 278
11.3.1 如何創建任務 279
11.3.2 啟動任務 281
11.3.3 任務總結 281
11.4 項目總結 281
11.5 動手實踐 281
11.6 潤物無聲:華為鴻蒙系統 282
11.7 知識鞏固 282
參考文獻 283