网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 嵌入式系统设计权威指南:基于STM32G071和Arm Cortex-M0+的系 |
分类 | 科学技术-工业科技-电子通讯 |
作者 | 何宾 |
出版社 | 电子工业出版社 |
下载 | ![]() |
简介 | 内容推荐 本书以意法半导体公司新推出的基于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位嵌入式系统设计应用的讲解,通过典型设计实例说明将嵌入式系统设计应用于不同的应用场景的方法,使得所设计的嵌入式系统在满足应用场景要求的条件下实现成本、功耗和性能的很好平衡。 目录 目 录 第1章 软件工具的下载、安装和应用\t1 1.1 STM32CubeMX工具的下载和安装\t1 1.1.1 STM32CubeMX工具的下载\t1 1.1.2 STM32CubeMX工具的安装\t3 1.1.3 STM32G0系列MCU支持包的安装\t4 1.2 Keil ?Vision(Arm版本)工具的下载、安装和授权\t5 1.2.1 Keil ?Vision内嵌编译工具链架构\t6 1.2.2 Keil ?Vision(Arm版本)工具的下载和安装\t6 1.2.3 Keil ?Vision(Arm版本)工具的授权\t9 1.3 设计\t11 实例:LED的驱动和控制\t11 1.3.1 生成简单的工程\t11 1.3.2 添加设计代码\t14 1.3.3 编译和下载设计\t16 第2章 Cortex-M0+处理器结构\t18 2.1 Cortex-M0+处理器和核心外设\t18 2.1.1 Cortex-M0+处理器核\t19 2.1.2 系统级接口\t21 2.1.3 可配置的调试\t21 2.1.4 核心外设\t22 2.2 Cortex-M0+处理器的寄存器\t22 2.2.1 通用寄存器\t22 2.2.2 堆栈指针\t23 2.2.3 程序计数器\t23 2.2.4 链接寄存器\t24 2.2.5 程序状态寄存器\t24 2.2.6 可中断重启指令\t27 2.2.7 异常屏蔽寄存器\t27 2.2.8 优先级屏蔽寄存器\t27 2.2.9 控制寄存器\t27 2.3 Cortex-M0+处理器的存储空间结构\t28 2.3.1 存储空间映射\t28 2.3.2 代码区域地址映射\t30 2.3.3 SRAM区域地址映射\t31 2.3.4 外设区域地址映射\t32 2.3.5 PPB地址空间映射\t34 2.3.6 SCS地址空间映射\t35 2.3.7 系统控制和ID寄存器\t36 2.4 Cortex-M0+处理器的端及分配\t40 2.5 Cortex-M0+处理器的异常及处理\t41 2.5.1 异常所处的状态\t41 2.5.2 异常类型\t41 2.5.3 异常优先级\t42 2.5.4 向量表\t43 2.5.5 异常的进入和返回\t44 2.5.6 NVIC中的中断寄存器集\t46 2.5.7 电平和脉冲中断\t48 2.6 Cortex-M0+处理器的存储器保护单元\t49 2.6.1 MPU寄存器\t50 2.6.2 MPU访问权限属性\t54 2.6.3 更新MPU区域\t55 2.6.4 子区域及用法\t55 2.6.5 MPU设计技巧和提示\t56 第3章 高级微控制器总线结构\t57 3.1 Arm AMBA系统总线\t57 3.2 AMBA APB规范\t58 3.2.1 AMBA APB写传输\t58 3.2.2 AMBA APB读传输\t59 3.2.3 AMBA APB错误响应\t60 3.2.4 AMBA APB操作流程\t61 3.2.5 AMBA3 APB信号\t62 3.3 AMBA AHB规范\t62 3.3.1 AMBA AHB结构\t62 3.3.2 AMBA AHB操作\t63 3.3.3 AMBA AHB传输类型\t66 3.3.4 AMBA AHB猝发操作\t67 3.3.5 AMBA AHB传输控制信号\t71 3.3.6 AMBA AHB地址译码\t72 3.3.7 AMBA AHB从设备传输响应\t72 3.3.8 AMBA AHB数据总线\t75 3.3.9 AMBA AHB传输仲裁\t77 3.3.10 AMBA AHB分割传输\t82 3.3.11 AMBA AHB复位\t84 3.3.12 AMBA AHB总线数据宽度\t84 3.3.13 AMBA AHB接口设备\t86 第4章 Cortex-M0+处理器指令集和应用\t88 4.1 Thumb指令集\t88 4.2 Keil MDK汇编语言指令格式要点\t89 4.2.1 汇编语言源代码中的文字\t89 4.2.2 汇编语言源代码行的语法\t89 4.2.3 汇编语言指令后缀的含义\t91 4.3 寄存器说明符的规则\t91 4.3.1 使用0b1111作为寄存器说明符的规则\t91 4.3.2 使用0b1101作为寄存器说明符的规则\t92 4.4 寄存器传输指令\t92 4.5 存储器加载和保存指令\t94 4.5.1 存储器加载指令\t94 4.5.2 存储器保存指令\t98 4.6 多数据加载和保存指令\t101 4.6.1 多数据加载指令\t101 4.6.2 多数据保存指令\t102 4.7 堆栈访问指令\t103 4.8 算术运算指令\t104 4.8.1 加法指令\t104 4.8.2 减法指令\t107 4.8.3 乘法指令\t108 4.8.4 比较指令\t109 4.9 逻辑操作指令\t110 4.10 移位操作指令\t112 4.10.1 右移指令\t112 4.10.2 左移指令\t114 4.11 反序操作指令\t115 4.12 扩展操作指令\t116 4.13 程序流控制指令\t117 4.14 存储器屏障指令\t120 4.15 异常相关指令\t121 4.16 休眠相关指令\t121 4.17 其他指令\t122 4.18 STM32G0的向量表格式\t123 4.19 配置堆和堆栈\t124 4.20 设计实例一:汇编语言程序的分析和调试\t125 4.20.1 冒泡排序算法的基本思想\t125 4.20.2 冒泡排序算法的设计实现\t126 4.20.3 冒泡排序算法的调试\t128 4.21 设计实例二:GPIO的驱动和控制\t130 4.21.1 STM32G071的GPIO原理\t130 4.21.2 所用寄存器的地址和功能\t132 4.21.3 GPIO驱动和控制的实现\t134 4.22 设计实例三:中断的控制和实现\t135 4.22.1 扩展中断和事件控制器(EXTI)原理\t136 4.22.2 所用寄存器的地址和功能\t141 4.22.3 向量表信息\t145 4.22.4 应用程序的设计\t147 4.22.5 程序代码的调试\t149 第5章 Cortex-M0+ C语言应用开发\t151 5.1 Arm C/C++编译器选项\t151 5.1.1 Arm编译器的优化级别\t151 5.1.2 Arm Compiler 5的参数设置选项\t155 5.1.3 Arm Compiler 6的参数设置选项\t157 5.2 CMSIS软件架构\t159 5.2.1 引入CMSIS的必要性\t160 5.2.2 CMSIS的架构\t160 5.2.3 CMSIS的优势\t161 5.2.4 CMSIS的编程规则\t161 5.2.5 CMSIS软件包\t162 5.2.6 使用CMSIS访问不同资源\t163 5.3 C语言设计实例一:输入/输出重定向的实现\t164 5.3.1 定制Microlib输入/输出函数\t164 5.3.2 输入/输出函数重定向的实现原理\t165 5.3.3 输入/输出函数重定向的具体实现\t166 5.4 C语言设计实例二:1602字符型LCD的驱动\t171 5.4.1 1602字符型LCD的原理\t171 5.4.2 1602字符型LCD的处理流程\t174 5.4.3 1602字符型LCD和开发板的硬件连接\t175 5.4.4 程序代码的设计\t176 5.5 C语言设计实例三:中断控制与1602字符型LCD的交互\t178 5.5.1 程序代码的设计\t178 5.5.2 C语言中断程序的分析\t179 5.6 C语言设计实例四:软件驱动的设计与实现\t181 5.6.1 创建HAL的设计实例\t181 5.6.2 创建LL的设计实例\t183 第6章 电源、时钟和复位的原理及应用\t186 6.1 电源系统的原理及功能\t186 6.1.1 电源系统框架\t186 6.1.2 电源监控\t188 6.1.3 低功耗模式\t190 6.2 RCC中的时钟管理功能\t194 6.2.1 RCC中的时钟源\t194 6.2.2 RCC中的时钟树结构\t194 6.3 RCC中的复位管理功能\t199 6.3.1 电源复位\t199 6.3.2 系统复位\t199 6.3.3 RTC域复位\t200 6.4 低功耗设计实例一:从停止模式唤醒MCU的实现\t201 6.4.1 设计策略和实现目标\t201 6.4.2 程序设计和实现\t201 6.5 低功耗设计实例二:定时器唤醒功耗分析\t206 6.6 低功耗设计实例三:运行模式和低功耗模式状态的显示\t210 6.6.1 第一种设计实现方法\t210 6.6.2 第二种设计实现方法\t212 第7章 看门狗的原理和应用\t214 7.1 独立看门狗的原理和功能\t214 7.1.1 IWDG的结构\t214 7.1.2 IWDG的工作原理\t215 7.1.3 IWDG时钟基准和超时的设置\t216 7.2 系统窗口看门狗的原理和功能\t216 7.2.1 WWDG的结构\t216 7.2.2 WWDG的工作原理\t217 7.2.3 WWDG时钟基准和超时值的设置\t217 7.2.4 WWDG中断\t218 7.3 独立看门狗设计实例:实现与分析\t218 7.3.1 生成工程框架\t218 7.3.2 添加设计代码\t220 7.3.3 设计下载和分析\t222 第8章 步进电机的驱动和控制\t223 8.1 低功耗定时器的结构及功能\t223 8.1.1 LPTIM的结构\t223 8.1.2 LPTIM的功能\t228 8.2 高级控制定时器的结构及功能\t229 8.2.1 TIM1的结构\t229 8.2.2 TIM1的功能\t230 8.3 设计实例:步进电机的驱动和信号测量\t265 8.3.1 步进电机的设计原理\t265 8.3.2 步进电机的驱动电路\t266 8.3.3 霍尔传感器的测速原理\t267 8.3.4 系统硬件连接\t268 8.3.5 在STM32CubeMX中配置参数\t268 8.3.6 在Keil ?Vision中添加设计代码\t271 8.3.7 设计处理和验证\t274 第9章 直流电机的驱动和控制\t276 9.1 脉冲宽度调制的原理\t276 9.2 直流风扇的驱动原理\t276 9.2.1 直流风扇的规范和连线\t276 9.2.2 PWM速度控制功能\t277 9.2.3 脉冲传感器(转速输出类型)\t278 9.3 通用定时器的原理\t278 9.3.1 TIM2/TIM3/TIM4的主要功能\t279 9.3.2 TIM14的主要功能\t280 9.3.3 TIM15的主要功能\t281 9.3.4 TIM16/TIM17的主要功能\t282 9.4 直流风扇驱动和测速的设计与实现\t283 9.4.1 系统设计策略\t283 9.4.2 系统硬件连接\t284 9.4.3 应用程序的设计\t285 9.4.4 设计处理和下载\t291 第10章 红外串口通信的设计和实现\t292 10.1 低功耗通用异步收发器的原理\t292 10.1.1 模块结构\t292 10.1.2 接口信号\t294 10.1.3 数据格式\t294 10.1.4 FIFO模式\t296 10.1.5 单线半双工模式\t296 10.1.6 多处理器通信\t296 10.1.7 发送器原理\t298 10.1.8 接收器原理\t298 10.1.9 波特率发生器\t299 10.1.10 唤醒和中断事件\t300 10.2 通用同步异步收发器的原理\t301 10.2.1 主要功能\t301 10.2.2 接收器过采样技术\t302 10.2.3 同步模式\t303 10.2.4 ISO/IEC 7816模式\t304 10.2.5 串行红外通信\t305 10.2.6 自动波特率检测\t306 10.2.7 接收器超时\t306 10.2.8 唤醒和中断事件\t306 10.3 设计实例:基于LPUART和红外接口的串行通信的实现\t307 10.3.1 红外串行通信设计思路\t307 10.3.2 串口的通信参数配置规则\t308 10.3.3 红外发射电路和红外接收电路的设计\t309 10.3.4 红外接口的原理\t311 10.3.5 信号的编码与解码\t313 10.3.6 红外通信系统的抗干扰设计\t313 10.3.7 发送端应用程序的设计与实现\t314 10.3.8 接收端应用程序的设计与实现\t319 第11章 音频设备的驱动和控制\t325 11.1 外设串行接口概述\t325 11.1.1 SPI模块的主要特性\t325 11.1.2 I2S模块的主要特性\t326 11.2 SPI模块的结构和功能\t326 11.2.1 SPI模块的结构\t326 11.2.2 一个主设备和一个从设备的通信\t327 11.2.3 标准的多个从设备通信\t329 11.2.4 多个主设备通信\t330 11.2.5 从设备选择引脚管理\t330 11.2.6 通信格式\t331 11.2.7 配置SPI\t332 11.2.8 使能SPI的步骤\t333 11.2.9 数据发送和接收过程\t333 11.2.10 SPI状态位\t340 11.2.11 SPI错误标志\t341 11.2.12 NSS脉冲模式\t342 11.2.13 TI模式\t342 11.2.14 CRC计算\t343 11.2.15 SPI中断\t344 11.3 I2S模块的结构和功能\t345 11.3.1 I2S模块的结构\t345 11.3.2 支持的音频标准\t346 11.3.3 启动说明\t349 11.3.4 I2S时钟生成器\t350 11.3.5 I2S主模式\t352 11.3.6 I2S从模式\t353 11.3.7 I2S状态位\t354 11.3.8 I2S错误标志\t355 11.3.9 DMA功能\t356 11.3.10 I2S中断\t356 11.4 设计实例:I2S模块与音频设备的交互设计\t356 11.4.1 数字音频接口\t358 11.4.2 音频数据格式\t358 11.4.3 音频模块硬件电路\t359 11.4.4 在STM32CubeMX中配置参数\t360 11.4.5 在Keil ?Vision中修改设计代码\t362 11.4.6 设计处理和验证\t365 第12章 实时时钟的原理和电子钟实现\t366 12.1 实时时钟的原理及功能\t366 12.1.1 RTC的功能和结构\t366 12.1.2 RTC低功耗模式\t377 12.1.3 RTC中断\t377 12.2 I2C总线的原理及功能\t377 12.2.1 I2C模块的结构\t378 12.2.2 I2C可编程时序\t381 12.2.3 I2C主设备时钟\t382 12.2.4 从设备寻址模式\t383 12.2.5 从停止模式唤醒\t384 12.2.6 数据传输的处理\t385 12.2.7 从模式\t386 12.2.8 对SMBus的支持\t387 12.2.9 中断和DMA\t388 12.2.10 低功耗模式\t389 12.3 OLED显示模块的原理\t389 12.3.1 OLED的性能和参数\t389 12.3.2 OLED模块的电路\t390 12.3.3 I2C总线写数据\t392 12.3.4 I2C的写模式\t392 12.3.5 I2C的数据位传输\t393 12.3.6 图形显示数据RAM\t394 12.3.7 存储器寻址模式\t395 12.3.8 OLED的初始化命令序列\t396 12.4 电子钟的应用设计\t397 12.4.1 在STM32CubeMX中配置参数\t397 12.4.2 在Keil ?Vision中添加设计代码\t401 12.4.3 设计下载和测试\t414 第13章 直接存储器访问的原理和实现\t416 13.1 DMA模块的原理\t416 13.1.1 STM32G071 MCU系统结构\t416 13.1.2 DMA模块的结构\t417 13.1.3 DMA传输\t417 13.1.4 DMA仲裁\t418 13.1.5 DMA通道\t418 13.1.6 DMA数据宽度、对齐和端\t421 13.1.7 DMA中断\t422 13.2 DMA请求多路选择器的原理\t422 13.2.1 DMAMUX的结构\t422 13.2.2 DMAMUX映射\t424 13.2.3 DMAMUX通道\t426 13.2.4 DMAMUX请求多路选择器\t426 13.2.5 同步模式和通道事件生成\t426 13.2.6 DMAMUX请求生成器\t428 13.2.7 DMAMUX中断\t429 13.3 设计实例:基于DMA的数据传输实现\t429 13.3.1 在STM32CubeMX中配置参数\t429 13.3.2 在Keil ?Vision中添加设计代码\t432 13.3.3 设计下载和调试\t434 第14章 信号采集和处理的实现\t435 14.1 ADC结构和功能\t435 14.1.1 ADC内部结构\t435 14.1.2 低功耗模式\t435 14.1.3 高性能特性\t438 14.1.4 ADC转换速度\t439 14.1.5 ADC时钟的选择\t439 14.1.6 ADC输入与ADC的连接关系\t440 14.1.7 ADC转换模式\t440 14.1.8 模拟看门狗\t441 14.1.9 数据传输和中断\t442 14.2 温度传感器和内部参考电压\t442 14.2.1 读取温度\t443 14.2.2 使用内部参考电压计算实际VREF+\t444 14.3 电池电压的监控\t444 14.4 设计实例一:模拟信号的采集与显示\t444 14.4.1 在STM32CubeMX中配置参数\t444 14.4.2 在Keil ?Vision中添加设计代码\t448 14.4.3 设计下载和调试\t452 14.5 DAC结构和功能\t453 14.5.1 DAC内部结构\t453 14.5.2 DAC通道使能\t456 14.5.3 DAC数据格式\t456 14.5.4 DAC转换\t456 14.5.5 DAC电压\t457 14.5.6 DAC触发选择\t457 14.5.7 DMA请求\t457 14.5.8 噪声生成\t458 14.5.9 生成三角波\t458 14.5.10 DAC通道模式\t459 14.5.11 DAC通道缓冲区标定\t461 14.5.12 双DAC通道转换模式(如果可用)\t462 14.5.13 低功耗模式\t466 14.6 基本定时器结构和功能\t466 14.7 设计实例二:使用示波器上的X-Y模式显示不同的图形\t467 14.7.1 设计目标和设计思路\t467 14.7.2 在STM32CubeMX中配置参数\t467 14.7.3 在Keil ?Vision中添加设计代码\t471 14.7.4 设计下载和测试\t480 第15章 嵌入式操作系统原理及应用\t483 15.1 操作系统的必要性\t483 15.1.1 单任务程序\t483 15.1.2 轮询程序\t483 15.2 操作系统基本知识\t484 15.2.1 操作系统的作用\t484 15.2.2 操作系统的功能\t484 15.2.3 嵌入式操作系统\t487 15.3 RT-Thread Nano架构及功能\t489 15.4 RT-Thread Nano在Keil MDK的移植\t490 15.4.1 安装RT-Thread Nano\t490 15.4.2 添加RT-Thread Nano\t491 15.4.3 适配RT-Thread Nano\t493 15.4.4 修改设计代码\t494 15.4.5 配置RT-Thread Nano\t495 15.5 RT-Thread Nano内核分析与实现\t497 15.5.1 线程及其管理\t498 15.5.2 线程的创建及调度的实现\t503 15.5.3 定时器的使用\t509 15.5.4 互斥量的使用\t511 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。