
《Cortex-M3之STM32嵌入式系统设计》 作 者:廖义奎 编著 / s! |0 S0 k% r L. ]& q 出 版 社:中国电力出版社5 o; K0 H: U2 v: N7 y2 @ 出版时间:2012-4-1 ![]() 内容简介 《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远程控制系统设计等内容。 4 l1 \& K% Y+ O0 }7 v目录 4 o2 c) A9 v; `& r8 ]+ W4 L前言 " e+ w! P/ K# y, o) v+ k4 m$ r5 q第1章 概述 1.1 嵌入式系统定义 1.2 嵌入式系统的发展 1.2.1 从单片机到嵌入式系统 1.2.2 从芯片级设计到系统级设计 1.2.3 从面向器件到面向任务的设计 1.2.4 从单处理器设计到多处理器设计 % n) y9 R% d8 e" t& `1.3 嵌入式系统的应用 / S. C; i$ A$ c l$ A8 N; v& m# T2 \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 . i+ P- b8 V2 f5 e) X" `8 u- l8 L第2章 STM32最小系统设计 ( x6 v r( q& k! `9 E# U2.1 STM32F103C最小系统设计方案 ( i4 U' D$ u; T' S2.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图设计 7 K# D6 r+ X( Q- ]$ O第3章 STM32程序设计入门 1 Z3 E2 R+ | I) y; `. X3.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程序 ) p T% `4 Z4 ]+ Z C# J3 Q) {% ?" I3.2 不同开发板的Hello World程序 1 ~+ E& a9 x W' E3 F3.3 基于STM32固件库的入门程序 3.3.1 STM32固件库 3.3.2 STM32固件库外设的初始化和设置 3.3.3 基于STM32固件库的程序设计 3.4 基于STM32固件库的Hello World程序代码分析 # N+ o7 p* \/ E* Z& z* Z第4章 GPIO应用 4.1 认识STM32 GPIO 4.1.1 GPIO功能特点 4.1.2 STM32 IO口的优点 4.1.3 STM32固件库中提供的GPIO库函数 2 }, _+ w5 T b& Z4.2 KEY_LED程序 4.2.1 创建stm32_C++KEY_LED项目 4.2.2 stm32_C++KEY_LED项目程序分析 ' T) @8 H; p, K' ~6 g6 H+ w8 E* @4.3 低层代码分析 4.3.1 GPIO端口的定义 4.3.2 AHB/APB桥的配置 4.3.3 GPIO引脚的配置 4.3.4 GPIO的读写 x$ e' J' N) s( s/ E, @1 p9 b- Q8 ~9 \. N5 {+ P, B 第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文件函数 1 s$ N1 O) ^' m+ w# t2 z& W5.5 GCC编译器LD脚本 5.5.1 C/C++程序内存空间 5.5.2 GCC LD脚本基础 5.5.3 STM32程序中的LD脚本程序 ' {6 I7 n7 ~1 c& Y t7 E1 N第6章 STM32外部中断 " i4 h/ {1 s8 y+ f: Z6.1 STM32外部中断 6 J6 k0 K6 `# L6 P6.2 STM32外部中断实例 6.3 STM32中断配置 6.3.1 STM32外部中断程序分析 6.3.2 中断通道配置 6.3.3 中断优先级配置 6.3.4 外部中断模式配置 6.3.5 外部中断响应函数配置 ) l9 L' ?4 h$ C* [ c4 S6 q第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 权限 " e( |* s- e4 m, X3 s# V7.5 继承 7.5.1 CGpio类的继承 7.5.2 测试CLed和CKey类 , ?, j: O/ g0 B+ _" J- {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 接口编程 . j* K& B- [# r9 Z& X5 O: C8 I第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数据接收程序设计 7 o; f* `0 ^4 b) G8.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波特率的计算方法 - B' Q8 B5 O# R' n第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 系统时钟配置 / O9 a) S1 O# }" l9.3 存储器以及存储器映射 / J2 w$ S6 ~& {! @! `: ?# K4 a8 _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 用户程序中的向量表 # s% s5 i9 h2 k U- p" c. c第10章 定时器与日历 # M9 u: f, u: P. z) i10.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校准 ( x% a3 _# f/ z10.3 通用定时器 10.3.1 STM32定时器的种类 10.3.2 通用定时器介绍 10.3.3 通用定时器基本应用程序设计 10.3.4 通用定时器常用模式 10.3.5 输出模式测试实例 10.3.6 输入捕获模式测试实例 , j3 r4 Q2 K T R& ?第11章 ADC应用 11.1 ADC与数字信号处理系统设计 11.1.1 数字信号处理系统设计 11.1.2 STM32简单的ADC应用实例 11.1.3 过采样技术 11.1.4 欠采样技术 11.2 STM32的ADC简介 9 C1 e9 x, `# A- h0 X' ~11.3 STM32 ADC入门实例 11.3.1 STM32 ADC入门测试程序 11.3.2 STM32 ADC程序分析 11.3.3 STM32内部温度测量 - M, s' |$ P& x; w6 v& i ~! |11.4 STM32 ADC注入方式 11.4.1 STM32 ADC注入方式简介 11.4.2 STM32双ADC模式 11.4.3 STM32 ADC注入方式实例 3 c! w) {1 K0 L& D3 ~2 `5 N8 r 第12章 DMA应用 4 }$ j* g) z8 i! u) F) b/ K2 n. e/ Q; I12.1 STM32的DMA简介 12.1.1 任务转移策略 12.1.2 STM32的DMA功能 . x9 P5 D; c0 x+ K12.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接收中断应用 / }2 j* {* g5 V' W' [第13章 备份寄存器与看门狗程序 9 ?) u% Y2 p6 v3 }9 [13.1 STM32备份寄存器 13.1.1 备份寄存器特点 13.1.2 BKP应用实例 . o! j$ ]; }8 y( r: ]' }13.2 STM32看门狗 13.2.1 STM32看门狗介绍 13.2.2 独立看门狗介绍 13.2.3 独立看门狗程序设计 13.2.4 窗口看门狗介绍 13.2.5 窗口看门狗测试程序 k+ g; h; D' \& h第14章 TFT驱动与显示 14.1 LCD概述 14.1.1 LCD简介 14.1.2 LCD接口 % d7 b8 _7 ~, x% J) V% c14.2 Ili9xx系列TFT驱动芯片 - u6 I O( j& h) [7 S; h14.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.6 TFT驱动程序统一接口函数的实现 . u. O2 p8 F; `% s g2 N14.5 基于GPIO的TFT驱动程序设计 第15章 触摸屏驱动 15.1 触摸屏介绍 15.2 触摸屏驱动IC 2 F3 f. B) `# f# M15.3 触摸屏测试项目 15.4 触摸屏驱动程序分析 + Y4 f: {1 U4 U6 ]9 T3 x3 R4 `15.5 触摸屏校准 15.5.1 触摸屏校准算法 15.5.2 触摸屏校准的实现 9 n( d- h7 c/ l- P5 {/ g& d) i第16章 SD卡驱动与FAT文件系统 16.1 STM32的SDIO接口 16.1.1 常见存储卡种类 16.1.2 SD卡结构 16.1.3 STM32的SDIO接口 ) B8 o& E4 W, N, H/ h1 ~16.2 FAT文件系统 16.2.1 FAT文件系统概述 16.2.2 FatFs介绍 : g3 ~; e/ W. Z$ A2 x16.3 STM32 SDIO接口 16.4 SD卡文件读写实例 16.4.1 准备工作 16.4.2 SD卡文件读写实例 16.4.3 SD卡文件操作类CFile的设计 , }7 O5 M0 M) X16.4.4 目录操作 3 }# \. G: t( y7 L1 W第17章 μC/OS-Ⅱ在STM32上的移植 / ? I% `+ {% k0 t+ c! b17.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 任务切换的相关函数解析 8 c. d. ^2 Y7 f& f! a+ R% N" m7 @% ^1 f' ~8 l4 }6 M 第18章 汉字与图形图像显示 2 M% ]# Y4 u% o18.1 汉字显示 18.1.1 汉字库 18.1.2 程序中加入汉字库实现汉字显示 18.1.3 使用SD卡上的汉字库实现汉字显示 * n# d7 F7 K- Y18.2 图形绘制 18.3 图像显示 18.3.1 位图与bmp文件格式 18.3.2 bmp文件操作 18.3.3 bmp图像显示测试程序 / \6 S' p' o/ k, D* Z+ S |第19章 摄像头驱动与图像采集 # z+ U2 V Y6 m2 a7 \19.1 摄像头接口 19.1.1 图像传感器 19.1.2 OV7670摄像头 19.1.3 CMOS摄像头接口 19.2 CMOS摄像头测试程序 % M9 A+ E3 h4 I* V; W5 g19.3 深入CMOS摄像头驱动程序原理 19.3.1 SCCB协议 19.3.2 SCCB协议驱动程序设计 19.3.3 CMOS摄像头驱动程序设计 # U1 \& V* c' s5 f* Q8 q# a 第20章 以太网及Web远程控制系统设计 7 d6 u) Q% v, _6 @1 t20.1 ENC28J60以太网控制器 6 d) O+ d4 C7 ^. D20.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命令的实现 $ o1 R5 k" b6 g( D* ]9 U2 i6 G20.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驱动程序 参考文献 |
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
回复:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
回复:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
回复:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
回复:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》
RE:STM32图书分享之四—《Cortex-M3之STM32嵌入式系统设计》