本篇主要提供嵌入式系统基础与实践——基于ARMCortex-M3内核的STM微控制器计算机与互联网刘黎电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
商品基本信息,请以下列介绍为准 | |
商品名称: | 嵌入式系统基础与实践——基于ARM Cortex-M3内核的STM32微控制器 |
作者: | 刘黎明 |
定价: | 59.0 |
出版社: | 电子工业出版社 |
出版日期: | 2020-09-01 |
ISBN: | 9787121390890 |
印次: | 1 |
版次: | null |
装帧: | |
开本: | 26开 |
内容简介 | |
前 言 嵌入式系统是一门与行业应用紧密结合的交叉学科,是涉及计算机、电子、通信等技术领域的软/硬件综合体。随着微电子技术的飞速发展,嵌入式领域不断变化,各种微处理器架构(如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月 |
目录 | |
目 录 第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 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 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 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 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 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 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 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 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 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 0 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 1 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 2 383 参考文献 384 |