基于STM32CubeMX的单片机最小系统设计

2018-10-31 10:49杨晓艳陈亮
数字技术与应用 2018年6期

杨晓艳 陈亮

摘要:STM32CubeMX是意法半导体推出的面向STM全系列单片机系统开发的辅助工具软件,可以极大地降低开发的工作量、时间和成本。本文以意法半导体发布的STM32F746VET6芯片最小系统开发案例为例,介绍STM32CubeMX工具软件的使用流程。

关键词:STM32CubeMX;STM32系列单片机;最小系统设计

中图分类号:TP368.1 文献标识码:A 文章编号:1007-9416(2018)06-0149-02

随着集成电路技术的高速发展,32位单片机(MCU)逐渐成为嵌入式系统设计的主流选择。相对于8位MCU而言,32位MCU性能更强、功能更丰富、管脚更多,一定程度上增加了系统硬、软件设计的难度。STM32CubeMX工具软件为STM32系列单片机的开发工作带来了极大的帮助,提升了工作效率。

1 STM32CubeMX简介

STM32CubeMX具有图形化操作界面,能方便地进行管脚的功能定义,时钟树、外设参数和中间件的配置,可自动生成适合于多种集成开发环境(IAR EWARM、Keil MDK或基于GCC的IDE)工程项目的初始化C代码,便于用户在此基础上进行深层次开发。

与STM32CubeMX工具软件配套的STM32Cube库主要包括两大类:①HAL硬件抽象层:通过HAL可以通过标准API调用实现STM32系列单片机的程序互相移植。②中间件组件:包括RTOS、USB库、文件系统、TCP/IP栈、触摸感应库或图形库等,同时具备大量的样例和演示代码,可帮助用户实现快速开发。

2 芯片管脚的功能定义

STM32F746VET6单片机最小系统设计主要涉及电源、复位、时钟等基本功能设计,串口模块用于说明外设参数的设置方法。在STM32CubeMX软件中根据目标芯片建立项目文件后,“Pinout(管脚配置)”界面将会显示芯片的封装图形。芯片的电源、数字/模拟地、复位等固定功能管脚直接显示功能名称,以黄色或暗黄色标注,用户不能更改其定义;通用I/O管脚在未定义具体功能之前,显示默认名称,以灰色标注。在“Peripherals(外围设备)”目录下,软件以模块的功能进行分类显示,用户根据需求进行操作,软件将自动分配相关管脚,显示管脚的功能名称,以绿色标注。单片机管脚功能定义的操作流程如下图1所示。

(1)在“RCC”中配置系统时钟源:“High Speed Clock(高速时钟源)”选择“Crystal/Ceramic Resonator”,软件将自动分配“RCC_OSC_IN、RCC_ OSC_OUT”管脚。“Low Speed Clock(低速时钟源)”选择“Crystal/Ceramic Resonator”,软件将自动分配“RCC_ OSC32_IN、RCC_OSC32_OUT”管脚。STM32F746VET6单片机可使用内、外两种时钟源,如果选择内部时钟,则不用配置该项。(2)在“SYS”中配置仿真端口:“Debug(调试)”选择“JTAG(5 pins)”。软件将自动分配“SYS-JTAG、SYS_JTDO-SWO、SYS_JTDI、SYS_JTCK-SWCLK、SYS_JTMS-SWDIO”等管脚。(3)在“USARTx”中配置串口:STM32F746VET6芯片具备多个串口模块,可根据串口需求数量进行配置。在“USART1”中,“Mode(模式)”选择“Asynchronous(异步)”,软件将自动分配“USART1_ RX、USART1_TX”。

STM32F746VET6单片机最小系统管脚功能定义,如图1所示。由于通用I/O管脚具备复用功能,如需调整软件自动分配的管脚定义,可单击目标管脚,软件将自动弹出管脚可复用功能的名称菜单,选择相应功能即实现管脚功能更改,同时具备相同功能的管脚将自动恢复为通用I/O状态。采用STM32CubeMX软件进行管脚功能定义,可以为单片机系统硬件电路设计提供直观的芯片管脚分配参考,避免硬件设计中易发的管脚功能冲突的错误。

3 芯片时钟树设置

