请输入您要查询的百科知识:

 

词条 Cortex-M3之STM32嵌入式系统设计
释义

基本信息

作者:廖义奎

出版社:中国电力出版社

ISBN:9787512326712

出版日期:2012 年4月

开本:16开

页码:432

版次:1-1

内容简介

《cortex-m3之stm32嵌入式系统设计》介绍了以arm cortex-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嵌入式系统设计》配套光盘中附有所有章节的源程序。本书适合于嵌入式开发人员作为开发参考资料,也适合于高校师生作为单片机、嵌入式系统课程的教材和教学参考书。

目录

《cortex-m3之stm32嵌入式系统设计》

前言

第1章 概述 1

1.1 嵌入式系统定义 1

1.2 嵌入式系统的发展 1

1.2.1 从单片机到嵌入式系统 1

1.2.2 从芯片级设计到系统级设计 2

1.2.3 从面向器件到面向任务的设计 2

1.2.4 从单处理器设计到多处理器设计 2

1.3 嵌入式系统的应用 3

1.4 arm系列嵌入式系统处理器 4

1.4.1 arm处理器分类 4

1.4.2 arm cortex处理器 5

1.4.3 arm coretx-m3处理器 6

1.4.4 arm cortex-a8处理器 7

1.5 从8/16位处理器到arm cortex-m3/m0 7

1.6 常见的cortex-m0/m3系列mcu 9

第2章 stm32最小系统设计 14

2.1 stm32f103c最小系统设计方案 14

2.2 最小系统设计的要素 16

.2.2.1 stm32外部晶振 16

2.2.2 复位电路 18

2.2.3 led、key及boot跳线 19

2.2.4 稳压电源及isp下载口 20

2.2.5 io端口 23

2.3 pcb图设计 24

第3章 stm32程序设计入门 26

3.1 stm32入门之hello world程序 26

3.1.1 开发环境 26

3.1.2 编写stm32的c程序 27

3.1.3 用gcc编译stm32程序 29

3.1.4 stm32程序下载 30

3.1.5 在obtain_studio中编译hello world程序 32

3.2 不同开发板的hello world程序 32

3.3 基于stm32固件库的入门程序 33

3.3.1 stm32固件库 33

3.3.2 stm32固件库外设的初始化和设置 35

3.3.3 基于stm32固件库的程序设计 36

3.4 基于stm32固件库的hello world程序代码分析 37

第4章 gpio应用 40

4.1 认识stm32 gpio 40

4.1.1 gpio功能特点 40

4.1.2 stm32 io口的优点 41

4.1.3 stm32固件库中提供的gpio库函数 42

4.2 key_led程序 43

4.2.1 创建stm32_c++key_led项目 43

4.2.2 stm32_c++key_led项目程序分析 44

4.3 低层代码分析 47

4.3.1 gpio端口的定义 47

4.3.2 ahb/apb桥的配置 49

4.3.3 gpio引脚的配置 50

4.3.4 gpio的读写 53

第5章 gcc编译器的安装与应用 54

5.1 gcc介绍 54

5.1.1 gcc概述 54

5.1.2 mingw简介 54

5.1.3 mingw的安装 55

5.1.4 mingw测试 56

5.1.5 常见gcc用法 58

5.2 arm gcc编译器 61

5.2.1 winarm编译器 61

5.2.2 sourcery g++ lite for arm eabi编译器 62

5.3 obtain_studio集成开发系统 64

5.3.1 obtain_studio集成开发系统介绍 64

5.3.2 obtain_studio集成开发系统常用技巧 67

5.4 gcc make编译文件设计 69

5.4.1 gcc make常用命令 69

5.4.2 makefile文件规则 71

5.4.3 makefile文件函数 75

5.5 gcc编译器ld脚本 79

5.5.1 c/c++程序内存空间 79

5.5.2 gcc ld脚本基础 82

5.5.3 stm32程序中的ld脚本程序 86

第6章 stm32外部中断 89

6.1 stm32外部中断 89

6.2 stm32外部中断实例 90

6.3 stm32中断配置 92

6.3.1 stm32外部中断程序分析 92

6.3.2 中断通道配置 94

6.3.3 中断优先级配置 94

6.3.4 外部中断模式配置 94

6.3.5 外部中断响应函数配置 97

第7章 面向对象程序设计 99

7.1 程序风格 99

7.1.1 程序风格的比较 99

7.1.2 编程风格在程序设计中的作用 100

7.2 跨越开发板 100

7.2.1 端口映射的方法 100

7.2.2 模式设置的方法 101

7.3 分类与封装 101

7.3.1 什么是分类与封装 101

7.3.2 封装的实现 102

7.4 隐藏与权限 103

7.4.1 隐藏 103

7.4.2 权限 103

7.5 继承 104

7.5.1 cgpio类的继承 104

