本书以STM32单片机开发为核心,通过模块化项目设计系统介绍嵌入式开发技术。本书内容涵盖搭建开发环境(STM32CubeMX软件和Keil-MDK软件安装),以及GPIO接口应用、中断应用、定时器应用、串口通信应用、ADC应用、I2C接口应用、FSMC接口应用等关键技术,最后通过综合项目设计(控制电磁锁、读取电子秤数据、通过串口远程控制舵机)提升实践能力。本书采用任务驱动模式,以工作过程为主线,结合真实场景(如小车控制、传感器应用等)进行介绍,注重实践。本书内容循序渐进,从环境配置到外设驱动,再到复杂系统设计,难度呈阶梯式上升。本书兼顾理论与实践,适合作为高职院校嵌入式系统、物联网、电子信息类专业的教材,以及需要快速掌握STM32单片机开发技术的工程师的自学参考书,可以帮助读者快速掌握STM32单片机开发全流程。
史虹,女,主持多项课程项目教改研究课题,指导学生参加技能大赛获得优异成绩,长期从事人工智能方向的技术研究和教学,具有丰富的实践和教学经验。
模块一 搭建开发环境——STM32CubeMX软件和Keil-MDK软件安装 1
任务1 安装STM32CubeMX软件 2
任务2 安装Keil-MDK软件 8
任务3 使用STM32CubeMX软件创建Keil-MDK项目 15
任务4 通过串口输出“HELLO STM32” 25
模块二 STM32单片机GPIO接口应用 40
项目1 识别独立按键并控制车灯的亮灭 41
任务1 点亮车灯 41
任务2 识别独立按键 48
项目2 通过PWM信号实现呼吸灯效果 59
任务1 通过PWM信号控制LED的亮度 59
任务2 实现呼吸灯效果 64
项目3 读取DS18B20的测量值 70
任务1 实现单总线协议时序 70
任务2 实现温度测量 85
模块三 STM32单片机中断应用 94
项目1 车轮转速测量 95
任务1 识别按键并控制蜂鸣器 95
任务2 使用编码器测量车轮转速 102
项目2 超声波测距 115
任务1 识别返回信号的上升沿和下降沿 115
任务2 获取时间差并计算距离 121
项目3 矩阵键盘按键识别 127
任务1 识别按键的行号 127
任务2 识别按键的列号并输出键值 133
模块四 STM32单片机定时器应用 139
项目1 实现LED闪烁——通过定时器控制LED闪烁 140
项目2 实现红外遥控器按键识别 149
任务1 捕获红外接收头发送脉冲的边沿 149
任务2 识别红外遥控器编码 158
?
项目3 定时器的PWM输出 167
任务1 小车前进与后退控制 167
任务2 小车行驶速度控制 173
任务3 舵机转动角度控制 181
模块五 STM32单片机串口通信应用——使用蓝牙模块接收字符串 187
任务1 串口透传实验 188
任务2 接收不定长度串口命令 195
模块六 STM32单片机ADC应用——使用ADC测量小车电池电压 203
模块七 STM32单片机I2C接口应用——使用I2C接口驱动OLED显示屏 211
任务1 点亮OLED显示屏 212
任务2 在OLED显示屏上显示字符串 219
模块八 STM32单片机FSMC接口应用——使用FSMC接口驱动LCD 231
任务1 初始化LCD 232
任务2 在 LCD上显示字符串 245
模块九 综合项目设计——传感器综合控制与显示系统 252
任务1 控制电磁锁 253
任务2 读取电子秤数据 266
任务3 通过串口远程控制舵机 273