图书简介:
项目 1 搭建 STM32 开发环境 1
任务 1.1 认识 STM32F4 开发板 2
任务描述 2
任务学习 2
1.1.1 初识 STM32 2
1.1.2 认识 STM32F407 芯片 3
1.1.3 认识 STM32F4 开发板 8
任务实施 9
步骤 1:搜集芯片数据手册及开发板的相关资料 9
步骤 2:查找 STM32F4 开发板的连接外设的引脚 9
任务 1.2 安装 STM32 开发软件 10
任务描述 10
任务学习 11
1.2.1 STM32 的开发方式 11
1.2.2 STM32 的开发软件 11
任务实施 12
步骤 1:检查 Java 运行环境 12
步骤 2:安装 CubeIDE 软件 13
步骤 3:安装 CubeMX 软件及固件包 14
步骤 4:安装 Keil MDK 软件及固件包 16
任务 1.3 创建 STM32 工程 19
任务描述 19
任务学习 19
1.3.1 认识主要项目文件及 CMSIS 标准 19
1.3.2 LED 的硬件电路及其 GPIO 配置 21
任务实施 1:CubeMX 软件工程配置 22
步骤 1:选芯片新建工程,认识软件界面 22
步骤 2:配置系统时钟 24
步骤 3:配置 GPIO 27
步骤 4:生成初始化代码 28
任务实施 2:在 Keil MDK 软件中编写控制 LED 的代码 30
步骤 1:认识 Keil MDK 软件界面,设置输出 hex 文件 30
步骤 2:Keil MDK 软件的几个设置技巧 32
步骤 3:编写控制 LED 闪烁的代码 34
任务实施 3:使用 CubeIDE 配置工程,编写代码 35
步骤 1:创建 STM32 工程 35
步骤 2:配置系统时钟和 GPIO 38
步骤 3:生成初始化代码,认识编辑界面 38
步骤 4:编写控制 LED 亮灭的代码 43
步骤 5:设置输出 hex 文件 43
任务 1.4 程序下载与调试 44
任务描述 44
任务学习 44
1.4.1 STM32F4 的程序下载方式 44
1.4.2 开发板的串口一键下载电路 45
任务实施 46
步骤 1:安装 CH340 串口驱动程序 46
步骤 2:使用 FlyMcu 软件实现串口下载 47
步骤 3:安装 ST-LINK 驱动程序 48
步骤 4:在 Keil MDK 软件中使用 ST-LINK 下载程序 50
步骤 5:在 CubeIDE 软件中使用 ST-LINK 下载程序 52
拓展训练:声光报警器设计 53
项目评价 55
思考练习 55
项目 2 LED 控制设计 57
任务 2.1 8 位跑马灯设计 58
任务描述 58
任务学习 58
2.1.1 STM32F4 的时钟系统及其初始化函数 58
2.1.2 STM32F4 的 GPIO 及其配置 61
2.1.3 GPIO 相关的 API 函数 64
任务实施 66
步骤 1:8 位跑马灯硬件电路设计 66
步骤 2:CubeMX 工程配置 67
步骤 3:查看和分析项目初始化配置代码 68
步骤 4:编写 LED 控制函数 70
步骤 5:上板验证跑马灯功能 72
拓展训练:循环点亮 RGB 灯 73
任务 2.2 按键控制 LED 设计 74
任务描述 74
任务学习 75
2.2.1 按键工作原理 75
2.2.2 独立按键输入检测函数设计 76
任务实施 77
步骤 1:硬件电路设计 77
步骤 2:CubeMX 工程配置 78
步骤 3:创建外设驱动文件,添加文件路径 79
步骤 4:编写按键检测函数及 LED 宏函数 85
步骤 5:实现按键控制 LED 设计 87
拓展训练:按键控制 RGB 灯 88
任务 2.3 串口控制 LED 设计 88
任务描述 88
任务学习 89
2.3.1 串行通信概述 89
2.3.2 异步串行通信协议 90
2.3.3 串口操作的 HAL 库相关函数 92
技能训练 1:串口发送信息 92
步骤 1:硬件电路设计 92
步骤 2:串口 CubeMX 工程配置 93
步骤 3:复制外设驱动文件,添加文件路径 96
步骤 4:分析串行通信配置代码 97
步骤 5:添加串口重定向代码 98
步骤 6:实现串口发送功能 99
技能训练 2:串口发送及接收信息 100
步骤 1:复制串口通信工程 100
步骤 2:编写串口接收信息功能代码 101
步骤 3:下载调试串口发送及接收信息功能 103
任务实施 103
步骤 1:编写串口控制 LED 代码 103
步骤 2:下载程序并测试串口控制 LED 功能 104
拓展训练:串口控制 RGB 灯 105
项目评价 106
思考练习 106
项目 3 三人抢答器设计 108
任务 3.1 三人抢答器按键模块设计 109
任务描述 109
任务学习 109
3.1.1 中断概述 109
3.1.2 NVIC 中断优先级 111
3.1.3 EXTI 外部中断 111
3.1.4 EXTI 相关 HAL 函数 113
任务实施 113
步骤 1:外部中断按键引脚配置 113
步骤 2:CubeMX 工程配置 114
步骤 3:外部中断按键代码设计 115
拓展训练 1:给三人抢答器添加三个选手指示灯 117
拓展训练 2:通过外部中断方式实现按键控制 RGB 灯 118
任务 3.2 三人抢答器限时抢答设计 118
任务描述 118
任务学习 119
3.2.1 STM32 定时器概述 119
3.2.2 通用定时器 121
3.2.3 基本定时器 123
3.2.4 定时器的 HAL 驱动函数 124
技能训练:通用定时器设计 125
步骤 1:通用定时器参数计算 125
步骤 2:通用定时器 CubeMX 工程配置 125
步骤 3:实现通用定时器控制 LED 闪烁 128
任务实施 129
步骤 1:基本定时器参数计算 129
步骤 2:基本定时器 CubeMX 工程配置 129
步骤 3:限时抢答代码设计及浮点数输出 130
任务 3.3 三人抢答器显示界面设计 134
任务描述 134
任务学习 134
3.3.1 TFTLCD 概述 134
3.3.2 FSMC 简介 136
技能训练:TFTLCD 显示 139
步骤 1:连接 TFTLCD 硬件电路 140
步骤 2:TFTLCD 的 CubeMX 工程配置 141
步骤 3:分析代码,移植 LCD 驱动文件 142
步骤 4:编写 TFTLCD 显示代码 148
任务实施 149
步骤 1:复制工程 149
步骤 2:编写代码 149
拓展训练 1:在 TFTLCD 上显示自己设计的 LOGO 151
拓展训练 2:添加 48 号字体在 LCD 显示 152
项目整体实施 153
步骤 1:三人抢答器工程配置 153
步骤 2:移植三人抢答器显示界面代码 154
步骤 3:下载程序,检测三人抢答器整体功能 155
项目评价 155
思考练习 156
项目 4 智能调光灯设计 157
任务 4.1 调光灯手动模式设计 158
任务描述 158
任务学习 158
4.1.1 PWM 工作原理 158
4.1.2 PWM 相关的 HAL 函数 160
任务实施 161
步骤 1:PWM 参数计算 161
步骤 2:PWM 的 CubeMX 工程配置 161
步骤 3:实现按键调光灯设计 163
拓展训练:使用 USB_LED 设计按键调光灯 165
任务 4.2 调光灯自动模式设计 167
任务描述 167
任务学习 168
4.2.1 STM32F4 的 ADC 168
4.2.2 光敏传感器 170
技能训练:光敏传感器及 ADC 检测 171
步骤 1:硬件电路设计 171
步骤 2:ADC 的 CubeMX 工程配置 172
步骤 3:编写光敏传感器实现代码 173
任务实施 176
步骤 1:配置工程,编写 ADC 代码 176
步骤 2:编写主函数代码 176
步骤 3:下载程序,测试功能 178
任务 4.3 汉字及图片的 LCD 界面设计 178
任务描述 178
任务学习 179
4.3.1 汉字显示原理 179
4.3.2 图片显示格式 180
技能训练 1:汉字显示设计 181
步骤 1:通过 PCtoLCD 2002 软件进行汉字取模 181
步骤 2:编写显示汉字的应用函数 182
步骤 3:编写汉字显示代码 183
技能训练 2:图片显示设计 183
步骤 1:添加图片显示驱动文件 183
步骤 2:通过 Image2Lcd 软件进行图片取模 184
步骤 3:编写代码实现图片显示 185
任务实施 185
步骤 1:对 ASCII 码取模 48 号字符集 185
步骤 2:在主函数中编写智能调光灯 LCD 显示的代码 185
项目整体实施 187
步骤 1:复制工程,移植 LCD 文件 188
步骤 2:添加汉字及图片的 LCD 界面设计相关代码 188
步骤 3:上板测试 189
项目评价 189
思考练习 190
附录 A 开发板部分电路原理图 191
参考文献 194
展开
本书是 STM32 开发应用的入门教材。编者通过三年项目教学改革实践,结合高职院校职业技能大赛相关赛项技能要求组织编写本书内容。采用“项目导向、任务驱动”教学模式,精心选择项目载体,将 STM32 软硬件开发基础、GPIO、外部中断、串行通信、定时器、LCD、PWM 输出、ADC 等内容融入各项目。
本书的主要特点如下。
(1) 根据高职教学要求,精选 4 个项目,分解为 13 个任务,由浅入深地介绍 STM32
的应用技术。
项目 1 为搭建 STM32 开发环境,介绍 STM32F407 芯片及其开发板资源,两种
STM32 开发软件的安装、使用及程序下载、调试等内容。
项目 2 为 LED 控制设计,介绍 STM32F4 的时钟系统配置、GPIO 输出控制 LED、按键输入控制 LED、USART 串行通信控制 LED 的设计。
项目 3 为三人抢答器设计,该项目是综合设计项目,根据电路功能拆分为三个任务, 分别实现按键模块设计、限时抢答设计和显示界面设计,最后将三个任务整合到一起实现完整的抢答器功能设计。
项目 4 为智能调光灯设计,该项目是综合工程设计案例,分别用 PWM 实现调光灯手动模式设计、用 ADC 及传感器测光实现调光灯自动模式设计,以及用 LCD 显示汉字及图片的界面设计,最终将三个任务整合到一起实现智能调光灯的全部功能。
(2) 介绍两种 HAL 库开发平台,以满足不同教学场景的使用需求。一是基于 HAL 库开发的 STM32 主流平台 STM32CubeMX。使用该软件进行 STM32 项目建立和初始化配置, 可快速生成基于 HAL 库的程序框架,并在 Keil MDK 软件上对代码进行编写和调试,直至完成最终项目开发。二是使用意法半导体公司在 2019 年推出的 STM32CubeIDE 开发平台,它将 STM32CubeMX 和 Keil MDK 集成在一起,不需要安装多个开发平台即可实现一体化的开发。这两款开发平台紧跟当前 ST 技术发展趋势,可满足不同教学场景需求。
(3) 融入高职院校职业技能大赛的技能点考核要求。本书基于职业教育特点,融入职业技能大赛技能点,由浅入深、循序渐进,从简单到复杂,不断提高学习难度,每个项目配有考核评分表和拓展训练,学生可以借此清楚地了解自身学习情况,进而制定有效的改进措施,进行巩固训练,提升职业技能,同时培养思维迁移能力,增强其自学能力及创新
能力。
本书使用 STM32F4 开发板进行项目设计,在编写过程中参考了正点原子的相关例程及技术资料,也得到了正点原子工程师的技术支持。本书提供教学资源包(包括课件、程序代码、思考练习答案等教学资源),可登录华信教育资源网(www.hxedu.com.cn)免费注册后下载。
本书由四川信息职业技术学院马颖主编,在编写过程中得到了四川信息职业技术学院王坤教授和李华教授的支持与指导,在此表示衷心的感谢。书稿在策划与编辑的过程中, 得到了电子工业出版社王昭松编辑的帮助,在此表示诚挚的感谢。
限于编者水平,本书在内容取舍、编写方面难免存在疏漏之处,恳请读者批评指正, 编者邮箱:370129952@qq.com。
展开