STM32F746VET6芯片采用多总线时钟运行模式,能充分发挥不同运行速率的模块功能,“Clock Configuration(时钟配置)”界面可实现单片机时钟树管理,操作流程如下:

(1)时钟晶振参数设置。(2)总线时钟源选择。(3)锁相环(PLL)的倍频、分频系数设置。(4)外设总线时钟分频系数设置。

在进行时钟树的参数配置时,每一个参数的变化都会导致与之相关的时钟频率发生变化。如果某个时钟频率配置过高,软件将以红色进行提示错误结果,用户可通过提示及时消除错误,使单片机的运行时钟处于正常状态。时钟树的配置结果将会生成的初始化C代码直接体现出来,无需用户再手动编写初始化代码。

4 外设参数设置

STM32CubeMX软件的“Configuration”界面显示了单片机所有处于激活状态的功能模块。双击模块图标,将会弹出“参数设置界面”,主要包括五种可选项。以本文定义的“USART1”为例进行说明:

“Parameter Settings”选项:串口参数设置。基本参数(波特率、通信位长、校验位、停止位);高级参数(收发功能、采样方式),串口硬件特性。

“User Constants”选项:用户自定义参数。以宏定义形式出现在初始化代码中。

“NVIC Settings”選项:中断定义。如果选择中断有效,将在初始化代码中生成与串口中断相关函数定义。

“DMA Settings”选项:DMA方式设置。

“GPIO Settings”选项:外设相关管脚映射列表。可在“Use Label”中定义用户自定义名称,将在初始化代码中出现。

5 初始化C代码生成

在完成上述操作之后,就可以开始生成初始化C代码。点击“Project(项目)”菜单下“Settings(设置)”命令,弹出“Project Settings(项目设置)”界面,填写软件工程项目的名称、存放路径,选择IDE类型(本文选择MDK-ARM V5)。再次选择“Project”菜单,执行“Generate Code(代码生成)”命令,就可以生成包含初始化C代碼的软件工程项目。

利用MDK-ARM V5集成开发环境打开已生成的软件工程项目,可以看到项目已具备完整的单片机软件开发架构,初始化C代码已自动生成。其中,项目结构树中显示的“Drivers/STM32F7xx_ HAL_Driver”目录包含了HAL库文件,用户只需要按照HAL编程规范在添加自定义功能,即可完成软件项目的后续开发。

打开自动生成的程序文件,会发现存在丰富的备注语句,用户可通过备注了解程序文件已实现的功能。其中,程序文件中存在添加自定义代码的备注,例程如下:

/* USER CODE BEGIN … */

//用户添加代码区域

/* USER CODE END …*/

用户可在该类备注之间自行添加程序代码以实现相关功能,如果是后期需要对项目功能进行增删,仍可以STM32CubeMX软件进行调整,软件将自动保留备注之间的相关代码,无需再次手动编写,这项功能为项目的持续改进提供了极大的便利。

6 结语

STM32CubeMX工具软件用于STM32系列单片机系统开发,能够对从硬件设计到软件开发整个流程起到强有力的辅助性作用,节约大量的工作量,加快系统开发进程。HAL库文件采用了分层设计的思想,实现了对硬件层的抽象设计,可以让用户从繁琐的基于寄存器编程方式中解放出来,即提高了程序的可移植性,又可让用户投入更多精力到应用层的开发,极大提升了工作效率,是今后嵌入式系统设计与开发的新方向。

参考文献

[1]罗清龙,冯敏,李清涛.基于STM32CubeMX嵌入式实验教学改革实践[J].计算机教育,2018,(1):155-158.

[2]罗瑶,魏忠义,朱磊,等. STM32CubeMX的高速USB通信模块设计[J].单片机与嵌入式系统应用,2017,17(9):46-48.

[3]邢方诚,王素珍,宗卫华,等.基于STM32 CubeMX的高速嵌入式图像采集系统[J].单片机与嵌入式系统应用,2016,16(5):42-45.

Abstract:STM32CubeMX is an assistant tool software developed by STMicroelectronics for the development of STM full range SCM systems, which can greatly reduce the development workload, time and cost. This article takes STMicroelectronics STM32F746VET6 chip minimum system development case as an example to introduce the use of STM32CubeMX tool software application process.

Key words:STM32CubeMX; STM32 series single-chip; minimum system design