內容簡介
《Cortex-M3之STM32嵌入式係統設計》介紹瞭以ARMCortex-M3為內核的STM32F103增強型微控製器的特點,深入講解其硬件和軟件設計方法。本書分為STM32基礎開發、STM32深入開發以及STM32高級開發三部分。基礎開發部分介紹瞭嵌入式係統概述、STM32最小係統設計、STM32程序設計入門、GPIO應用、GCC編譯器的安裝與應用、STM32外部中斷、麵嚮對象設計的本質、USART通信等內容;深入開發部分介紹瞭深入STM32的工作原理、定時器與日曆、ADC應用、DMA應用、備份寄存器與看門狗程序、TFT驅動與顯示、觸摸屏驅動、SD卡驅動與FAT文件係統等;在高級開發部分介紹?C/OS-II在STM32上的移植、漢字與圖形圖像顯示、攝像頭驅動與圖像采集、以太網及Web遠程控製係統設計等內容。
本書配套光盤中附有所有章節的源程序。本書適閤於嵌入式開發人員作為開發參考資料,也適閤於高校師生作為單片機、嵌入式係統課程的教材和教學參考書。
目錄
前言
第1章 概述
1.1 嵌入式係統定義
1.2 嵌入式係統的發展
1.2.1 從單片機到嵌入式係統
1.2.2 從芯片級設計到係統級設計
1.2.3 從麵嚮器件到麵嚮任務的設計
1.2.4 從單處理器設計到多處理器設計
1.3 嵌入式係統的應用
1.4 ARM係列嵌入式係統處理器
1.4.1 ARM處理器分類
1.4.2 ARM Cortex處理器
1.4.3 ARM Coretx-M3處理器
1.4.4 ARM Cortex-A8處理器
1.5 從8/16位處理器到ARM Cortex-M3/M
1.6 常見的Cortex-M0/M3係列MCU
第2章 STM32最小係統設計
2.1 STM32F103C最小係統設計方案
2.2 最小係統設計的要素
2.2.1 STM32外部晶振
2.2.2 復位電路
2.2.3 LED、Key及BOOT跳綫
2.2.4 穩壓電源及ISP下載口
2.2.5 IO端口
2.3 PCB圖設計
第3章 STM32程序設計入門
3.1 STM32入門之Hello World程序
3.1.1 開發環境
3.1.2 編寫STM32的C程序
3.1.3 用GCC編譯stm32程序
3.1.4 STM32程序下載
3.1.5 在Obtain_Studio中編譯Hello World程序
3.2 不同開發闆的Hello World程序
3.3 基於STM32固件庫的入門程序
3.3.1 STM32固件庫
3.3.2 STM32固件庫外設的初始化和設置
3.3.3 基於STM32固件庫的程序設計
3.4 基於STM32固件庫的Hello World程序代碼分析
第4章 GPIO應用
4.1 認識STM32 GPIO
4.1.1 GPIO功能特點
4.1.2 STM32 IO口的優點
4.1.3 STM32固件庫中提供的GPIO庫函數
4.2 KEY_LED程序
4.2.1 創建stm32_C++KEY_LED項目
4.2.2 stm32_C++KEY_LED項目程序分析
4.3 低層代碼分析
4.3.1 GPIO端口的定義
4.3.2 AHB/APB橋的配置
4.3.3 GPIO引腳的配置
4.3.4 GPIO的讀寫
第5章 GCC編譯器的安裝與應用
5.1 GCC介紹
5.1.1 GCC概述
5.1.2 MinGW簡介
5.1.3 MinGW的安裝
5.1.4 MinGW測試
5.1.5 常見GCC用法
5.2 ARM GCC編譯器
5.2.1 WinARM編譯器
5.2.2 Sourcery G++ Lite for ARM EABI編譯器
5.3 Obtain_Studio集成開發係統
5.3.1 Obtain_Studio集成開發係統介紹
5.3.2 Obtain_Studio集成開發係統常用技巧
5.4 GCC Make編譯文件設計
5.4.1 GCC Make常用命令
5.4.2 makefile文件規則
5.4.3 makefile文件函數
5.5 GCC編譯器LD腳本
5.5.1 C/C++程序內存空間
5.5.2 GCC LD腳本基礎
5.5.3 STM32程序中的LD腳本程序
第6章 STM32外部中斷
6.1 STM32外部中斷
6.2 STM32外部中斷實例
6.3 STM32中斷配置
6.3.1 STM32外部中斷程序分析
6.3.2 中斷通道配置
6.3.3 中斷優先級配置
6.3.4 外部中斷模式配置
6.3.5 外部中斷響應函數配置
第7章 麵嚮對象程序設計
7.1 程序風格
7.1.1 程序風格的比較
7.1.2 編程風格在程序設計中的作用
7.2 跨越開發闆
7.2.1 端口映射的方法
7.2.2 模式設置的方法
7.3 分類與封裝
7.3.1 什麼是分類與封裝
7.3.2 封裝的實現
7.4 隱藏與權限
7.4.1 隱藏
7.4.2 權限
7.5 繼承
7.5.1 CGpio類的繼承
7.5.2 測試CLed和CKey類
7.6 組裝
7.6.1 GPIO的組裝
7.6.2 GPIO組裝的測試
7.7 C++在嵌入式係統中的應用
7.7.1 C++介紹
7.7.2 兼容C語言
7.7.3 在C++程序中調用C函數
7.7.4 麵嚮對象程序設計語言
7.7.5 泛型編程語言
7.7.6 STL編程
7.7.7 接口編程
第8章 USART通信
8.1 從51單片機到STM32的串口通信
8.2 USART通用串口通信設計
8.2.1 USART通用串口
8.2.2 USART通用串口通信設計方案
8.3 USART通用串口程序設計入門
8.3.1 USART數據發送程序設計
8.3.2 USART數據接收程序設計
8.4 中斷方式的數據接收
8.4.1 中斷方式的數據接收程序設計
8.4.2 多個串口驅動對象的協同工作
8.5 USART驅動程序的設計
8.5.1 USART驅動程序
8.5.2 printf與cout的實現
8.6 深入STM32 USART的工作原理
8.6.1 USART工作原理
8.6.2 發送器
8.6.3 接收器
8.6.4 USART初始化函數USART_Init
8.6.5 USART波特率的計算方法
第9章 STM32的工作原理
9.1 STM32啓動原理
9.1.1 STM32啓動過程分析
9.1.2 STM32軟件復位與功耗控製
9.2 係統時鍾分析
9.2.1 係統時鍾種類
9.2.2 STM32固件庫設置時鍾
9.2.3 係統時鍾配置
9.3 存儲器以及存儲器映射
9.4 NVIC嵌套中斷嚮量控製器
9.4.1 NVIC嵌套中斷嚮量控製器
9.4.2 STM32的NVIC優先級
9.5 STM32嚮量錶及配置
9.5.1 STM32復位後從哪個地址開始執行
9.5.2 STM32嚮量錶
9.5.3 用戶程序中的嚮量錶
第10章 定時器與日曆
10.1 SysTick定時器
10.1.1 關於SysTick
10.1.2 SysTick測試程序
10.1.3 SysTick程序分析
10.2 RTC定時器
10.2.1 RTC定時器介紹
10.2.2 RTC的本質與測試程序
10.2.3 日曆算法
10.2.4 STM32的RTC日曆測試程序
10.2.5 STM32 RTC程序分析
10.2.6 RTC秒中斷
10.2.7 RTC鬧鍾
10.2.8 RTC校準
10.3 通用定時器
10.3.1 STM32定時器的種類
10.3.2 通用定時器介紹
10.3.3 通用定時器基本應用程序設計
10.3.4 通用定時器常用模式
10.3.5 輸齣模式測試實例
10.3.6 輸入捕獲模式測試實例
第11章 ADC應用
11.1 ADC與數字信號處理係統設計
11.1.1 數字信號處理係統設計
11.1.2 STM32簡單的ADC應用實例
11.1.3 過采樣技術
11.1.4 欠采樣技術
11.2 STM32的ADC簡介
11.3 STM32 ADC入門實例
11.3.1 STM32 ADC入門測試程序
11.3.2 STM32 ADC程序分析
11.3.3 STM32內部溫度測量
11.4 STM32 ADC注入方式
11.4.1 STM32 ADC注入方式簡介
11.4.2 STM32雙ADC模式
11.4.3 STM32 ADC注入方式實例
第12章 DMA應用
12.1 STM32的DMA簡介
12.1.1 任務轉移策略
12.1.2 STM32的DMA功能
12.2 DMA在ADC中的應用
12.2.1 任務轉移策略的DMA ADC應用實例
12.2.2 DMA_ADC程序分析
12.3 DMA在USART中的應用
12.3.1 任務轉移策略的USART DMA數據發送
12.3.2 任務轉移策略的USART DMA數據接收
12.3.3 任務隊列策略的USART DMA發送中斷應用
12.3.4 任務循環策略的USART DMA接收中斷應用
第13章 備份寄存器與看門狗程序
13.1 STM32備份寄存器
13.1.1 備份寄存器特點
13.1.2 BKP應用實例
13.2 STM32看門狗
13.2.1 STM32看門狗介紹
13.2.2 獨立看門狗介紹
13.2.3 獨立看門狗程序設計
13.2.4 窗口看門狗介紹
13.2.5 窗口看門狗測試程序
第14章 TFT驅動與顯示
14.1 LCD概述
14.1.1 LCD簡介
14.1.2 LCD接口
14.2 Ili9xx係列TFT驅動芯片
14.3 TFT測試程序
14.3.1 TFT測試程序準備工作
14.3.2 TFT測試主程序
14.3.3 字符的顯示
14.4 基於FSMC的TFT驅動程序設計
14.4.1 STM32的FSMC功能
14.4.2 FSMC與TFT端口連接與端口映射
14.4.3 FSMC與TFT的內存空間映射與操作
14.4.4 FSMC初始化
14.4.5 TFT初始化
14.4.5 TFT驅動程序統一接口函數的實現
14.5 基於GPIO的TFT驅動程序設計
第15章 觸摸屏驅動
15.1 觸摸屏介紹
15.2 觸摸屏驅動IC
15.3 觸摸屏測試項目
15.4 觸摸屏驅動程序分析
15.5 觸摸屏校準
15.5.1 觸摸屏校準算法
15.5.2 觸摸屏校準的實現
第16章 SD卡驅動與FAT文件係統
16.1 STM32的SDIO接口
16.1.1 常見存儲卡種類
16.1.2 SD卡結構
16.1.3 STM32的SDIO接口
16.2 FAT文件係統
16.2.1 FAT文件係統概述
16.2.2 FatFs介紹
16.3 STM32 SDIO接口
16.4 SD卡文件讀寫實例
16.4.1 準備工作
16.4.2 SD卡文件讀寫實例
16.4.3 SD卡文件操作類CFile的設計
16.4.4 目錄操作
第17章 μC/OS-Ⅱ在STM32上的移植
17.1 μC/OS-Ⅱ概述
17.1.1 μC/OS-Ⅱ簡介
17.1.2 μC/OS-Ⅱ的組成部分
17.2 μC/OS-Ⅱ移植到STM
17.3 μC/OS-Ⅱ工作原理
17.3.1 μC/OS-Ⅱ啓動過程
17.3.2 任務切換的相關函數解析
第18章 漢字與圖形圖像顯示
18.1 漢字顯示
18.1.1 漢字庫
18.1.2 程序中加入漢字庫實現漢字顯示
18.1.3 使用SD卡上的漢字庫實現漢字顯示
18.2 圖形繪製
18.3 圖像顯示
18.3.1 位圖與bmp文件格式
18.3.2 bmp文件操作
18.3.3 bmp圖像顯示測試程序
第19章 攝像頭驅動與圖像采集
19.1 攝像頭接口
19.1.1 圖像傳感器
19.1.2 OV7670攝像頭
19.1.3 CMOS攝像頭接口
19.2 CMOS攝像頭測試程序
19.3 深入CMOS攝像頭驅動程序原理
19.3.1 SCCB協議
19.3.2 SCCB協議驅動程序設計
19.3.3 CMOS攝像頭驅動程序設計
第20章 以太網及Web遠程控製係統設計
20.1 ENC28J60以太網控製器
20.2 網絡測試程序
20.2.1 Web Server測試
20.2.2 UDP通信測試
20.3 IP/ICMP協議與Ping命令的實現
20.3.1 以太網數據包結構
20.3.2 IP協議
20.3.3 ICMP協議
20.3.4 Ping命令
20.3.5 Ping命令的實現
20.4 UDP通信原理
20.4.1 UDP協議
20.4.2 UDP通信的實現
20.5 Web Server程序設計
20.5.1 Web Server原理
20.5.2 TCP設計
20.5.3 Web Server設計
20.6 ENC28J60驅動程序設計
20.6.1 STM32 SPI接口
20.6.2 STM32 SPI驅動程序
20.6.3 ENC28J60驅動程序
參考文獻
前言/序言
在科研項目研究、産品開發、畢業設計以及電子競賽等活動中,經常遇到8位單片機速度、I/O口、內部RAM以及內部Flash不夠用等問題。隨著32位微控製器成本的降低,采用32位微控製器作為8位單片機係統的升級與更新換代已成為最佳選擇,特彆是內部帶Flash的低成本ARM微控製器的使用,以接近8位單片機的成本即可獲取更高性能。
目前許多IC廠商都推齣瞭內部帶Flash的低成本32位 ARM微控製器,例如ARM Cortex-M3係列微控製器。它具有兩個很重要的特點,一是低成本,二是高性能。在成本方麵,價格與8位/16位微控製器相差不多;內帶Flash,不需要外接ROM,簡化瞭設計,電路更簡潔。在高性能方麵,運算速度快,例如以Cortex-M3為內核的STM32F2係列微控製器,內核主頻高達120MHz,內部帶有硬件乘法器、硬件除法器、以太網控製器、支持USB 2.0接口等。由此可見,32位微控製器在性能上是8位、16位微控製器無法比擬的。
在代碼的大小方麵,ARM Cortex-M3微控製器提供優於8位和16位體係結構的代碼密度。在減少對內存的需求和最大限度地提高片上閃存的使用率方麵,都具有很大的優勢。
STM32F103微控製器構建於高性能的ARM Cortex-M3內核,工作頻率為72MHz,內置高速存儲器(最高可達1M字節的閃存和128K字節的SRAM),豐富的增強型I/O端口和連接到兩條APB總綫的外設。增強型器件都包含2~3個12位的ADC、4個通用16位定時器和2個PWM定時器。
成本低,該係列微控製器與常見的8位、16位單片機在價格上基本接近。既有32位單片機的性能,又與8位、16位單片機價格相當,可直接代替8位/16位單片機應用於一些小型控製係統中。
體積小,可把該應用係統的PCB麵積壓縮到最小,以便應用到小體積的産品中,例如智能繼電器、微型水位控製器、恒溫控製器等。
性能高,包含標準和先進的通信接口:5個USART接口、3個SPI接口、2個I2C接口、2個I2S接口、1個SDIO接口、一個USB接口和一個CAN接口。STM32F103是一個完整的係列,其成員之間引腳對引腳完全兼容,軟件和功能也兼容。
GCC編譯器是一套以GPL及LGPL許可證發行的開源、自由軟件。GCC編譯器是移植到中央微控製器架構以及操作係統最多的編譯器。由於GCC已成為GNU係統的官方編譯器(包括GNU/Linux),它也成為編譯與建立其他操作係統的主要編譯器,包括Linux係列、BSD係列、Mac OS X、NeXTSTEP與BeOS等。
GCC通常是跨平颱軟件首選的編譯器。有彆於一般局限於特定係統與執行環境的編譯器,GCC在所有平颱上都使用同一個前端處理程序,産生一樣的中間代碼,此中間代碼在各個不同的平颱上都一緻,並可輸齣正確無誤的最終代碼。
GCC功能強大、性能優越,並且開放源代碼,用戶可以免費使用,從而降低瞭開發成本。
Cortex-M3之STM32嵌入式係統設計 下載 mobi epub pdf txt 電子書 格式