Cortex-M3 之 STM32 嵌入式系統設計
內容描述
<內容簡介>
廖義奎編著的《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遠程控制系統設計等內容。 《Cortex-M3之STM32嵌入式系統設計》配套光盤中附有所有章節的源程序。本書適合於嵌入式開發人員作為開發參考資料,也適合於高校師生作為單片機、嵌入式系統課程的教材和教學參考書。
<目錄>
前言第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驅動程序參考文獻