华信教育资源网
嵌入式系统基础与实践——基于ARM Cortex-M3内核的STM32微控制器
作   译   者:刘黎明、王建波、赵纲领 出 版 日 期:2020-06-29
出   版   社:电子工业出版社 维   护   人:孟宇 
书   代   号:G0390890 I S B N:9787121390890

图书简介:

本书以嵌入式系统的基本概念和原理为主线,针对基于ARM Cortex-M3内核的STM32微控制器,依循模块化设计思想,针对STM32的五大外设模块(GPIO、EXTI、USART、DMA和ADC),分别采用基于标准外设库和基于HAL库的设计...
定价 59.0

关注公众号

关注微博

您的专属联系人更多
联系人:刘瑀
电话:010-88254115
邮箱:liuy01@phei.com.cn
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源
  • 图 书 内 容

    图书详情

    ISBN:9787121390890

    开 本:16开

    印 张:24.75

    版 次:

    页 数:396

    字 数:634

    内容简介

    本书以嵌入式系统的基本概念和原理为主线,针对基于ARM Cortex-M3内核的STM32微控制器,依循模块化设计思想,针对STM32的五大外设模块(GPIO、EXTI、USART、DMA和ADC),分别采用基于标准外设库和基于HAL库的设计方法进行了详细阐述,并从初学者的角度出发,详细讲解了从模块到项目的开发过程,最后基于μC/OS-Ⅲ嵌入式操作系统讲述了嵌入式操作系统基本原理及开发思路。 本书可以作为高等院校电子信息工程、自动化、通信工程、电气自动化等专业的嵌入式系统基础教材或参考书,也可作为嵌入式系统应用开发人员的参考资料。

    本书目录

    第1章  嵌入式系统概述 1
    1.1  信息技术的发展 1
    1.1.1  计算机的诞生 1
    1.1.2  通用信息处理 2
    1.1.3  人工智能 3
    1.2  嵌入式系统 5
    1.2.1  嵌入式系统案例分析 6
    1.2.2  嵌入式系统概念 9
    1.2.3  嵌入式系统与物联网 10
    1.3  嵌入式初学者杂谈 11
    1.3.1  MCU、MPU、ARM、FPGA、DSP概念 11
    1.3.2  MCU开发与ARM-Linux开发的区别 15
    1.3.3  开源硬件Arduino和树莓派 16
    1.4  嵌入式系统开发流程 17
    1.4.1  系统需求分析 17
    1.4.2  系统总体设计 18
    1.4.3  系统软/硬件设计 20
    1.4.4  系统软/硬件测试 21
    习题1 21
    第2章  ARM Cortex-M3内核与STM32微控制器 22
    2.1  嵌入式系统基础知识 22
    2.1.1  冯·诺依曼结构与哈佛结构 22
    2.1.2  ARM存储模式 24
    2.1.3  CISC和RISC 25
    2.1.4  流水线技术 27
    2.2  ARM 29
    2.2.1  ARM介绍 29
    2.2.2  ARM体系结构 30
    2.3  ARM Cortex-M3内核 33
    2.3.1  内核架构 34
    2.3.2  寄存器 37
    2.3.3  存储结构 39
    2.3.4  中断与异常(NVIC) 40
    2.4  STM32微控制器结构 42
    2.4.1  STM32系统结构 42
    2.4.2  STM32总线结构 43
    2.4.3  STM32存储结构 44
    2.4.4  STM32中断 46
    2.4.5  STM32时钟系统 48
    习题2 49
    第3章  STM32微控制器及开发环境搭建 50
    3.1  STM32介绍 50
    3.2  STM32微控制器开发模式 55
    3.2.1  寄存器开发模式 56
    3.2.2  标准外设库开发模式 57
    3.2.3  HAL库开发模式 58
    3.3  开发平台的搭建 60
    3.3.1  嵌入式开发环境 60
    3.3.2  集成开发环境Keil 62
    3.3.3  下载和安装Packs包 63
    3.4  基于标准外设库开发平台搭建 66
    3.4.1  STM32标准外设库文件结构 66
    3.4.2  基于标准外设库新建工程模板 73
    3.5  基于HAL库开发平台的搭建 87
    3.5.1  Java运行环境的安装 87
    3.5.2  安装STM32CubeMX软件 87
    3.5.3  STM32CubeF1库文件结构 89
    3.5.4  STM32CubeMX生成的工程架构解析 90
    习题3 96
    第4章  STM32最小系统与嵌入式C语言 98
    4.1  STM32最小系统 98
    4.1.1  电源电路 98
    4.1.2  时钟电路 100
    4.1.3  复位电路 101
    4.1.4  调试和下载电路 102
    4.2  嵌入式C语言 104
    4.2.1  STM32的数据类型 105
    4.2.2  const关键字 108
    4.2.3  static关键字 108
    4.2.4  volatile关键字 110
    4.2.5  extern关键字 110
    4.2.6  struct结构体 112
    4.2.7  enum 113
    4.2.8  typedef 114
    4.2.9  #define 115
    4.2.10  #ifdef、#ifndef、#else、#if条件编译 117
    4.2.11  指针 119
    4.2.12  回调函数 125
    4.3  HAL库文件源代码分析 126
    4.3.1  stm32f1xx.h 126
    4.3.2  stm32f103xe.h 131
    4.3.3  stm32f1xx_hal.c和stm32f1xx_hal.h 135
    4.3.4  stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 138
    习题4 140
    第5章  通用输入/输出 141
    5.1  GPIO概述 141
    5.2  STM32的GPIO工作原理 142
    5.2.1  STM32F103引脚图 143
    5.2.2  GPIO内部结构 144
    5.2.3  GPIO工作模式 145
    5.2.4  GPIO输出速度 148
    5.3  GPIO标准外设库接口函数及应用 148
    5.3.1  GPIO标准外设库接口函数 148
    5.3.2  GPIO标准外设库应用实例 151
    5.3.3  基于标准外设库开发的一般流程 154
    5.4  GPIO的HAL库接口函数及应用 156
    5.4.1  GPIO的HAL库接口函数 156
    5.4.2  GPIO的HAL库应用实例 161
    5.4.3  基于HAL库开发的一般流程 175
    5.5  编程思想之模块化编程 176
    习题5 179
    第6章  中断 180
    6.1  中断的相关概念 180
    6.1.1  什么是中断? 180
    6.1.2  为什么使用中断? 181
    6.1.3  中断处理流程 181
    6.2  STM32中断和异常 183
    6.2.1  STM32中断和异常向量表 183
    6.2.2  STM32中断优先级 188
    6.2.3  STM32中断服务程序 190
    6.3  STM32外部中断EXTI 191
    6.4  EXTI标准外设库接口函数及应用 194
    6.4.1  EXTI标准外设库接口函数 194
    6.4.2  EXTI标准外设库中断配置步骤 196
    6.4.3  EXTI标准外设库应用实例 197
    6.5  EXTI的HAL库接口函数及应用 201
    6.5.1  EXTI的HAL库接口函数 201
    6.5.2  EXTI的HAL库应用实例 202
    习题6 208
    第7章  串口通信 209
    7.1  通信概述 209
    7.2  异步串行通信 212
    7.2.1  异步串行通信协议 212
    7.2.2  异步串行通信接口 213
    7.3  STM32的USART模块 215
    7.3.1  USART内部结构 215
    7.3.2  USART接口 218
    7.3.3  USART编程模式 219
    7.4  USART标准外设库接口函数及应用 220
    7.4.1  USART标准外设库接口函数 220
    7.4.2  USART串口应用编程步骤 225
    7.4.3  USART标准外设库应用实例 226
    7.5  USART的HAL库接口函数及应用 232
    7.5.1  UART的HAL库接口函数 232
    7.5.2  USART的HAL库应用实例 236
    7.5.3  USART应用实例拓展 241
    7.6  编程思想之自定义串口通信协议 243
    习题7 246
    第8章  DMA 247
    8.1  DMA基础理论知识 247
    8.2  STM32的DMA模块 248
    8.2.1  STM32的DMA内部结构 248
    8.2.2  DMA优先权 250
    8.2.3  DMA中断请求 250
    8.3  DMA标准外设库接口函数及应用 252
    8.3.1  DMA标准外设库接口函数 252
    8.3.2  DMA标准外设库的配置过程 254
    8.3.3  DMA标准外设库函数的应用实例 255
    8.4  DMA的HAL库接口函数及应用 259
    8.4.1  DMA的HAL库接口函数 259
    8.4.2  DMA的HAL库应用实例 261
    习题8 266
    第9章  定时器 267
    9.1  STM32定时器 268
    9.1.1  STM32通用定时器 269
    9.1.2  STM32基本定时器 272
    9.1.3  STM32高级定时器 273
    9.2  定时器标准外设库接口函数及应用 273
    9.2.1  定时器标准外设库接口函数 273
    9.2.2  定时器标准外设库配置过程 275
    9.2.3  定时器标准外设库应用实例 277
    9.3  PWM 279
    9.3.1  STM32定时器PWM的工作原理 280
    9.3.2  PWM标准外设库输出配置过程 281
    9.3.3  PWM标准外设库的应用实例 283
    9.4  SysTick定时器 285
    9.4.1  SysTick标准外设库函数 285
    9.4.2  SysTick定时器的应用实例 287
    9.5  定时器HAL库接口函数及应用 289
    9.5.1  定时器HAL库接口函数 289
    9.5.2  定时器HAL库应用实例 294
    9.6  编程思想之状态机设计思想 300
    习题9 303
    第10章  ADC 304
    10.1  ADC基础理论知识 304
    10.1.1  A/D转换过程 304
    10.1.2  A/D转换的主要技术参数 305
    10.2  STM32的ADC 306
    10.2.1  ADC的引脚 306
    10.2.2  ADC通道选择 308
    10.2.3  ADC中断和DMA请求 309
    10.2.4  ADC转换时间 310
    10.2.5  ADC数据对齐 310
    10.2.6  ADC的转换模式 311
    10.2.7  ADC校准 311
    10.3  ADC标准外设库接口函数及应用 312
    10.3.1  ADC标准外设库接口函数 312
    10.3.2  ADC标准外设库配置过程 315
    10.3.3  ADC标准外设库的应用实例 317
    10.4  ADC的HAL库接口函数及应用 321
    10.4.1  ADC的HAL库接口函数 321
    10.4.2  ADC的HAL库应用实例 323
    习题10 331
    第11章  从模块到项目 332
    11.1  从模块到项目的开发思路 332
    11.1.1  项目需求分析 332
    11.1.2  系统总体架构设计 333
    11.1.3  系统软/硬件设计 335
    11.2  项目实践 336
    11.2.1  项目需求分析 337
    11.2.2  系统总体架构设计 338
    11.2.3  系统硬件设计 339
    11.2.4  系统软件设计 341
    11.3  面向对象的编程思想 343
    习题11 344
    第12章  嵌入式操作系统 345
    12.1  概述 345
    12.1.1  嵌入式系统的开发方式 345
    12.1.2  计算机系统的分层设计思想 347
    12.2  嵌入式操作系统的概念 349
    12.2.1 计算机操作系统 349
    12.2.2  嵌入式操作系统 351
    12.2.3  嵌入式操作系统的分类 351
    12.3  嵌入式实时操作系统 352
    12.3.1  μC/OS-Ⅲ的任务 352
    12.3.2  μC/OS-Ⅲ时钟和中断 361
    12.3.3  μC/OS-Ⅲ任务间通信与同步 365
    12.4  μC/OS-Ⅲ移植与应用 366
    12.4.1  μC/OS-Ⅲ源代码下载 367
    12.4.2  μC/OS-Ⅲ移植 369
    12.4.3  μC/OS-Ⅲ多任务应用实例 379
    习题12 383
    参考文献 384

    展开

    前     言

    嵌入式系统是一门与行业应用紧密结合的交叉学科,是涉及计算机、电子、通信等技术领域的软/硬件综合体。随着微电子技术的飞速发展,嵌入式领域不断变化,各种微处理器架构(如MCS-51架构、MIPS架构、PowerPC架构、ARM架构等)、芯片及开发工具层出不穷,这种百花齐放的局面给嵌入式开发者的学习和开发带来了一定的难度。
    嵌入式系统内核架构种类繁多,随着用户对产品功能多元化的追求,对更低功耗、更人性化的人机交互界面以及多任务等需求的增加,传统的基于MCS-51架构的8位51单片机,无论是处理能力还是存储能力都已无法满足此类复杂的应用。ARM公司针对通用MCU(微控制器)领域成功推出了32位ARM Cortex-M系列内核,而各大半导体厂商(如NXP、TI、ST、Atmel等)纷纷基于该内核针对不同的应用领域开发出了各具特色的MCU。采用标准化内核一方面降低了半导体芯片厂商在芯片架构上的研发难度,缩短了产品推向市场的时间;另一方面,由于采用同样的ARM内核,为了实现产品的差异化,使得各大半导体厂商将研发重点放在了外设接口、功耗、存储器资源等方面,针对各自优势应用领域推出系列化的产品。从嵌入式开发者的角度来看,这种方式降低了嵌入式开发人员学习和掌握MCU应用开发的难度。学习者只需要针对通用的内核就某种MCU深入研究,掌握其精髓,就能融会贯通。采用统一的标准化内核设计和生产MCU产品已成为嵌入式MCU发展的趋势。
    不仅如此,ARM公司还与各大半导体厂商深度合作,在与芯片相关的开发工具和软件解决方案上形成了一条良好的、完整的生态产业链/生态系统,为嵌入式开发人员不仅提供了一系列高效、易用的开发工具(如Keil、IAR等),而且提供了丰富的资源(如OS、固件库、应用例程等),在提高开发效率、降低开发成本、缩短开发周期等关键环节具有明显的优势,如ST公司针对ARM Cortex-M内核开发的STM32系列产品,为STM32的开发提供了各种固件库,如标准外设库、HAL库、LL库等,这些位于嵌入式组成结构中间层的库文件屏蔽了复杂的寄存器开发,使得嵌入式开发人员通过调用API函数的方式就能迅速地搭建系统原型。目前,基于库的开发方式已成为嵌入式系统开发的主流模式。
    嵌入式系统知识繁杂,本着从易到难、从单一模块到系统各模块融合的学习方式,本书以基于ARM Cortex-M3内核的32位嵌入式微控制器STM32作为入门引导,对理论进行精简讲授,以动手实践为主,力图使内容紧贴社会需求,技术贴合行业市场发展。
    本书定位为初学者入门书籍,只针对简单常用的外设(如GPIO、USART、TIM、ADC等)进行讲解,并给出完整的具体应用范例,力图使初学者能够从整体框架(角度)掌握基本外设的应用开发流程,而非陷入复杂的应用编程细节中,更多编程细节可以随着实际开发实践不断进行扩充与积累。
    本书从结构上分为以下4部分。
    第一部分为第1章嵌入式系统概述,主要讲述嵌入式系统的概念、嵌入式行业基础知识(如MCU、DSP、FGPA)的区别与联系、嵌入式与物联网和人工智能的联系,以及嵌入式系统的开发流程等。
    第二部分由第2章、第3章和第4章组成,主要讲述ARM体系结构与ARM Cortex-M3内核,基于ARM Cortex-M3内核的STM32F103系列微控制器内部架构(如总线结构、存储结构)等,分析STM32微控制器三种开发模式(寄存器开发模式、标准外设库开发模式、HAL库开发模式),详细讲解基于标准外设库和HAL库开发平台的搭建,同时对嵌入式开发中经常用到的嵌入式C语言相关内容进行了补充。
    第三部分包含第5~11章。其中,第5~10章按模块对嵌入式开发中常用的外设进行阐述,分别以具体的应用实例按步骤一一讲解,提供了基于标准外设库和HAL库两种开发案例,这部分内容对理论知识进行了精简,重点介绍与工程开发有关的技能实践。第11章简单介绍融合多个模块实现具体项目的思路与方法,紧贴工程实践。
    第四部分为第12章嵌入式操作系统,主要介绍嵌入式操作系统的工作原理,以简单的应用实例为嵌入式初学者提供基于嵌入式操作系统的应用程序开发思路。
    对STM32初学者来说,可以有选择性地学习本书内容。最后,给嵌入式初学者几点建议,在学习过程中,应重视第一手资料的获取,即从官方网站下载的芯片文档(Reference Manual、Datasheet等),这些文档是很好的参考资料;嵌入式系统是一门技术实践课程,所以动手实践是学习的重要方式;另外,多与同行交流是快速学习的捷径。
    由于作者水平有限,书中难免存在错误或不妥之处,恳请读者批评指正。


       作者   
    2020年3月

    展开

    作者简介

    本书暂无作者简介
  • 样 章 试 读
    本书暂无样章试读!
  • 图 书 评 价我要评论
华信教育资源网