STM32Cube高效開發教程高級篇

STM32Cube高效開發教程高級篇

《STM32Cube高效開發教程高級篇》是2022年人民郵電出版社出版的圖書。

基本介紹

  • 書名:STM32Cube高效開發教程高級篇
  • 作者:王維波,鄢志丹,王釗
  • 類別:計算機網路
  • 出版社:人民郵電出版社
  • 出版時間:2022年
  • 開本:128 開
  • 裝幀:平裝-膠訂
  • ISBN:9787115552518
內容簡介,圖書目錄,作者簡介,

內容簡介

本書介紹 STM32 開發的一些高級內容。部分詳細介紹嵌入式作業系統 FreeRTOS 的使用;第二部分介紹使用 FatFS 管理 SPI-Flash 晶片、SD 卡和 U 盤上的檔案系統;第三部分介紹 BMP 和 JPG 圖片的獲取與顯示,觸控螢幕的使用,DCMI 接口和數字攝像頭等。全書使用 STM32CubeMX 和 STM32CubeIDE軟體開發例程,講解 FreeRTOS、FatFS、LibJPEG、USB_Host、USB_Device 等中間件以及 SDIO、USB-OTG、
DCMI 等外設的原理和使用方法,並針對一個 STM32F407 開發板編寫了完整示例項目。通過閱讀本書,讀者可以掌握 STM32 開發中的嵌入式作業系統、檔案系統、觸控螢幕等高級軟硬體的開發方法。
本書適合已經掌握 STM32CubeMX 和 STM32CubeIDE 軟體的使用以及 STM32 常用外設的 STM32Cube開發等相關基礎內容的讀者閱讀,可以作為高等院校電子、自動化、計算機類專業的教學用書,也可作為STM32 嵌入式系統開發的參考書。

圖書目錄