7.5.2 测试cled和ckey类 104

7.6 组装 105

7.6.1 gpio的组装 105

7.6.2 gpio组装的测试 106

7.7 c++在嵌入式系统中的应用 108

7.7.1 c++介绍 108

7.7.2 兼容c语言 108

7.7.3 在c++程序中调用c函数 110

7.7.4 面向对象程序设计语言 110

7.7.5 泛型编程语言 111

7.7.6 stl编程 113

7.7.7 接口编程 114

第8章 usart通信 121

8.1 从51单片机到stm32的串口通信 121

8.2 usart通用串口通信设计 124

8.2.1 usart通用串口 124

8.2.2 usart通用串口通信设计方案 125

8.3 usart通用串口程序设计入门 125

8.3.1 usart数据发送程序设计 125

8.3.2 usart数据接收程序设计 126

8.4 中断方式的数据接收 127

8.4.1 中断方式的数据接收程序设计 127

8.4.2 多个串口驱动对象的协同工作 128

8.5 usart驱动程序的设计 129

8.5.1 usart驱动程序 129

8.5.2 printf与cout的实现 133

8.6 深入stm32 usart的工作原理 136

8.6.1 usart工作原理 136

8.6.2 发送器 137

8.6.3 接收器 139

8.6.4 usart初始化函数usart_init 141

8.6.5 usart波特率的计算方法 142

第9章 stm32的工作原理 144

9.1 stm32启动原理 144

9.1.1 stm32启动过程分析 144

9.1.2 stm32软件复位与功耗控制 145

9.2 系统时钟分析 147

9.2.1 系统时钟种类 147

9.2.2 stm32固件库设置时钟 149

9.2.3 系统时钟配置 150

9.3 存储器以及存储器映射 160

9.4 nvic嵌套中断向量控制器 162

9.4.1 nvic嵌套中断向量控制器 162

9.4.2 stm32的nvic优先级 166

9.5 stm32向量表及配置 170

9.5.1 stm32复位后从哪个地址开始执行 170

9.5.2 stm32向量表 170

9.5.3 用户程序中的向量表 171

第10章 定时器与日历 179

10.1 systick定时器 179

10.1.1 关于systick 179

10.1.2 systick测试程序 180

10.1.3 systick程序分析 181

10.2 rtc定时器 184

10.2.1 rtc定时器介绍 184

10.2.2 rtc的本质与测试程序 186

10.2.3 日历算法 187

10.2.4 stm32的rtc日历测试程序 190

10.2.5 stm32 rtc程序分析 191

10.2.6 rtc秒中断 193

10.2.7 rtc闹钟 195

10.2.8 rtc校准 197

10.3 通用定时器 198

10.3.1 stm32定时器的种类 198

10.3.2 通用定时器介绍 200

10.3.3 通用定时器基本应用程序设计 200

10.3.4 通用定时器常用模式 203

10.3.5 输出模式测试实例 205

10.3.6 输入捕获模式测试实例 206

第11章 adc应用 209

11.1 adc与数字信号处理系统设计 209

11.1.1 数字信号处理系统设计 209

11.1.2 stm32简单的adc应用实例 212

11.1.3 过采样技术 213

11.1.4 欠采样技术 215

11.2 stm32的adc简介 216

11.3 stm32 adc入门实例 220

11.3.1 stm32 adc入门测试程序 220

11.3.2 stm32 adc程序分析 221

11.3.3 stm32内部温度测量 228

11.4 stm32 adc注入方式 229

11.4.1 stm32 adc注入方式简介 229

11.4.2 stm32双adc模式 230

11.4.3 stm32 adc注入方式实例 230

第12章 dma应用 235

12.1 stm32的dma简介 235

12.1.1 任务转移策略 235

12.1.2 stm32的dma功能 236

12.2 dma在adc中的应用 238

12.2.1 任务转移策略的dma adc应用实例 238

12.2.2 dma_adc程序分析 240

12.3 dma在usart中的应用 245

12.3.1 任务转移策略的usart dma数据发送 245

12.3.2 任务转移策略的usart dma数据接收 248

12.3.3 任务队列策略的usart dma发送中断应用 251

12.3.4 任务循环策略的usart dma接收中断应用 254

第13章 备份寄存器与看门狗程序 258

13.1 stm32备份寄存器 258

13.1.1 备份寄存器特点 258

13.1.2 bkp应用实例 259

13.2 stm32看门狗 261

13.2.1 stm32看门狗介绍 261

13.2.2 独立看门狗介绍 262

13.2.3 独立看门狗程序设计 263

13.2.4 窗口看门狗介绍 265

13.2.5 窗口看门狗测试程序 267

第14章 tft驱动与显示 269

14.1 lcd概述 269

14.1.1 lcd简介 269

14.1.2 lcd接口 270

14.2 ili9xx系列tft驱动芯片 271

