顶部
收藏

嵌入式系统设计——基于STM32CubeMX与HAL库


作者:
漆强
定价:
47.10 元
版面字数:
490.00千字
开本:
16开
装帧形式:
平装
版次:
1
最新版次
印刷时间:
暂无
ISBN:
978-7-04-057906-2
物料号:
57906-00
出版时间:
2022-01-26
读者对象:
高等教育
一级分类:
电气/电子信息/自动化类
二级分类:
电气/自动化专业课
三级分类:
嵌入式系统

本书以产业界主流的微控制器STM32F4为硬件平台,以嵌入式硬件设计和软件设计为主线,按照“最小系统电路设计→开发工具使用→片内外设应用→驱动程序设计→实时操作系统(FreeRTOS)”的路径,分层次、递进式地介绍嵌入式系统的设计方法。

本书选用业界先进的开发工具STM32CubeMX及硬件抽象库(HAL库)进行嵌入式系统开发。STM32CubeMX软件利用图形化界面完成芯片的配置,并配合MDK-ARM等集成开发环境,直接生成应用程序的基本框架,使设计者可以专注于应用层代码的编写。采用库函数的程序开发方式,用户不需对芯片底层的寄存器作过多了解,只需要掌握HAL库提供的接口函数就可以完成应用程序的编写,加快了嵌入式系统的开发效率,降低了学习的门槛。全书共10章,分别是:嵌入式系统概要,STM32微控制器的硬件电路设计,STM32微控制器开发环境的搭建,STM32CubeMX软件的使用,MDK-ARM开发软件的使用,通用输入输出接口,中断系统,定时器,串口通信,FreeRTOS的应用。

本书内容丰富实用,层次清晰,叙述详尽,书中所有例程都是基于意法半导体公司的Nucleo系列开发板,方便教学和自学。本书可作为高等院校电子信息类、自动化类专业的本科生及研究生“嵌入式系统设计”课程的入门教材,以及高职院校和大专院校“嵌入式系统设计”课程的入门教材。

