书籍详情
《嵌入式系统设计权威指南:基于STM32G071和Arm Cortex-M0+的系统集成》[58M]百度网盘|亲测有效|pdf下载
  • 嵌入式系统设计权威指南:基于STM32G071和Arm Cortex-M0+的系统集成

  • 出版社:电子工业出版社
  • 作者:何宾 著
  • 出版时间:2024-07-01
  • 热度:5345
  • 上架时间:2025-01-04 08:18:29
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

内容简介

本书以意法半导体公司新推出的基于Arm Cortex-M0+的STM32G071 MCU为硬件平台,以意法半导体公司的STM32CubeMX和Arm公司的Keil μVision(Arm版本)集成开发环境(以下简称Keil)为软件平台,以Cortex-M0+处理器结构、高级微控制总线结构、Cortex-M0+处理器指令集和应用、C语言应用开发、外设驱动与控制,以及RT-Thread操作系统为主线,由浅入深、由易到难地系统介绍了基于STM32G071 MCU的32位嵌入式系统开发流程和实现方法。 本书侧重于对基于Arm Cortex-M0+ MCU的32位嵌入式系统设计应用的讲解,通过典型设计实例说明将嵌入式系统设计应用于不同的应用场景的方法,使得所设计的嵌入式系统在满足应用场景要求的条件下实现成本、功耗和性能的最佳平衡。

作者简介

何宾,知名的嵌入式和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商密切合作。已经出版电子信息方面的著作共40余部,内容涵盖电路仿真、电路设计、FPGA、数字信号处理、单片机、嵌入式系统等。典型的代表作有《模拟电子系统设计指南(基础篇):从半导体、分立元件到TI集成电路的分析与实现》、《模拟电子系统设计指南(实践篇):从半导体、分立元件到TI集成电路的分析与实现》、《Xilinx Zynq-7000嵌入式系统设计与实现-基于ARM Cortex-A9双核处理器和Vivado的设计方法》、《Altium Designer17一体化设计标准教程-从仿真原理和PCB设计到单片机系统》、《STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用》等。

目录