14.3 tft测试程序 275

14.3.1 tft测试程序准备工作 275

14.3.2 tft测试主程序 275

14.3.3 字符的显示 277

14.4 基于fsmc的tft驱动程序设计 279

14.4.1 stm32的fsmc功能 279

14.4.2 fsmc与tft端口连接与端口映射 279

14.4.3 fsmc与tft的内存空间映射与操作 281

14.4.4 fsmc初始化 282

14.4.5 tft初始化 287

14.4.5 tft驱动程序统一接口函数的实现 290

14.5 基于gpio的tft驱动程序设计 292

第15章 触摸屏驱动 297

15.1 触摸屏介绍 297

15.2 触摸屏驱动ic 300

15.3 触摸屏测试项目 302

15.4 触摸屏驱动程序分析 303

15.5 触摸屏校准 311

15.5.1 触摸屏校准算法 311

15.5.2 触摸屏校准的实现 312

第16章 sd卡驱动与fat文件系统 316

16.1 stm32的sdio接口 316

16.1.1 常见存储卡种类 316

16.1.2 sd卡结构 317

16.1.3 stm32的sdio接口 318

16.2 fat文件系统 320

16.2.1 fat文件系统概述 320

16.2.2 fatfs介绍 321

16.3 stm32 sdio接口 324

16.4 sd卡文件读写实例 326

16.4.1 准备工作 326

16.4.2 sd卡文件读写实例 327

16.4.3 sd卡文件操作类cfile的设计 328

16.4.4 目录操作 329

第17章 μc/os-Ⅱ在stm32上的移植 331

17.1 μc/os-Ⅱ概述 331

17.1.1 μc/os-Ⅱ简介 331

17.1.2 μc/os-Ⅱ的组成部分 331

17.2 μc/os-Ⅱ移植到stm32 332

17.3 μc/os-Ⅱ工作原理 337

17.3.1 μc/os-Ⅱ启动过程 337

17.3.2 任务切换的相关函数解析 338

第18章 汉字与图形图像显示 343

18.1 汉字显示 343

18.1.1 汉字库 343

18.1.2 程序中加入汉字库实现汉字显示 345

18.1.3 使用sd卡上的汉字库实现汉字显示 346

18.2 图形绘制 350

18.3 图像显示 353

18.3.1 位图与bmp文件格式 353

18.3.2 bmp文件操作 356

18.3.3 bmp图像显示测试程序 359

第19章 摄像头驱动与图像采集 362

19.1 摄像头接口 362

19.1.1 图像传感器 362

19.1.2 ov7670摄像头 362

19.1.3 cmos摄像头接口 364

19.2 cmos摄像头测试程序 366

19.3 深入cmos摄像头驱动程序原理 368

19.3.1 sccb协议 368

19.3.2 sccb协议驱动程序设计 370

19.3.3 cmos摄像头驱动程序设计 373

第20章 以太网及web远程控制系统设计 378

20.1 enc28j60以太网控制器 378

20.2 网络测试程序 382

20.2.1 web server测试 382

20.2.2 udp通信测试 385

20.3 ip/icmp协议与ping命令的实现 386

20.3.1 以太网数据包结构 386

20.3.2 ip协议 387

20.3.3 icmp协议 389

20.3.4 ping命令 392

20.3.5 ping命令的实现 393

20.4 udp通信原理 393

20.4.1 udp协议 393

20.4.2 udp通信的实现 394

20.5 web server程序设计 399

20.5.1 web server原理 399

20.5.2 tcp设计 402

20.5.3 web server设计 403

20.6 enc28j60驱动程序设计 405

20.6.1 stm32 spi接口 405

20.6.2 stm32 spi驱动程序 407

20.6.3 enc28j60驱动程序 409

参考文献 417

前言

在科研项目研究、产品开发、毕业设计以及电子竞赛等活动中,经常遇到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功能强大、性能优越,并且开放源代码,用户可以免费使用,从而降低了开发成本。

读者对象

本书的读者需要具有一定的C/C++、单片机以及电子线路设计基础,适合于从事ARM嵌入式开发的工程开发人员、STM32的初学者作为参考资料,更适合于从事8位、16位MCU开发,而又迫切需要跨越到32位MCU平台的工程开发人员。也适合于高校师生作为课程设计、毕业设计以及电子设计竞赛的培训和指导教材,以及作为本、专科单片机、嵌入式系统相关课程的教材。

光盘使用

本书ARM程序的编译环境都是GCC, Obtain_Studio集成开发环境(IDE)软件已带有GCC,并自动配置GCC的运行环境,因此可以在Obtain_Studio中直接编译本书的程序。

配套光盘中包括了所有章节的程序代码,读者可以直接拷贝下来使用,并仿照这些程序源代码去快速开发新的应用程序。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/1 22:55:44