本书对应的慕课课程可在中国大学慕课网上学习,课程名称为“基于STM32CubeMX和HAL驱动库的嵌入式系统设计”。

  • 目录
    • 前辅文
      • 第一章 嵌入式系统概要
        • 1.1 嵌入式系统的概念及特点
          • 1.2 嵌入式系统组成
            • 1.2.1 嵌入式系统硬件
              • 1.2.2 嵌入式系统软件
              • 1.3 嵌入式系统软件开发
                • 1.3.1 编程模式
                  • 1.3.2 程序开发方式
                  • 本章小结
                    • 习题1
                    • 第二章 STM32微控制器的硬件电路设计
                      • 2.1 STM32微控制器概述
                        • 2.1.1 产品分类
                          • 2.1.2 STM32F4
                          • 2.2 STM32 Nucleo开发板
                            • 2.2.1 Nucleo开发板概述
                              • 2.2.2 Nucleo-F411RE开发板
                                • 2.2.3 STM32F411芯片引脚介绍
                                • 2.3 Nucleo-F411RE开发板电路原理
                                  • 2.3.1 最小系统电路
                                    • 2.3.2 外围电路
                                      • 2.3.3 ST-Link仿真器电路
                                        • 2.3.4 利用板载ST-Link仿真器调试外部MCU
                                        • 2.4 自制STM32微控制器应用电路
                                          • 2.4.1 核心板设计
                                            • 2.4.2 外围电路板设计
                                            • 本章小结
                                              • 习题2
                                              • 第三章 ST32微控制器开发环境的搭建
                                                • 3.1 STM32Cube生态系统
                                                  • 3.2 STM32CubeMX的下载及安装
                                                    • 3.2.1 STM32CubeMX安装软件的下载
                                                      • 3.2.2 STM32CubeMX的安装
                                                        • 3.2.3 MCU固件包的安装
                                                          • 3.2.4 MCU固件包的组成
                                                          • 3.3 MDK-ARM的下载及安装
                                                            • 3.3.1 MDK-ARM安装软件的下载
                                                              • 3.3.2 MDK-ARM的安装
                                                              • 3.4 ST-Link仿真器驱动安装
                                                                • 3.5 串口调试软件的下载和安装
                                                                  • 本章小结
                                                                    • 习题3
                                                                    • 第四章 STM32CubeMX软件的使用
                                                                      • 4.1 STM32CubeMX使用流程
                                                                        • 4.1.1 目标选择
                                                                          • 4.1.2 引脚分配
                                                                            • 4.1.3 外设配置
                                                                              • 4.1.4 时钟配置
                                                                                • 4.1.5 工程配置
                                                                                  • 4.1.6 生成工程
                                                                                  • 4.2 程序编写
                                                                                    • 4.2.1 工程框架介绍
                                                                                      • 4.2.2 添加用户代码
                                                                                        • 4.2.3 程序编译及下载
                                                                                        • 4.3 串口通信演示程序
                                                                                          • 本章小结
                                                                                            • 习题4
                                                                                            • 第五章 MDK-ARM开发软件的使用
                                                                                              • 5.1 MDK的使用
                                                                                                • 5.1.1 新建工程
                                                                                                  • 5.1.2 工程配置
                                                                                                    • 5.1.3 程序编译和下载
                                                                                                      • 5.1.4 程序调试
                                                                                                      • 5.2 MDK软件的实用功能
                                                                                                        • 5.3 MDK的RTE工具与STM32 CubeMX的联合使用
                                                                                                          • 本章小结
                                                                                                            • 习题5
                                                                                                            • 第六章 通用输入输出接口(GPIO)
                                                                                                              • 6.1 GPIO概述
                                                                                                                • 6.1.1 GPIO功能及特性
                                                                                                                  • 6.1.2 GPIO的电路结构
                                                                                                                    • 6.1.3 GPIO的工作模式
                                                                                                                    • 6.2 基于寄存器方式控制GPIO
                                                                                                                      • 6.2.1 GPIO相关寄存器
                                                                                                                        • 6.2.2 利用指针访问单个寄存器
                                                                                                                          • 6.2.3 利用结构体指针访问寄存器组
                                                                                                                          • 6.3 基于HAL库方式控制GPIO
                                                                                                                            • 6.3.1 GPIO外设的数据类型
                                                                                                                              • 6.3.2 GPIO外设的接口函数
                                                                                                                                • 6.3.3 GPIO外设的接口函数源码分析
                                                                                                                                  • 6.3.4 HAL库设计思想
                                                                                                                                  • 6.4 任务实践
                                                                                                                                    • 6.4.1 基础任务:驱动指示灯
                                                                                                                                      • 6.4.2 进阶任务:按键检测
                                                                                                                                        • 6.4.3 挑战任务:利用状态机检测按键
                                                                                                                                          • 6.4.4 HAL库程序设计总结
                                                                                                                                          • 6.5 驱动程序的设计
                                                                                                                                            • 6.5.1 驱动程序设计思想
                                                                                                                                              • 6.5.2 指示灯BSP的设计
                                                                                                                                                • 6.5.3 指示灯BSP的移植和应用
                                                                                                                                                • 本章小结
                                                                                                                                                  • 习题6
                                                                                                                                                  • 第七章 中断系统
                                                                                                                                                    • 7.1 中断概述
                                                                                                                                                      • 7.1.1 中断相关概念
                                                                                                                                                        • 7.1.2 STM32中断系统
                                                                                                                                                        • 7.2 HAL库的中断处理
                                                                                                                                                          • 7.2.1 HAL库的中断封装
                                                                                                                                                            • 7.2.2 外部中断处理流程
                                                                                                                                                            • 7.3 外部中断的HAL库定义
                                                                                                                                                              • 7.3.1 外部中断的数据类型
                                                                                                                                                                • 7.3.2 外部中断的接口函数
                                                                                                                                                                • 7.4 任务实践
                                                                                                                                                                  • 7.4.1 基础任务:中断方式检测按键
                                                                                                                                                                    • 7.4.2 进阶任务:按键控制指示灯闪烁间隔
                                                                                                                                                                    • 本章小结
                                                                                                                                                                      • 习题7
                                                                                                                                                                      • 第八章 定时器
                                                                                                                                                                        • 8.1 定时器概要
                                                                                                                                                                          • 8.1.1 定时器工作原理
                                                                                                                                                                            • 8.1.2 STM32定时器介绍
                                                                                                                                                                            • 8.2 HAL库外设模块设计方法
                                                                                                                                                                              • 8.2.1 外设句柄设计
                                                                                                                                                                                • 8.2.2 外设编程模型
                                                                                                                                                                                  • 8.2.3 外设通用接口函数设计
                                                                                                                                                                                  • 8.3 定时/计数功能
                                                                                                                                                                                    • 8.3.1 时钟源
                                                                                                                                                                                      • 8.3.2 时基单元
                                                                                                                                                                                        • 8.3.3 外部脉冲计数
                                                                                                                                                                                          • 8.3.4 定时/计数功能的数据类型
                                                                                                                                                                                            • 8.3.5 定时/计数功能的接口函数
                                                                                                                                                                                              • 8.3.6 基础任务:定时闪烁指示灯
                                                                                                                                                                                                • 8.3.7 进阶任务:外部脉冲计数
                                                                                                                                                                                                • 8.4 PWM输出功能
                                                                                                                                                                                                  • 8.4.1 捕获/比较通道
                                                                                                                                                                                                    • 8.4.2 PWM实现原理
                                                                                                                                                                                                      • 8.4.3 PWM输出功能的数据类型
                                                                                                                                                                                                        • 8.4.4 PWM输出功能的接口函数
                                                                                                                                                                                                          • 8.4.5 基础任务:输出PWM信号
                                                                                                                                                                                                            • 8.4.6 进阶任务:实现呼吸灯
                                                                                                                                                                                                            • 8.5 输入捕获功能
                                                                                                                                                                                                              • 8.5.1 输入捕获功能概述
                                                                                                                                                                                                                • 8.5.2 输入捕获功能的数据类型
                                                                                                                                                                                                                  • 8.5.3 输入捕获功能的接口函数
                                                                                                                                                                                                                    • 8.5.4 挑战任务:信号测量
                                                                                                                                                                                                                    • 本章小结
                                                                                                                                                                                                                      • 习题8
                                                                                                                                                                                                                      • 第九章 串口通信
                                                                                                                                                                                                                        • 9.1 串口通信概要
                                                                                                                                                                                                                          • 9.1.1 计算机通信
                                                                                                                                                                                                                            • 9.1.2 串行通信基本概念
                                                                                                                                                                                                                              • 9.1.3 STM32串口通信
                                                                                                                                                                                                                              • 9.2 HAL库外设初始化过程
                                                                                                                                                                                                                                • 9.2.1 串口外设句柄
                                                                                                                                                                                                                                  • 9.2.2 串口初始化数据类型
                                                                                                                                                                                                                                    • 9.2.3 串口初始化过程
                                                                                                                                                                                                                                    • 9.3 轮询方式的串口通信
                                                                                                                                                                                                                                      • 9.3.1 轮询方式的接口函数
                                                                                                                                                                                                                                        • 9.3.2 基础任务:固定长度的数据收发
                                                                                                                                                                                                                                          • 9.3.3 挑战任务:串口重定向
                                                                                                                                                                                                                                          • 9.4 中断方式的串口通信
                                                                                                                                                                                                                                            • 9.4.1 中断方式的接口函数
                                                                                                                                                                                                                                              • 9.4.2 挑战任务:实现简单的通信协议
                                                                                                                                                                                                                                              • 9.5 DMA方式的串口通信
                                                                                                                                                                                                                                                • 9.5.1 DMA控制器概述
                                                                                                                                                                                                                                                  • 9.5.2 DMA方式的接口函数
                                                                                                                                                                                                                                                    • 9.5.3 挑战任务:利用空闲中断和DMA实现不定长数据的接收
                                                                                                                                                                                                                                                    • 本章小结
                                                                                                                                                                                                                                                      • 习题9
                                                                                                                                                                                                                                                      • 第十章 FreeRTOS的应用
                                                                                                                                                                                                                                                        • 10.1 概述
                                                                                                                                                                                                                                                          • 10.1.1 软件编程模式
                                                                                                                                                                                                                                                            • 10.1.2 嵌入式操作系统的基本概念
                                                                                                                                                                                                                                                              • 10.1.3 嵌入式实时操作系统
                                                                                                                                                                                                                                                              • 10.2 任务管理
                                                                                                                                                                                                                                                                • 10.2.1 任务划分
                                                                                                                                                                                                                                                                  • 10.2.2 任务函数的结构
                                                                                                                                                                                                                                                                    • 10.2.3 任务优先级设置
                                                                                                                                                                                                                                                                      • 10.2.4 任务管理接口函数
                                                                                                                                                                                                                                                                        • 10.2.5 应用实例:任务创建
                                                                                                                                                                                                                                                                        • 10.3 任务的同步和通信
                                                                                                                                                                                                                                                                          • 10.3.1 信号量
                                                                                                                                                                                                                                                                            • 10.3.2 事件标志组
                                                                                                                                                                                                                                                                              • 10.3.3 线程标志(任务通知)
                                                                                                                                                                                                                                                                                • 10.3.4 互斥量
                                                                                                                                                                                                                                                                                  • 10.3.5 消息队列
                                                                                                                                                                                                                                                                                    • 10.3.6 软件定时器
                                                                                                                                                                                                                                                                                    • 10.4 综合应用:设计电子时钟
                                                                                                                                                                                                                                                                                      • 本章小结
                                                                                                                                                                                                                                                                                        • 习题10
                                                                                                                                                                                                                                                                                        • 参考文献

                                                                                                                                                                                                                                                                                        相关图书