第 一部分 嵌入式作業系統FreeRTOS
第 1章 FreeRTOS基礎2
1.1 FreeRTOS概述2
1.1.1 FreeRTOS的發展歷史2
1.1.2 FreeRTOS的特點和許可方式2
1.1.3 FreeRTOS的一些概念和術語3
1.1.4 為什麼要使用RTOS4
1.2 FreeRTOS入門示例4
1.2.1 CubeMX項目配置5
1.2.2 含FreeRTOS的項目的檔案組成8
1.2.3 程式分析和功能實現9
1.3 FreeRTOS的檔案組成和基本原理15
1.3.1 FreeRTOS的檔案組成15
1.3.2 FreeRTOS的編碼規則20
1.3.3 FreeRTOS的配置和功能裁剪21
第 2章 FreeRTOS的任務管理29
2.1 任務相關的一些概念29
2.1.1 多任務運行基本機制29
2.1.2 任務的狀態30
2.1.3 任務的優先權31
2.1.4 空閒任務32
2.1.5 基礎時鐘與嘀嗒信號32
2.2 FreeRTOS的任務調度32
2.2.1 任務調度方法概述32
2.2.2 使用時間片的搶占式調度方法33
2.2.3 不使用時間片的搶占式調度方法34
2.2.4 合作式任務調度方法35
2.3 任務管理相關函式36
2.3.1 相關函式概述36
2.3.2 主要函式功能說明38
2.4 多任務編程示例一40
2.4.1 示例功能與CubeMX項目設定40
2.4.2 初始程式分析42
2.4.3 編寫用戶功能代碼44
2.5 任務管理工具函式49
2.5.1 相關函式概述49
2.5.2 獲取任務句柄50
2.5.3 單個任務的操作51
2.5.4 核心信息統計53
2.6 多任務編程示例二55
2.6.1 示例功能與CubeMX項目設定55
2.6.2 程式功能實現56
第3章 FreeRTOS的中斷管理62
3.1 FreeRTOS與中斷62
3.2 任務與中斷服務例程64
3.2.1 任務與中斷服務例程的關係64
3.2.2 中斷禁止和臨界代碼段65
3.2.3 在ISR中使用FreeRTOS API函式66
3.2.4 中斷及其ISR設計原則67
3.3 任務和中斷程式設計示例67
3.3.1 示例功能和CubeMX項目設定67
3.3.2 基本功能代碼69
3.3.3 各種特性的測試71
第4章 進程間通信與訊息佇列74
4.1 進程間通信74
4.2 佇列的特點和基本操作75
4.2.1 佇列的創建和存儲75
4.2.2 向佇列寫入數據76
4.2.3 從佇列讀取數據77
4.2.4 佇列操作相關函式78
4.3 佇列使用示例79
4.3.1 示例功能和CubeMX項目設定79
4.3.2 初始代碼分析80
4.3.3 實現用戶功能82
第5章 信號量86
5.1 信號量和互斥量概述86
5.1.1 二值信號量86
5.1.2 計數信號量87
5.1.3 互斥量87
5.1.4 遞歸互斥量88
5.1.5 相關函式概述88
5.2 二值信號量使用示例90
5.2.1 二值信號量操作相關函式詳解90
5.2.2 示例功能和CubeMX項目設定92
5.2.3 程式功能實現94
5.3 計數信號量使用示例98
5.3.1 計數信號量操作相關函式詳解98
5.3.2 示例功能和CubeMX項目設定99
5.3.3 程式功能實現100
第6章 互斥量104
6.1 優先權翻轉問題104
6.2 互斥量的工作原理105
6.2.1 優先權繼承105
6.2.2 互斥量相關函式詳解105
6.3 優先權翻轉示例106
6.3.1 示例功能和CubeMX項目設定106
6.3.2 程式功能實現107
6.4 互斥量使用示例111
6.4.1 示例功能和CubeMX項目設定111
6.4.2 程式功能實現111
第7章 事件組115
7.1 事件組的原理和功能115
7.1.1 事件組的功能特點115
7.1.2 事件組的工作原理115
7.2 事件組相關函式116
7.2.1 相關函式概述116
7.2.2 部分函式詳解117
7.3 事件組使用示例120
7.3.1 示例功能和CubeMX項目設定120
7.3.2 程式功能實現120
7.4 通過事件組進行多任務同步125
7.4.1 多任務同步原理125
7.4.2 示例功能和CubeMX項目設定126
7.4.3 程式功能實現127
第8章 任務通知132
8.1 任務通知的原理和功能132
8.2 任務通知的相關函式133
8.2.1 相關函式概述133
8.2.2 函式詳解134
8.3 示例一:使用任務通知傳遞數據137
8.3.1 示例功能與CubeMX項目設定137
8.3.2 程式功能實現138
8.4 示例二:將任務通知用作計數信號量141
8.4.1 示例功能141
8.4.2 CubeMX項目設定141
8.4.3 程式功能實現142
第9章 流緩衝區和訊息緩衝區145
9.1 流緩衝區功能概述145
9.2 流緩衝區操作的相關函式146
9.2.1 相關函式概述146
9.2.2 部分函式詳解146
9.2.3 表示傳送完成和接收完成的宏149
9.3 流緩衝區使用示例149
9.3.1 示例功能與CubeMX項目設定149
9.3.2 程式功能實現151
9.4 訊息緩衝區功能概述154
9.5 訊息緩衝區操作相關函式154
9.5.1 相關函式概述154
9.5.2 部分函式詳解155
9.6 訊息緩衝區使用示例157
9.6.1 示例功能與CubeMX項目設定157
9.6.2 程式功能實現158
第 10章 軟體定時器162
10.1 軟體定時器概述162
10.1.1 軟體定時器的特性162
10.1.2 軟體定時器的相關配置163
10.1.3 定時器服務任務的優先權163
10.2 軟體定時器的相關函式164
10.2.1 相關函式概述164
10.2.2 部分函式詳解165
10.3 軟體定時器使用示例169
10.3.1 示例功能和CubeMX項目設定169
10.3.2 程式功能實現170
第 11章 空閒任務與低功耗174
11.1 HAL和FreeRTOS的基礎時鐘174
11.1.1 使用SysTick作為HAL的基礎時鐘174
11.1.2 使用其他定時器作為HAL的基礎時鐘177
11.1.3 FreeRTOS的基礎時鐘179
11.2 空閒任務與低功耗處理182
11.2.1 實現原理182
11.2.2 設計示例183
11.3 Tickless低功耗模式186
11.3.1 Tickless模式的原理和功能186
11.3.2 Tickless模式的使用示例187
第二部分 FatFS管理檔案系統
第 12章 FatFS和檔案系統192
12.1 FatFS概述192
12.1.1 FatFS的作用192
12.1.2 檔案系統的一些基本概念193
12.1.3 FatFS的功能特點和參數194
12.1.4 FatFS的檔案組成195
12.1.5 FatFS的基本數據類型定義196
12.2 FatFS的應用程式接口函式197
12.2.1 卷管理和系統配置相關函式197
12.2.2 檔案和目錄管理相關函式200
12.2.3 目錄訪問相關函式203
12.2.4 檔案訪問相關函式204
12.3 FatFS的存儲介質訪問函式208
12.4 針對SPI-Flash晶片移植FatFS209
12.4.1 SPI-Flash晶片硬體電路209
12.4.2 CubeMX項目基礎設定210
12.4.3 在CubeMX中設定FatFS210
12.4.4 項目中FatFS的檔案組成216
12.4.5 FatFS初始化過程218
12.4.6 針對SPI-Flash晶片的Disk IO函式實現226
12.5 在SPI-Flash晶片上使用檔案系統231
12.5.1 主程式功能231
12.5.2 磁碟格式化234
12.5.3 獲取FAT磁碟信息234
12.5.4 掃描根目錄下的檔案和子目錄236
12.5.5 創建檔案和目錄237
12.5.6 讀取文本檔案239
12.5.7 讀取二進制檔案239
12.5.8 獲取檔案信息241
12.5.9 檔案file_opera.h的完整定義242
第 13章 直接訪問SD卡245
13.1 SD卡簡介245
13.1.1 SD卡的分類245
13.1.2 常規SD卡的接口246
13.2 SDIO接口硬體電路247
13.2.1 STM32F407的SDIO接口247
13.2.2 開發板上的microSD卡連線電路248
13.3 SDIO接口和SD卡的HAL驅動程式249
13.3.1 SD驅動程式概述250
13.3.2 初始化和配置函式251
13.3.3 讀取SD卡的參數信息251
13.3.4 獲取SD卡的當前狀態255
13.3.5 以輪詢方式讀寫SD卡255
13.3.6 以中斷方式讀寫SD卡256
13.3.7 以DMA方式讀寫SD卡256
13.4 示例一:以輪詢方式讀寫SD卡257
13.4.1 示例功能與CubeMX項目設定257
13.4.2 主程式與SDIO接口 SD卡初始化259
13.4.3 程式功能實現260
13.5 示例二:以DMA方式讀寫SD卡264
13.5.1 示例功能與CubeMX項目設定264
13.5.2 主程式與外設初始化265
13.5.3 程式功能實現268
第 14章 用FatFS管理SD卡檔案系統272
14.1 SD卡檔案系統概述272
14.2 示例一:阻塞式訪問SD卡272
14.2.1 示例功能與CubeMX項目設定272
14.2.2 項目檔案組成和初始代碼分析274
14.2.3 SD卡的Disk IO函式實現278
14.2.4 SD卡檔案管理功能的實現284
14.3 示例二:以DMA方式訪問SD卡288
14.3.1 示例功能和CubeMX項目設定288
14.3.2 Disk IO函式實現代碼分析289
14.3.3 SD卡檔案管理功能的實現291
第 15章 用FatFS管理隨身碟檔案系統295
15.1 USB概述295
15.1.1 USB協定295
15.1.2 USB設備類型296
15.1.3 USB接口類型296
15.2 STM32F407的USB-OTG接口298
15.2.1 USB-OTG概述298
15.2.2 USB-OTG FS299
15.2.3 開發板上的USB接口電路302
15.3 作為USB Host讀寫隨身碟303
15.3.1 示例功能和CubeMX項目設定303
15.3.2 項目檔案組成和初始代碼分析307
15.3.3 USBH狀態變化測試316
15.3.4 隨身碟檔案管理功能實現318
第 16章 USB-OTG用作USB MSC外設324
16.1 開發板作為USB MSC外設的原理324
16.2 示例一:SD卡讀卡器326
16.2.1 示例功能和CubeMX項目設定326
16.2.2 項目檔案組成和初始代碼分析328
16.2.3 程式功能實現333
16.3 示例二:增加FatFS管理本機檔案功能336
16.3.1 示例功能和CubeMX項目設定336
16.3.2 程式功能實現337
16.3.3 運行測試340
第 17章 在FreeRTOS中使用FatFS341
17.1 在RTOS中使用FatFS需考慮的問題341
17.1.1 可重入性問題341
17.1.2 FatFS的可重入性341
17.2 FreeRTOS中使用FatFS的示例343
17.2.1 示例功能和CubeMX項目設定343
17.2.2 項目檔案組成和初始代碼分析346
17.2.3 FatFS API函式的重入性實現原理350
17.2.4 添加用戶功能代碼354
第三部分 圖片的獲取與顯示
第 18章 BMP圖片360
18.1 LCD顯示圖片的原理360
18.1.1 像素顏色的表示360
18.1.2 根據圖片的RGB565數據顯示圖片360
18.2 圖片顯示示例362
18.2.1 示例功能與CubeMX項目配置362
18.2.2 程式功能實現363
18.3 BMP圖片檔案的格式368
18.3.1 BMP圖片檔案的數據分段368
18.3.2 點陣圖檔案頭368
18.3.3 點陣圖信息頭369
18.3.4 點陣圖數據370
18.4 BMP圖片檔案的讀寫操作示例370
18.4.1 示例功能和CubeMX項目設定370
18.4.2 程式功能實現372
18.4.3 BMP檔案操作驅動程式377
第 19章 JPG圖片387
19.1 JPEG和LIBJPEG387
19.2 JPG圖片檔案的讀寫操作示例388
19.2.1 示例功能和CubeMX項目設定388
19.2.2 程式功能實現389
19.2.3 JPG檔案操作驅動程式395
第 20章 電阻式觸控螢幕405
20.1 電阻式觸控螢幕的工作原理405
20.2 電阻式觸控螢幕的軟硬體接口406
20.3 示例一:輪詢方式檢測觸控螢幕輸出407
20.3.1 示例功能407
20.3.2 CubeMX項目設定407
20.3.3 主程式功能實現409
20.3.4 GUI界面的創建與互動操作413
20.3.5 電阻式觸控螢幕驅動程式420
20.4 示例二:中斷方式獲取觸控螢幕輸出426
20.4.1 示例功能和CubeMX項目設定426
20.4.2 程式功能實現427
第 21章 電容式觸控螢幕431
21.1 電容式觸控螢幕的工作原理431
21.2 電容式觸控螢幕的軟硬體接口431
21.2.1 電容式觸控螢幕接口431
21.2.2 電容式觸控螢幕控制晶片功能433
21.3 電容觸控螢幕的使用示例437
21.3.1 示例功能和CubeMX項目設定437
21.3.2 程式功能實現438
21.3.3 電容觸控螢幕驅動程式443
第 22章 DCMI接口和數字攝像頭455
22.1 數字攝像頭455
22.1.1 數字攝像頭概述455
22.1.2 OV7670圖像感測器的功能和接口456
22.1.3 OV7670數據輸出時序和格式457
22.1.4 SCCB通信458
22.1.5 OV7670的暫存器460
22.2 DCMI接口461
22.2.1 DCMI接口概述461
22.2.2 DCMI接口傳輸時序462
22.2.3 DCMI數據存儲格式463
22.2.4 DCMI圖像採集方式464
22.2.5 DCMI的中斷465
22.3 DCMI的HAL驅動465
22.3.1 主要驅動函式概述465
22.3.2 DCMI接口初始化466
22.3.3 DCMI的採集控制467
22.4 DCMI和攝像頭使用示例467
22.4.1 攝像頭模組467
22.4.2 開發板與攝像頭模組的連線468
22.4.3 示例功能與CubeMX項目設定470
22.4.4 程式功能實現474
附錄A CubeMX模板項目和公共驅動程式的使用487
A.1 公共驅動程式的目錄組成487
A.2 CubeMX模板項目488
A.3 新建CubeMX項目後導入模板項目的配置488
A.4 複製模板項目以新建CubeMX項目490
A.5 在CubeIDE中設定驅動程式搜尋路徑490
附錄B 複製一個項目493
附錄C 開發板功能模組494
附錄D 本書示例列表498
附錄E 縮略詞501
參考文獻503

作者簡介

王維波,博士、中國石油大學(華東)控制科學與工程學院教師。從事測控與儀器開發領域的教學和研究工作,主要研究方向是地球物理探測儀器開發、數據處理方法和軟體開發。參與完成國家自然科學基金、山東省重點研發計畫等多個科研項目,發表論文 20 余篇。著有《Qt 5.9 C 開發指南》和《Python Qt GUI 與數據可視化編程》。
鄢志丹,博士、中國石油大學(華東)控制科學與工程學院教師。從事隨鑽測控技術、自抗擾控制方法、井下儀器開發、微弱信號處理等方面的研究工作。主持國家自然科學基金、中國博士後科學基金、山東省自然科學基金等 10 余個科研項目,獲授權發明專利 10 餘項,發表論文 30 余篇。
王釗,博士、中國石油大學(華東)控制科學與工程學院教師。從事自動化相關的教學和研究工作,主要研究方向是非線性系統的非光滑控制研究、故障診斷、工業過程控制等。主持山東省優秀中青年科學家科研獎勵基金項目 1 項,發表論文 20 余篇,作為副主編編寫教材1 部。

相關詞條

熱門詞條

聯絡我們