STM32庫開發實戰指南(光盤內容另行下載,地址見書封底)
第一部分 庫開發初級篇
1 為什么學習STM32
1.1 嵌入式技術知識結構
1.2 嵌入式工程師成長之路
1.3 為什么學習STM32
1.4 如何學習STM32
2 初識STM32固件庫
2.1 STM32神器之庫開發
2.1.1 什么是STM32庫
2.1.2 為什么采用庫開發
2.2 STM32結構及庫層次關系
2.2.1 CMSIS標准
2.2.2 庫目錄、文件簡介
2.2.3 STM32固件庫文件間的關系
2.2.4 使用庫幫助文檔
3 GPIO入門之流水燈
3.1 安裝MDK
3.2 建立工程模板
3.2.1 新建工程
3.2.2 配置J-LINK硬件調試
3.3 如何編譯和下載程序
3.3.1 如何編譯程序
3.3.2 如何下載程序
4 深入分析流水燈例程
4.1 STM32的GPIO
4.2 STM32的地址映射
4.2.1 溫故而知新——stm32f10x.h文件
4.2.2 外設基地址
4.2.3 總線外設基地址
4.2.4 寄存器組基地址
4.3 STM32固件庫對寄存器的封裝
4.4 STM32的時鍾系統
4.4.1 時鍾樹&時鍾源
4.4.2 高速外部時鍾
4.4.3 HCLK、FCLK、PCLK1、PCLK2
4.5 LED具體代碼分析
4.5.1 實驗描述及工程文件清單
4.5.2 配置工程環境
4.5.3 編寫用戶文件
4.5.4 初始化結構體——GPIO_InitTypeDef類型
4.5.5 初始化庫函數——GPIO_Init()
4.5.6 開啟外設時鍾
4.5.7 控制I/O輸出高、低電平
4.5.8 led.h文件
4.5.9 main文件
4.6 GPIO_Init()函數的實現
4.6.1 規范的位操作方法
4.6.2 GPIO_Init()實現代碼分析
4.6.3 再論開發方式
4.7 開發步驟總結
5 調試程序
5.1 MDK軟件仿真調試
5.2 使用J-LINK進行硬件調試
5.2.1 硬件調試
5.2.2 軟件編譯過程
5.3 MDK使用小技巧
第二部分 庫開發中級篇
6 GPIO再舉例之按鍵實驗
6.1 GPIO的8種工作模式
6.1.1 4種輸入模式
6.1.2 4種輸出模式
6.2 按鍵實驗分析
6.3 按鍵代碼分析
6.3.1 實驗描述及工程文件清單
6.3.2 配置工程環境
6.3.3 main文件
6.3.4 GPIO初始化配置
6.3.5 利用固件庫的數據類型
6.3.6 實現LED反轉
6.3.7 實驗現象
7 EXTI之按鍵中斷實驗
7.1 STM32的中斷和異常
7.2 NVIC中斷控制器
7.2.1 NVIC結構體成員
7.2.2 搶占優先級和響應優先級
7.2.3 NVIC的優先級組
7.3 EXTI外部中斷
7.4 中斷檢測按鍵實驗分析
7.4.1 實驗描述及工程文件清單
7.4.2 配置工程環境
7.4.3 main文件
7.4.4 配置外部中斷
7.4.5 AFIO時鍾
7.4.6 NVIC初始化配置
7.4.7 EXTI初始化配置
7.4.8 編寫中斷服務函數
7.4.9 實驗現象
8 串口通信(USART)
8.1 異步串口通信協議
8.2 直通線和交叉線
8.3 串口工作過程分析
8.3.1 波特率控制
8.3.2 收發控制
8.3.3 數據存儲轉移
8.4 串口通信實驗分析
8.4.1 實驗描述及工程文件清單
8.4.2 配置工程環境
8.4.3 main文件
8.4.4 USART初始化配置
8.4.5 printf()函數重定向
8.4.6 USART1_printf()函數
8.4.7 實驗現象
9 庫函數開發小結
9.1 初始化
9.2 數據輸入輸出
9.3 狀態位、標志位
9.3.1 事件
9.3.2 標志位的檢查與清除
9.4 外設函數分類
10 DMA——為CPU減負
10.1 DMA功能簡介
10.2 DMA工作分析
10.3 DMA實例之串口通信
10.3.1 實驗描述及工程文件清單
10.3.2 配置工程環境
10.3.3 main文件
10.3.4 DMA初始化
10.3.5 使用DMA中斷
10.3.6 實驗現象
11 ADC實驗(DMA方式)
11.1 ADC簡介
11.2 STM32的ADC主要技術指標
11.3 ADC工作過程分析
11.4 ADC采集數據實例(采用DMA模式)
11.4.1 實驗描述及工程文件清單
11.4.2 配置工程環境
11.4.3 main文件
11.4.4 ADC初始化
11.4.5 計算電壓值
11.4.6 實驗現象
12 SysTick(系統滴答定時器)
12.1 SysTick——操作系統的心跳
12.2 SysTick工作分析
12.3 使用SysTick精確延時實驗分析
12.3.1 實驗描述及工程文件清單
12.3.2 配置工程環境
12.3.3 main文件
12.3.4 配置並啟動SysTick
12.3.5 定時時間的計算
12.3.6 編寫中斷服務函數
12.3.7 使用SysTick測量時間的功能
12.3.8 實驗現象
13 STM32定時器
13.1 定時器功能簡介
13.2 定時器工作分析
13.2.1 基本定時器
13.2.2 通用定時器
13.2.3 高級定時器
13.3 PWM輸出實例分析
13.3.1 實驗描述及工程文件清單
13.3.2 配置工程環境
13.3.3 main文件
13.3.4 定時器初始化
13.3.5 實驗現象
14 I2C接口
14.1 I2C協議簡介
14.1.1 物理層
14.1.2 協議層
14.2 STM32的I2C特性及架構
14.2.1 I2C接口特性
14.2.2 I2C架構
14.3 I2C接口讀寫EEPROM實驗
14.3.1 實驗描述及工程文件清單
14.3.2 配置工程環境
14.3.3 main文件
14.3.4 I2C接口初始化
14.3.5 對EEPROM的讀寫操作
14.3.6 使用I2C讀寫EEPROM流程總結
14.3.7 實驗現象
15 SPI模塊
15.1 SPI協議簡介
15.1.1 SPI信號線
15.1.2 SPI模式
15.2 STM32的SPI特性及架構
15.2.1 STM32的SPI特性
15.2.2 STM32的SPI架構分析
15.3 SPI接口讀取Flash實例分析
15.3.1 實驗描述及工程文件清單
15.3.2 配置工程環境
15.3.3 main文件
15.3.4 SPI初始化
15.3.5 控制Flash的命令
15.3.6 讀取廠商ID
15.3.7 擦除Flash內容
15.3.8 向Flash寫入數據
15.3.9 從Flash讀取數據
15.3.10 小結
15.3.11 實驗現象
16 CAN控制器
16.1 CAN協議簡介
16.1.1 物理層
16.1.2 CAN的報文種類及結構
16.1.3 同步
16.2 STM32的CAN特性及架構
16.2.1 CAN特性
16.2.2 CAN架構
16.3 雙CAN通信實驗分析
16.3.1 實驗描述及工程文件清單
16.3.2 配置工程環境
16.3.3 main文件
16.3.4 配置CAN接口
16.3.5 打包報文
16.3.6 發送報文
16.3.7 接收報文、編寫中斷服務函數
16.3.8 實驗小結
16.3.9 實驗現象
第三部分 庫開發高級篇
17 SDIO之SD卡驅動
17.1 SD協議簡介
17.1.1 卡的種類
17.1.2 SDIO基本架構
17.2 STM32的SDIO接口
17.2.1 從SDIO的時鍾說起
17.2.2 SDIO的命令格式
17.2.3 數據傳輸格式
17.3 SD卡讀寫實驗分析
17.3.1 實驗描述及工程文件清單
17.3.2 配置工程環境
17.3.3 main文件
17.3.4 SDIO初始化
17.3.5 卡的上電識別流程
17.3.6 卡的初始化流程
17.3.7 對SD卡進行讀寫
17.3.8 原版官方驅動例程的bug
17.3.9 實驗現象
18 文件系統之FATFS_R0.09
18.1 什么是文件系統
18.2 FATFS文件系統簡介
18.2.1 FATFS的目錄結構
18.2.2 FATFS幫助文檔
18.2.3 FATFS源碼
18.3 移植FATFS文件系統實驗
18.3.1 實驗描述及工程文件清單
18.3.2 配置工程環境
18.3.3 為文件系統添加底層驅動
18.3.4 添加簡體中文和長文件名支持
18.3.5 main文件
18.3.6 實驗現象
19 MP3播放器
19.1 MP3文件探秘
19.1.1 文件格式
19.1.2 MP3文件的原始數據
19.1.3 MP3文件格式
19.2 VS1003硬件解碼芯片
19.2.1 VS1003芯片簡介
19.2.2 TDA1308芯片
19.3 MP3播放器實驗
19.3.1 實驗描述及工程文件清單
19.3.2 配置工程環境
19.3.3 main文件
19.3.4 控制VS1003進入准備狀態
19.3.5 播放MP3文件
19.3.6 STM32的堆棧
19.3.7 實驗現象
20 USB大容量存儲器實例
20.1 USB協議分析
20.1.1 協議版本
20.1.2 USB電氣特性
20.1.3 USB通信模型
20.1.4 USB枚舉
20.2 STM32的USB控制器
20.3 USB讀取SD卡——模擬U盤實驗
20.3.1 實驗描述及工程文件清單
20.3.2 配置工程環境
20.3.3 USB固件庫說明
20.3.4 main文件
20.3.5 基本配置
20.3.6 USB初始化
20.3.7 中斷服務函數
20.3.8 BOT和SCSI協議
20.3.9 實驗現象
21 LCD觸摸屏畫板
21.1 LCD控制器簡介
21.1.1 ILI9341控制器結構
21.1.2 像素點的數據格式
21.1.3 ILI9341的通信時序
21.2 用STM32驅動LCD
21.2.1 FSMC簡介
21.2.2 用FSMC模擬8080時序
21.3 觸摸屏感應原理
21.4 TSC2046觸摸屏控制器
21.5 LCD觸摸屏畫板實驗
21.5.1 實驗描述及工程文件清單
21.5.2 配置工程環境
21.5.3 main文件
21.5.4 初始化FSMC模式
21.5.5 FSMC模擬8080讀寫參數、命令
21.5.6 液晶屏畫點函數
21.5.7 觸摸屏校正
21.5.8 檢測觸點、畫點
21.5.9 實驗現象
22 字庫及BMP圖片顯示
22.1 什么是字模
22.2 制作字模
22.3 BMP圖片格式
22.4 顯示中英文及BMP圖片實驗
22.4.1 實驗描述及工程文件清單
22.4.2 配置工程環境
22.4.3 main文件
22.4.4 顯示漢字
22.4.5 在SD卡上讀取與保存BMP圖像
22.4.6 實驗現象
23 OV7670攝像頭驅動
23.1 攝像頭的分類
23.1.1 數字攝像頭與模擬攝像頭的區別
23.1.2 CCD與CMOS的區別
23.2 OV7670介紹
23.2.1 OV7670功能框架
23.2.2 OV7670管腳封裝
23.3 SCCB總線
23.3.1 SCCB接口定義
23.3.2 SCCB時序描述
23.4 攝像頭模塊
23.4.1 攝像頭模塊硬件介紹
23.4.2 OV7670輸出時序
23.4.3 FIFO時序
23.4.4 攝像頭的驅動原理
23.5 攝像頭驅動實驗
23.5.1 實驗描述及工程文件清單
23.5.2 配置工程環境
23.5.3 main文件
23.5.4 SCCB總線的軟件實現
23.5.5 初始化OV7670
23.5.6 采集並顯示圖像
23.5.7 實驗現象
24 以太網及LwIP協議棧移植
24.1 互聯網模型
24.2 以太網
24.2.1 PHY層
24.2.2 MAC子層
24.2.3 以太網控制器
24.3 MAC之上的網絡層
24.3.1 為什么在MAC之上還有分層
24.3.2 TCP/IP協議中各層次的功能
24.3.3 LwIP協議棧
24.4 ENC28J60+LwIP以太網實驗
24.4.1 實驗描述及工程文件清單
24.4.2 配置工程環境
24.4.3 main文件
24.4.4 LwIP對底層數據結構的封裝
24.4.5 初始化協議棧
24.4.6 LwIP對底層操作的封裝
24.4.7 輪詢和計時
24.4.8 opt.h文件和debug
24.4.9 LwIP應用
24.4.10 網頁服務器
24.4.11 實驗現象
25 Wi-Fi模塊EMW3180驅動
25.1 資料與工具下載
25.2 EMW3180簡介
25.3 EMW3180驅動實驗
25.3.1 實驗描述及工程文件清單
25.3.2 配置工程環境
25.3.3 EMSP_API函數
25.3.4 API函數一覽
25.3.5 main文件
25.3.6 em380c_hal.c文件
25.3.7 實驗現象
第四部分 庫開發系統篇
26 μC/OS-Ⅲ及其源代碼介紹
26.1 μC/OS簡介
26.1.1 操作系統與裸機的區別
26.1.2 μC/OS實時操作系統
26.2 μC/OS-Ⅲ與μC/OS-Ⅱ的主要區別
26.3 μC/OS-Ⅲ源碼
26.4 μC/OS-Ⅲ工程架構
27 移植μC/OS-Ⅲ到STM32
27.1 搭建μC/OS工程文件結構
27.2 修改μC/OS代碼
27.2.1 修改os_cpu.h文件
27.2.2 修改os_cpu_c.c
27.2.3 修改os_cpu_a.asm文件
27.2.4 修改cpu_a.asm文件
27.2.5 修改startup_stm32f10x_hd.s文件
27.2.6 修改stm32f10x_it.c文件
27.3 編寫用戶文件
27.3.1 編寫includes.h文件
27.3.2 編寫BSP相關文件
27.3.3 創建任務
27.4 配置μC/OS-Ⅲ
28 運行多任務
28.1 創建用戶任務
28.2 編寫用戶代碼
28.3 任務執行流程
光盤內容
思維導圖
防止博客圖床圖片失效,防止圖片源站外鏈:
http://www.processon.com/chart_image/5e5b3602e4b0cc44b5b4a6a5.png)
思維導圖在線編輯鏈接: