前言 本书主要讲述STM32嵌入式系统应用实例。为了让读者能够快速地掌握STM32 嵌入式系统的核心技术,本书从STM32 嵌入式微控制器最小系统设计入手,以实战为目的,介绍了多个STM32 嵌入式系统应用实例,读者借鉴书中实例,可以容易地设计出满足自己项目要求的嵌入式系统,达到事半功倍的效果。书中应用实例涉及面广、内容翔实,均为编者多年教学与科研成果的总结。 本书讲述了很多新技术,如DGUS彩色液晶显示屏应用实例。DGUS彩色液晶显示屏通过DGUS开发软件,可以非常方便地显示汉字、数字、符号、图形、图片、曲线、仪表盘等,特别易于今后的修改,彻底改变了液晶显示器采用点阵显示的开发方式,节省了大量的人力物力。不同于一般的液晶显示器的开发方式,DGUS是一种全新的开发方式。微控制器通过UART串行通信接口发送显示的命令,每页显示的内容通过页切换即可改变。 另外,本书还介绍了旋转编码器设计实例、CAN通信转换器设计实例、电力网络仪表设计实例和新型分布式控制系统(DCS)设计实例。这些实例以STM32F103为核心,均有独立的架构,能够培养读者的系统设计能力和实践能力。 本书的数字资源中提供了书中实例的STM32项目工程,如4×4键盘扫描程序代码、DMT32240C035_06WN屏程序代码、PWM输出程序代码、独立看门狗程序代码、窗口看门狗程序代码、USART串行通信程序代码、MB85RS16操作程序代码、PCF2129操作程序代码、RS232CAN(STM32F103) 程序代码、RTC程序代码、DCS程序代码和FBDCS(ST)_8AI程序代码。一方面,这些STM32项目工程给读者一个完整的工程模板,让读者不再需要自建; 另一方面,读者参照这些项目工程实例可以快速地完成自己的项目。 DCS程序代码是基于第13章讲述的控制卡运行的,可以与FBDCS(ST)_8AI程序之间进行CAN通信,对于初次学习μC/OSⅡ的读者,可以很容易地在μC/OSⅡ操作系统上编写自己项目的任务,由此打开学习μC/OSⅡ操作系统的大门。同时,在μC/OSⅡ操作系统的平台上,还提供了μC/OSⅡ的多个任务程序、STM32 CAN通信程序、TCP以太网通信程序、基于W5100芯片的以太网通信程序、双机备份程序、PID控制算法程序、FSMC存储器扩展程序、对DCS主站下载的组态信息进行解析等程序。 PWM输出程序代码、独立看门狗程序代码、窗口看门狗程序代码、USART串行通信程序代码和RTC程序代码是在目前使用最广泛的正点原子STM32F103战舰开发板上调试通过的; μC/OSⅡ程序代码是在奋斗STM32开发板V5上调试通过的。读者也可以将上述程序代码移植到自己的STM32开发板上。 本书共13章。第1章对STM32嵌入式微控制器最小系统设计进行了概述,介绍了STM32F1系列产品系统构架和STM32F103ZET6内部结构、STM32F103ZET6的存储器映像、STM32F103ZET6的时钟结构、STM32F103VET6的引脚、STM32F103VET6最小系统设计; 第2章讲述了人机接口设计与应用实例,包括独立式键盘接口设计、矩阵式键盘接口设计、矩阵式键盘的接口实例、显示技术的发展及其特点、LED显示器接口设计和触摸屏技术; 第3章讲述了DGUS彩色液晶显示屏应用实例,包括屏存储空间、硬件配置文件、DGUS组态软件安装和使用说明、工程下载、DGUS屏显示变量配置方法及其指令详解和通过USB对DGUS屏进行调试; 第4章讲述了旋转编码器设计实例,包括旋转编码器的接口设计、呼吸机按键与旋转编码器程序结构、按键扫描与旋转编码器中断检测程序和键值存取程序; 第5章讲述了PWM输出与看门狗定时器应用实例,包括STM32F103定时器概述、STM32通用定时器、STM32 PWM输出应用实例和看门狗定时器; 第6章讲述了USART与Modbus通信协议应用实例,包括串行通信基础、STM32的USART工作原理、STM32的USART串行通信应用实例、外部总线、Modbus通信协议和PMM2000电力网络仪表ModbusRTU通信协议; 第7章讲述了SPI与铁电存储器接口应用实例,包括STM32的SPI通信原理、STM32F103的SPI工作原理和STM32的SPI与铁电存储器接口应用实例; 第8章讲述了I2C与日历时钟接口应用实例,包括STM32的I2C通信原理、STM32F103的I2C接口和STM32的I2C与日历时钟接口应用实例; 第9章讲述了CAN通信转换器设计实例,包括CAN的特点、STM32的CAN总线概述、STM32的bxCAN工作模式、STM32的bxCAN功能描述、CAN总线收发器、CAN通信转换器概述、CAN通信转换器微控制器主电路的设计、CAN通信转换器UART驱动电路的设计、CAN通信转换器CAN总线隔离驱动电路的设计、CAN通信转换器USB接口电路的设计和CAN通信转换器的程序设计; 第10章讲述了电力网络仪表设计实例,包括PMM2000电力网络仪表概述、PMM2000电力网络仪表的硬件设计、周期和频率测量、STM32F103VBT6初始化程序、电力网络仪表的算法、LED数码管动态显示程序设计和PMM2000电力网络仪表在数字化变电站中的应用; 第11章讲述了μC/OSⅡ在STM32上的移植与应用实例,包括μC/OSⅡ介绍、嵌入式控制系统的软件平台和μC/OSⅡ的移植与应用; 第12章讲述了RTC与万年历应用实例,包括RTC、备份寄存器(BKP)、RTC的操作和万年历应用实例; 第13章讲述了新型分布式控制系统设计实例,包括新型DCS概述、现场控制站的组成、新型DCS通信网络、新型DCS控制卡的硬件设计、新型DCS控制卡的软件设计、控制算法的设计、8通道模拟量输入板卡(8AI)的设计、8通道热电偶板卡(8TC)的设计、8通道热电阻板卡(8RTD)的设计、4通道模拟量输出板卡(4AO)的设计、16通道数字量输入板卡(16DI)的设计、16通道数字量输出板卡(16DO)的设计、8通道脉冲量量输入板卡(8PI)的设计和嵌入式控制系统可靠性与安全性技术。 本书结合编者30多年的科研和教学经验,遵循“循序渐进,理论与实践并重,共性与个性兼顾”的原则,将理论实践一体化的教学方式融入其中。实践案例由浅入深,层层递进,在帮助读者快速掌握某一外设功能的同时,有效融合其他外部设备。 在此对本书引用的参考文献的作者一并表示真诚的感谢。由于编者水平有限,加上时间仓促,书中不妥之处在所难免,敬请广大读者不吝指正。 编者2024年1月