本书以意法半导体公司新推出的基于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位嵌入式系统设计应用的讲解,通过典型设计实例说明将嵌入式系统设计应用于不同的应用场景的方法,使得所设计的嵌入式系统在满足应用场景要求的条件下实现成本、功耗和性能的*佳平衡。
售 价:¥
纸质售价:¥131.10购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
内容简介
前言
第1章 软件工具的下载、安装和应用
1.1 STM32CubeMX工具的下载和安装
1.1.1 STM32CubeMX工具的下载
1.1.2 STM32CubeMX工具的安装
1.1.3 STM32G0系列MCU支持包的安装
1.2 KeilμVision(Arm版本)工具的下载、安装和授权
1.2.1 KeilμVision内嵌编译工具链架构
1.2.2 KeilμVision(Arm版本)工具的下载和安装
1.2.3 KeilμVision(Arm版本)工具的授权
1.3 设计
实例:LED的驱动和控制
1.3.1 生成简单的工程
1.3.2 添加设计代码
1.3.3 编译和下载设计
第2章 Cor tex-M0+处理器结构
2.1 Cortex-M0+处理器和核心外设
2.1.1 Cortex-M0+处理器核
2.1.2 系统级接口
2.1.3 可配置的调试
2.1.4 核心外设
2.2 Cortex-M0+处理器的寄存器
2.2.1 通用寄存器
2.2.2 堆栈指针
2.2.3 程序计数器
2.2.4 链接寄存器
2.2.5 程序状态寄存器
2.2.6 可中断重启指令
2.2.7 异常屏蔽寄存器
2.2.8 优先级屏蔽寄存器
2.2.9 控制寄存器
2.3 Cortex-M0+处理器的存储空间结构
2.3.1 存储空间映射
2.3.2 代码区域地址映射
2.3.3 SRAM区域地址映射
2.3.4 外设区域地址映射
2.3.5 PPB地址空间映射
2.3.6 SCS地址空间映射
2.3.7 系统控制和ID寄存器
2.4 Cortex-M0+处理器的端及分配
2.5 Cortex-M0+处理器的异常及处理
2.5.1 异常所处的状态
2.5.2 异常类型
2.5.3 异常优先级
2.5.4 向量表
2.5.5 异常的进入和返回
2.5.6 NVIC中的中断寄存器集
2.5.7 电平和脉冲中断
2.6 Cortex-M0+处理器的存储器保护单元
2.6.1 MPU寄存器
2.6.2 MPU访问权限属性
2.6.3 更新MPU区域
2.6.4 子区域及用法
2.6.5 MPU设计技巧和提示
第3章 高级微控制器总线结构
3.1 Arm AMBA系统总线
3.2 AMBA APB规范
3.2.1 AMBA APB写传输
3.2.2 AMBA APB读传输
3.2.3 AMBA APB错误响应
3.2.4 AMBA APB操作流程
3.2.5 AMBA3 APB信号
3.3 AMBA AHB规范
3.3.1 AMBA AHB结构
3.3.2 AMBA AHB操作
3.3.3 AMBA AHB传输类型
3.3.4 AMBA AHB猝发操作
3.3.5 AMBA AHB传输控制信号
3.3.6 AMBA AHB地址译码
3.3.7 AMBA AHB从设备传输响应
3.3.8 AMBA AHB数据总线
3.3.9 AMBA AHB传输仲裁
3.3.10 AMBA AHB分割传输
3.3.11 AMBA AHB复位
3.3.12 AMBA AHB总线数据宽度
3.3.13 AMBA AHB接口设备
第4章 Cor tex-M0+处理器指令集和应用
4.1 T humb指令集
4.2 Keil MDK汇编语言指令格式要点
4.2.1 汇编语言源代码中的文字
4.2.2 汇编语言源代码行的语法
4.2.3 汇编语言指令后缀的含义
4.3 寄存器说明符的限制规则
4.3.1 使用0b1111作为寄存器说明符的规则
4.3.2 使用0b1101作为寄存器说明符的规则
4.4 寄存器传输指令
4.5 存储器加载和保存指令
4.5.1 存储器加载指令
4.5.2 存储器保存指令
4.6 多数据加载和保存指令
4.6.1 多数据加载指令
4.6.2 多数据保存指令
4.7 堆栈访问指令
4.8 算术运算指令
4.8.1 加法指令
4.8.2 减法指令
4.8.3 乘法指令
4.8.4 比较指令
4.9 逻辑操作指令
4.10 移位操作指令
4.10.1 右移指令
4.10.2 左移指令
4.11 反序操作指令
4.12 扩展操作指令
4.13 程序流控制指令
4.14 存储器屏障指令
4.15 异常相关指令
4.16 休眠相关指令
4.17 其他指令
4.18 STM32G0的向量表格式
4.19 配置堆和堆栈
4.20 设计实例一:汇编语言程序的分析和调试
4.20.1 冒泡排序算法的基本思想
4.20.2 冒泡排序算法的设计实现
4.20.3 冒泡排序算法的调试
4.21 设计实例二:GPIO的驱动和控制
4.21.1 STM32G071的GPIO原理
4.21.2 所用寄存器的地址和功能
4.21.3 GPIO驱动和控制的实现
4.22 设计实例三:中断的控制和实现
4.22.1 扩展中断和事件控制器(EXTI)原理
4.22.2 所用寄存器的地址和功能
4.22.3 向量表信息
4.22.4 应用程序的设计
4.22.5 程序代码的调试
第5章 Cor tex-M0+C语言应用开发
5.1 Arm C/C++编译器选项
5.1.1 Arm编译器的优化级别
5.1.2 Arm Compiler 5的参数设置选项
5.1.3 Arm Compiler 6的参数设置选项
5.2 CMSIS软件架构
5.2.1 引入CMSIS的必要性
5.2.2 CMSIS的架构
5.2.3 CMSIS的优势
5.2.4 CMSIS的编程规则
5.2.5 CMSIS软件包
5.2.6 使用CMSIS访问不同资源
5.3 C语言设计实例一:输入/输出重定向的实现
5.3.1 定制Microlib输入/输出函数
5.3.2 输入/输出函数重定向的实现原理
5.3.3 输入/输出函数重定向的具体实现
5.4 C语言设计实例二:1602字符型LCD的驱动
5.4.1 1602字符型LCD的原理
5.4.2 1602字符型LCD的处理流程
5.4.3 1602字符型LCD和开发板的硬件连接
5.4.4 程序代码的设计
5.5 C语言设计实例三:中断控制与1602字符型LCD的交互
5.5.1 程序代码的设计
5.5.2 C语言中断程序的分析
5.6 C语言设计实例四:软件驱动的设计与实现
5.6.1 创建HAL的设计实例
5.6.2 创建LL的设计实例
第6章 电源、时钟和复位的原理及应用
6.1 电源系统的原理及功能
6.1.1 电源系统框架
6.1.2 电源监控
6.1.3 低功耗模式
6.2 RCC中的时钟管理功能
6.2.1 RCC中的时钟源
6.2.2 RCC中的时钟树结构
6.3 RCC中的复位管理功能
6.3.1 电源复位
6.3.2 系统复位
6.3.3 RTC域复位
6.4 低功耗设计实例一:从停止模式唤醒MCU的实现
6.4.1 设计策略和实现目标
6.4.2 程序设计和实现
6.5 低功耗设计实例二:定时器唤醒功耗分析
6.6 低功耗设计实例三:运行模式和低功耗模式状态的显示
6.6.1 第一种设计实现方法
6.6.2 第二种设计实现方法
第7章 看门狗的原理和应用
7.1 独立看门狗的原理和功能
7.1.1 IWDG的结构
7.1.2 IWDG的工作原理
7.1.3 IWDG时钟基准和超时的设置
7.2 系统窗口看门狗的原理和功能
7.2.1 WWDG的结构
7.2.2 WWDG的工作原理
7.2.3 WWDG时钟基准和超时值的设置
7.2.4 WWDG中断
7.3 独立看门狗设计实例:实现与分析
7.3.1 生成工程框架
7.3.2 添加设计代码
7.3.3 设计下载和分析
第8章 步进电机的驱动和控制
8.1 低功耗定时器的结构及功能
8.1.1 LPTIM的结构
8.1.2 LPTIM的功能
8.2 高级控制定时器的结构及功能
8.2.1 TIM1的结构
8.2.2 TIM1的功能
8.3 设计实例:步进电机的驱动和信号测量
8.3.1 步进电机的设计原理
8.3.2 步进电机的驱动电路
8.3.3 霍尔传感器的测速原理
8.3.4 系统硬件连接
8.3.5 在STM32CubeMX中配置参数
8.3.6 在KeilμVision中添加设计代码
8.3.7 设计处理和验证
第9章 直流电机的驱动和控制
9.1 脉冲宽度调制的原理
9.2 直流风扇的驱动原理
9.2.1 直流风扇的规范和连线
9.2.2 PWM速度控制功能
9.2.3 脉冲传感器(转速输出类型)
9.3 通用定时器的原理
9.3.1 TIM2/TIM3/TIM4的主要功能
9.3.2 TIM14的主要功能
9.3.3 TIM15的主要功能
9.3.4 TIM16/TIM17的主要功能
9.4 直流风扇驱动和测速的设计与实现
9.4.1 系统设计策略
9.4.2 系统硬件连接
9.4.3 应用程序的设计
9.4.4 设计处理和下载
第10章 红外串口通信的设计和实现
10.1 低功耗通用异步收发器的原理
10.1.1 模块结构
10.1.2 接口信号
10.1.3 数据格式
10.1.4 FIFO模式
10.1.5 单线半双工模式
10.1.6 多处理器通信
10.1.7 发送器原理
10.1.8 接收器原理
10.1.9 波特率发生器
10.1.10 唤醒和中断事件
10.2 通用同步异步收发器的原理
10.2.1 主要功能
10.2.2 接收器过采样技术
10.2.3 同步模式
10.2.4 ISO/IEC 7816模式
10.2.5 串行红外通信
10.2.6 自动波特率检测
10.2.7 接收器超时
10.2.8 唤醒和中断事件
10.3 设计实例:基于LPUART和红外接口的串行通信的实现
10.3.1 红外串行通信设计思路
10.3.2 串口的通信参数配置规则
10.3.3 红外发射电路和红外接收电路的设计
10.3.4 红外接口的原理
10.3.5 信号的编码与解码
10.3.6 红外通信系统的抗干扰设计
10.3.7 发送端应用程序的设计与实现
10.3.8 接收端应用程序的设计与实现
第11章 音频设备的驱动和控制
11.1 外设串行接口概述
11.1.1 SPI模块的主要特性
11.1.2 I2S模块的主要特性
11.2 SPI模块的结构和功能
11.2.1 SPI模块的结构
11.2.2 一个主设备和一个从设备的通信
11.2.3 标准的多个从设备通信
11.2.4 多个主设备通信
11.2.5 从设备选择引脚管理
11.2.6 通信格式
11.2.7 配置SPI
11.2.8 使能SPI的步骤
11.2.9 数据发送和接收过程
11.2.10 SPI状态位
11.2.11 SPI错误标志
11.2.12 NSS脉冲模式
11.2.13 TI模式
11.2.14 CRC计算
11.2.15 SPI中断
11.3 I2S模块的结构和功能
11.3.1 I2S模块的结构
11.3.2 支持的音频标准
11.3.3 启动说明
11.3.4 I2S时钟生成器
11.3.5 I2S主模式
11.3.6 I2S从模式
11.3.7 I2S状态位
11.3.8 I2S错误标志
11.3.9 DMA功能
11.3.10 I2S中断
11.4 设计实例:I2S模块与音频设备的交互设计
11.4.1 数字音频接口
11.4.2 音频数据格式
11.4.3 音频模块硬件电路
11.4.4 在STM32CubeMX中配置参数
11.4.5 在KeilμVision中修改设计代码
11.4.6 设计处理和验证
第12章 实时时钟的原理和电子钟实现
12.1 实时时钟的原理及功能
12.1.1 RTC的功能和结构
12.1.2 RTC低功耗模式
12.1.3 RTC中断
12.2 I2C总线的原理及功能
12.2.1 I2C模块的结构
12.2.2 I2C可编程时序
12.2.3 I2C主设备时钟
12.2.4 从设备寻址模式
12.2.5 从停止模式唤醒
12.2.6 数据传输的处理
12.2.7 从模式
12.2.8 对SMBus的支持
12.2.9 中断和DMA
12.2.10 低功耗模式
12.3 OLED显示模块的原理
12.3.1 OLED的性能和参数
12.3.2 OLED模块的电路
12.3.3 I2C总线写数据
12.3.4 I2C的写模式
12.3.5 I2C的数据位传输
12.3.6 图形显示数据RAM
12.3.7 存储器寻址模式
12.3.8 OLED的初始化命令序列
12.4 电子钟的应用设计
12.4.1 在STM32CubeMX中配置参数
12.4.2 在KeilμVision中添加设计代码
12.4.3 设计下载和测试
第13章 直接存储器访问的原理和实现
13.1 DMA模块的原理
13.1.1 STM32G071 MCU系统结构
13.1.2 DMA模块的结构
13.1.3 DMA传输
13.1.4 DMA仲裁
13.1.5 DMA通道
13.1.6 DMA数据宽度、对齐和端
13.1.7 DMA中断
13.2 DMA请求多路选择器的原理
13.2.1 DMAMUX的结构
13.2.2 DMAMUX映射
13.2.3 DMAMUX通道
13.2.4 DMAMUX请求多路选择器
13.2.5 同步模式和通道事件生成
13.2.6 DMAMUX请求生成器
13.2.7 DMAMUX中断
13.3 设计实例:基于DMA的数据传输实现
13.3.1 在STM32CubeMX中配置参数
13.3.2 在KeilμVision中添加设计代码
13.3.3 设计下载和调试
第14章 信号采集和处理的实现
14.1 ADC结构和功能
14.1.1 ADC内部结构
14.1.2 低功耗模式
14.1.3 高性能特性
14.1.4 ADC转换速度
14.1.5 ADC时钟的选择
14.1.6 ADC输入与ADC的连接关系
14.1.7 ADC转换模式
14.1.8 模拟看门狗
14.1.9 数据传输和中断
14.2 温度传感器和内部参考电压
14.2.1 读取温度
14.2.2 使用内部参考电压计算实际VREF+
14.3 电池电压的监控
14.4 设计实例一:模拟信号的采集与显示
14.4.1 在STM32CubeMX中配置参数
14.4.2 在KeilμVision中添加设计代码
14.4.3 设计下载和调试
14.5 DAC结构和功能
14.5.1 DAC内部结构
14.5.2 DAC通道使能
14.5.3 DAC数据格式
14.5.4 DAC转换
14.5.5 DAC电压
14.5.6 DAC触发选择
14.5.7 DMA请求
14.5.8 噪声生成
14.5.9 生成三角波
14.5.10 DAC通道模式
14.5.11 DAC通道缓冲区标定
14.5.12 双DAC通道转换模式(如果可用)
14.5.13 低功耗模式
14.6 基本定时器结构和功能
14.7 设计实例二:使用示波器上的X-Y模式显示不同的图形
14.7.1 设计目标和设计思路
14.7.2 在STM32CubeMX中配置参数
14.7.3 在KeilμVision中添加设计代码
14.7.4 设计下载和测试
第15章 嵌入式操作系统原理及应用
15.1 操作系统的必要性
15.1.1 单任务程序
15.1.2 轮询程序
15.2 操作系统基本知识
15.2.1 操作系统的作用
15.2.2 操作系统的功能
15.2.3 嵌入式操作系统
15.3 RT-T hread Nano架构及功能
15.4 RT-T hread Nano在Keil MDK的移植
15.4.1 安装RT-T hread Nano
15.4.2 添加RT-T hread Nano
15.4.3 适配RT-T hread Nano
15.4.4 修改设计代码
15.4.5 配置RT-T hread Nano
15.5 RT-T hread Nano内核分析与实现
15.5.1 线程及其管理
15.5.2 线程的创建及调度的实现
15.5.3 定时器的使用
15.5.4 互斥量的使用
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