目 录
第1章 软件工具的下载、安装和应用 1
1.1 STM32CubeMX工具的下载和安装 1
1.1.1 STM32CubeMX工具的下载 1
1.1.2 STM32CubeMX工具的安装 3
1.1.3 STM32G0系列MCU支持包的安装 4
1.2 Keil ?Vision(Arm版本)工具的下载、安装和授权 5
1.2.1 Keil ?Vision内嵌编译工具链架构 6
1.2.2 Keil ?Vision(Arm版本)工具的下载和安装 6
1.2.3 Keil ?Vision(Arm版本)工具的授权 9
1.3 设计 11
实例:LED的驱动和控制 11
1.3.1 生成简单的工程 11
1.3.2 添加设计代码 14
1.3.3 编译和下载设计 16
第2章 Cortex-M0+处理器结构 18
2.1 Cortex-M0+处理器和核心外设 18
2.1.1 Cortex-M0+处理器核 19
2.1.2 系统级接口 21
2.1.3 可配置的调试 21
2.1.4 核心外设 22
2.2 Cortex-M0+处理器的寄存器 22
2.2.1 通用寄存器 22
2.2.2 堆栈指针 23
2.2.3 程序计数器 23
2.2.4 链接寄存器 24
2.2.5 程序状态寄存器 24
2.2.6 可中断重启指令 27
2.2.7 异常屏蔽寄存器 27
2.2.8 优先级屏蔽寄存器 27
2.2.9 控制寄存器 27
2.3 Cortex-M0+处理器的存储空间结构 28
2.3.1 存储空间映射 28
2.3.2 代码区域地址映射 30
2.3.3 SRAM区域地址映射 31
2.3.4 外设区域地址映射 32
2.3.5 PPB地址空间映射 34
2.3.6 SCS地址空间映射 35
2.3.7 系统控制和ID寄存器 36
2.4 Cortex-M0+处理器的端及分配 40
2.5 Cortex-M0+处理器的异常及处理 41
2.5.1 异常所处的状态 41
2.5.2 异常类型 41
2.5.3 异常优先级 42
2.5.4 向量表 43
2.5.5 异常的进入和返回 44
2.5.6 NVIC中的中断寄存器集 46
2.5.7 电平和脉冲中断 48
2.6 Cortex-M0+处理器的存储器保护单元 49
2.6.1 MPU寄存器 50
2.6.2 MPU访问权限属性 54
2.6.3 更新MPU区域 55
2.6.4 子区域及用法 55
2.6.5 MPU设计技巧和提示 56
第3章 高级微控制器总线结构 57
3.1 Arm AMBA系统总线 57
3.2 AMBA APB规范 58
3.2.1 AMBA APB写传输 58
3.2.2 AMBA APB读传输 59
3.2.3 AMBA APB错误响应 60
3.2.4 AMBA APB操作流程 61
3.2.5 AMBA3 APB信号 62
3.3 AMBA AHB规范 62
3.3.1 AMBA AHB结构 62
3.3.2 AMBA AHB操作 63
3.3.3 AMBA AHB传输类型 66
3.3.4 AMBA AHB猝发操作 67
3.3.5 AMBA AHB传输控制信号 71
3.3.6 AMBA AHB地址译码 72
3.3.7 AMBA AHB从设备传输响应 72
3.3.8 AMBA AHB数据总线 75
3.3.9 AMBA AHB传输仲裁 77
3.3.10 AMBA AHB分割传输 82
3.3.11 AMBA AHB复位 84
3.3.12 AMBA AHB总线数据宽度 84
3.3.13 AMBA AHB接口设备 86
第4章 Cortex-M0+处理器指令集和应用 88
4.1 Thumb指令集 88
4.2 Keil MDK汇编语言指令格式要点 89
4.2.1 汇编语言源代码中的文字 89
4.2.2 汇编语言源代码行的语法 89
4.2.3 汇编语言指令后缀的含义 91
4.3 寄存器说明符的限制规则 91
4.3.1 使用0b1111作为寄存器说明符的规则 91
4.3.2 使用0b1101作为寄存器说明符的规则 92
4.4 寄存器传输指令 92
4.5 存储器加载和保存指令 94
4.5.1 存储器加载指令 94
4.5.2 存储器保存指令 98
4.6 多数据加载和保存指令 101
4.6.1 多数据加载指令 101
4.6.2 多数据保存指令 102
4.7 堆栈访问指令 103
4.8 算术运算指令 104
4.8.1 加法指令 104
4.8.2 减法指令 107
4.8.3 乘法指令 108
4.8.4 比较指令 109
4.9 逻辑操作指令 110
4.10 移位操作指令 112
4.10.1 右移指令 112
4.10.2 左移指令 114
4.11 反序操作指令 115
4.12 扩展操作指令 116
4.13 程序流控制指令 117
4.14 存储器屏障指令 120
4.15 异常相关指令 121
4.16 休眠相关指令 121
4.17 其他指令 122
4.18 STM32G0的向量表格式 123
4.19 配置堆和堆栈 124
4.20 设计实例一:汇编语言程序的分析和调试 125
4.20.1 冒泡排序算法的基本思想 125
4.20.2 冒泡排序算法的设计实现 126
4.20.3 冒泡排序算法的调试 128
4.21 设计实例二:GPIO的驱动和控制 130
4.21.1 STM32G071的GPIO原理 130
4.21.2 所用寄存器的地址和功能 132
4.21.3 GPIO驱动和控制的实现 134
4.22 设计实例三:中断的控制和实现 135
4.22.1 扩展中断和事件控制器(EXTI)原理 136
4.22.2 所用寄存器的地址和功能 141
4.22.3 向量表信息 145
4.22.4 应用程序的设计 147
4.22.5 程序代码的调试 149
第5章 Cortex-M0+ C语言应用开发 151
5.1 Arm C/C++编译器选项 151
5.1.1 Arm编译器的优化级别 151
5.1.2 Arm Compiler 5的参数设置选项 155
5.1.3 Arm Compiler 6的参数设置选项 157
5.2 CMSIS软件架构 159
5.2.1 引入CMSIS的必要性 160
5.2.2 CMSIS的架构 160
5.2.3 CMSIS的优势 161
5.2.4 CMSIS的编程规则 161
5.2.5 CMSIS软件包 162
5.2.6 使用CMSIS访问不同资源 163
5.3 C语言设计实例一:输入/输出重定向的实现 164
5.3.1 定制Microlib输入/输出函数 164
5.3.2 输入/输出函数重定向的实现原理 165
5.3.3 输入/输出函数重定向的具体实现 166
5.4 C语言设计实例二:1602字符型LCD的驱动 171
5.4.1 1602字符型LCD的原理 171
5.4.2 1602字符型LCD的处理流程 174
5.4.3 1602字符型LCD和开发板的硬件连接 175
5.4.4 程序代码的设计 176
5.5 C语言设计实例三:中断控制与1602字符型LCD的交互 178
5.5.1 程序代码的设计 178
5.5.2 C语言中断程序的分析 179
5.6 C语言设计实例四:软件驱动的设计与实现 181
5.6.1 创建HAL的设计实例 181
5.6.2 创建LL的设计实例 183
第6章 电源、时钟和复位的原理及应用 186
6.1 电源系统的原理及功能 186
6.1.1 电源系统框架 186
6.1.2 电源监控 188
6.1.3 低功耗模式 190
6.2 RCC中的时钟管理功能 194
6.2.1 RCC中的时钟源 194
6.2.2 RCC中的时钟树结构 194
6.3 RCC中的复位管理功能 199
6.3.1 电源复位 199
6.3.2 系统复位 199
6.3.3 RTC域复位 200
6.4 低功耗设计实例一:从停止模式唤醒MCU的实现 201
6.4.1 设计策略和实现目标 201
6.4.2 程序设计和实现 201
6.5 低功耗设计实例二:定时器唤醒功耗分析 206
6.6 低功耗设计实例三:运行模式和低功耗模式状态的显示 210
6.6.1 第一种设计实现方法 210
6.6.2 第二种设计实现方法 212
第7章 看门狗的原理和应用 214
7.1 独立看门狗的原理和功能 214
7.1.1 IWDG的结构 214
7.1.2 IWDG的工作原理 215
7.1.3 IWDG时钟基准和超时的设置 216
7.2 系统窗口看门狗的原理和功能 216
7.2.1 WWDG的结构 216
7.2.2 WWDG的工作原理 217
7.2.3 WWDG时钟基准和超时值的设置 217
7.2.4 WWDG中断 218
7.3 独立看门狗设计实例:实现与分析 218
7.3.1 生成工程框架 218
7.3.2 添加设计代码 220
7.3.3 设计下载和分析 222
第8章 步进电机的驱动和控制 223
8.1 低功耗定时器的结构及功能 223
8.1.1 LPTIM的结构 223
8.1.2 LPTIM的功能 228
8.2 高级控制定时器的结构及功能 229
8.2.1 TIM1的结构 229
8.2.2 TIM1的功能 230
8.3 设计实例:步进电机的驱动和信号测量 265
8.3.1 步进电机的设计原理 265
8.3.2 步进电机的驱动电路 266
8.3.3 霍尔传感器的测速原理 267
8.3.4 系统硬件连接 268
8.3.5 在STM32CubeMX中配置参数 268
8.3.6 在Keil ?Vision中添加设计代码 271
8.3.7 设计处理和验证 274
第9章 直流电机的驱动和控制 276
9.1 脉冲宽度调制的原理 276
9.2 直流风扇的驱动原理 276
9.2.1 直流风扇的规范和连线 276
9.2.2 PWM速度控制功能 277
9.2.3 脉冲传感器(转速输出类型) 278
9.3 通用定时器的原理 278
9.3.1 TIM2/TIM3/TIM4的主要功能 279
9.3.2 TIM14的主要功能 280
9.3.3 TIM15的主要功能 281
9.3.4 TIM16/TIM17的主要功能 282
9.4 直流风扇驱动和测速的设计与实现 283
9.4.1 系统设计策略 283
9.4.2 系统硬件连接 284
9.4.3 应用程序的设计 285
9.4.4 设计处理和下载 291
第10章 红外串口通信的设计和实现 292
10.1 低功耗通用异步收发器的原理 292
10.1.1 模块结构 292
10.1.2 接口信号 294
10.1.3 数据格式 294
10.1.4 FIFO模式 296
10.1.5 单线半双工模式 296
10.1.6 多处理器通信 296
10.1.7 发送器原理 298
10.1.8 接收器原理 298
10.1.9 波特率发生器 299
10.1.10 唤醒和中断事件 300
10.2 通用同步异步收发器的原理 301
10.2.1 主要功能 301
10.2.2 接收器过采样技术 302
10.2.3 同步模式 303
10.2.4 ISO/IEC 7816模式 304
10.2.5 串行红外通信 305
10.2.6 自动波特率检测 306
10.2.7 接收器超时 306
10.2.8 唤醒和中断事件 306
10.3 设计实例:基于LPUART和红外接口的串行通信的实现 307
10.3.1 红外串行通信设计思路 307
10.3.2 串口的通信参数配置规则 308
10.3.3 红外发射电路和红外接收电路的设计 309
10.3.4 红外接口的原理 311
10.3.5 信号的编码与解码 313
10.3.6 红外通信系统的抗干扰设计 313
10.3.7 发送端应用程序的设计与实现 314
10.3.8 接收端应用程序的设计与实现 319
第11章 音频设备的驱动和控制 325
11.1 外设串行接口概述 325
11.1.1 SPI模块的主要特性 325
11.1.2 I2S模块的主要特性 326
11.2 SPI模块的结构和功能 326
11.2.1 SPI模块的结构 326
11.2.2 一个主设备和一个从设备的通信 327
11.2.3 标准的多个从设备通信 329
11.2.4 多个主设备通信 330
11.2.5 从设备选择引脚管理 330
11.2.6 通信格式 331
11.2.7 配置SPI 332
11.2.8 使能SPI的步骤 333
11.2.9 数据发送和接收过程 333
11.2.10 SPI状态位 340
11.2.11 SPI错误标志 341
11.2.12 NSS脉冲模式 342
11.2.13 TI模式 342
11.2.14 CRC计算 343
11.2.15 SPI中断 344
11.3 I2S模块的结构和功能 345
11.3.1 I2S模块的结构 345
11.3.2 支持的音频标准 346
11.3.3 启动说明 349
11.3.4 I2S时钟生成器 350
11.3.5 I2S主模式 352
11.3.6 I2S从模式 353
11.3.7 I2S状态位 354
11.3.8 I2S错误标志 355
11.3.9 DMA功能 356
11.3.10 I2S中断 356
11.4 设计实例:I2S模块与音频设备的交互设计 356
11.4.1 数字音频接口 358
11.4.2 音频数据格式 358
11.4.3 音频模块硬件电路 359
11.4.4 在STM32CubeMX中配置参数 360
11.4.5 在Keil ?Vision中修改设计代码 362
11.4.6 设计处理和验证 365
第12章 实时时钟的原理和电子钟实现 366
12.1 实时时钟的原理及功能 366
12.1.1 RTC的功能和结构 366
12.1.2 RTC低功耗模式 377
12.1.3 RTC中断 377
12.2 I2C总线的原理及功能 377
12.2.1 I2C模块的结构 378
12.2.2 I2C可编程时序 381
12.2.3 I2C主设备时钟 382
12.2.4 从设备寻址模式 383
12.2.5 从停止模式唤醒 384
12.2.6 数据传输的处理 385
12.2.7 从模式 386
12.2.8 对SMBus的支持 387
12.2.9 中断和DMA 388
12.2.10 低功耗模式 389
12.3 OLED显示模块的原理 389
12.3.1 OLED的性能和参数 389
12.3.2 OLED模块的电路 390
12.3.3 I2C总线写数据 392
12.3.4 I2C的写模式 392
12.3.5 I2C的数据位传输 393
12.3.6 图形显示数据RAM 394
12.3.7 存储器寻址模式 395
12.3.8 OLED的初始化命令序列 396
12.4 电子钟的应用设计 397
12.4.1 在STM32CubeMX中配置参数 397
12.4.2 在Keil ?Vision中添加设计代码 401
12.4.3 设计下载和测试 414
第13章 直接存储器访问的原理和实现 416
13.1 DMA模块的原理 416
13.1.1 STM32G071 MCU系统结构 416
13.1.2 DMA模块的结构 417
13.1.3 DMA传输 417
13.1.4 DMA仲裁 418
13.1.5 DMA通道 418
13.1.6 DMA数据宽度、对齐和端 421
13.1.7 DMA中断 422
13.2 DMA请求多路选择器的原理 422
13.2.1 DMAMUX的结构 422
13.2.2 DMAMUX映射 424
13.2.3 DMAMUX通道 426
13.2.4 DMAMUX请求多路选择器 426
13.2.5 同步模式和通道事件生成 426
13.2.6 DMAMUX请求生成器 428
13.2.7 DMAMUX中断 429
13.3 设计实例:基于DMA的数据传输实现 429
13.3.1 在STM32CubeMX中配置参数 429
13.3.2 在Keil ?Vision中添加设计代码 432
13.3.3 设计下载和调试 434
第14章 信号采集和处理的实现 435
14.1 ADC结构和功能 435
14.1.1 ADC内部结构 435
14.1.2 低功耗模式 435
14.1.3 高性能特性 438
14.1.4 ADC转换速度 439
14.1.5 ADC时钟的选择 439
14.1.6 ADC输入与ADC的连接关系 440
14.1.7 ADC转换模式 440
14.1.8 模拟看门狗 441
14.1.9 数据传输和中断 442
14.2 温度传感器和内部参考电压 442
14.2.1 读取温度 443
14.2.2 使用内部参考电压计算实际VREF+ 444
14.3 电池电压的监控 444
14.4 设计实例一:模拟信号的采集与显示 444
14.4.1 在STM32CubeMX中配置参数 444
14.4.2 在Keil ?Vision中添加设计代码 448
14.4.3 设计下载和调试 452
14.5 DAC结构和功能 453
14.5.1 DAC内部结构 453
14.5.2 DAC通道使能 456
14.5.3 DAC数据格式 456
14.5.4 DAC转换 456
14.5.5 DAC电压 457
14.5.6 DAC触发选择 457
14.5.7 DMA请求 457
14.5.8 噪声生成 458
14.5.9 生成三角波 458
14.5.10 DAC通道模式 459
14.5.11 DAC通道缓冲区标定 461
14.5.12 双DAC通道转换模式(如果可用) 462
14.5.13 低功耗模式 466
14.6 基本定时器结构和功能 466
14.7 设计实例二:使用示波器上的X-Y模式显示不同的图形 467
14.7.1 设计目标和设计思路 467
14.7.2 在STM32CubeMX中配置参数 467
14.7.3 在Keil ?Vision中添加设计代码 471
14.7.4 设计下载和测试 480
第15章 嵌入式操作系统原理及应用 483
15.1 操作系统的必要性 483
15.1.1 单任务程序 483
15.1.2 轮询程序 483
15.2 操作系统基本知识 484
15.2.1 操作系统的作用 484
15.2.2 操作系统的功能 484
15.2.3 嵌入式操作系统 487
15.3 RT-Thread Nano架构及功能 489
15.4 RT-Thread Nano在Keil MDK的移植 490
15.4.1 安装RT-Thread Nano 490
15.4.2 添加RT-Thread Nano 491
15.4.3 适配RT-Thread Nano 493
15.4.4 修改设计代码 494
15.4.5 配置RT-Thread Nano 495
15.5 RT-Thread Nano内核分析与实现 497
15.5.1 线程及其管理 498
15.5.2 线程的创建及调度的实现 503
15.5.3 定时器的使用 509
15.5.4 互斥量的使用 511

相关推荐