基于STM32CubeMX图形化编程教学改革的研究
2021-06-17龙祖连
龙祖连
(广西水利电力职业技术学院,广西南宁,530023)
0 前言
在电子信息专业人才培养方案中提到,学生通过专业学习后,具备电子信息产品研发、生产管理、售后服务等岗位能力。STM32课程作为电子信息专业的一门专业核心课,学生掌握STM32编程的程度,决定学生以后就业的岗位的情况;在高职中如何能让学生学习好STM32编程成为老师的一个难题。传统的STM32实验教学编程都是使用寄存器编程或是函数库编程的,这两种实验编程的方法对我们高职的学生来说都是很难学和理解的,首先寄存器的编程方法比较熟悉STM32单片机的寄存器,而单片机的型号不一样,寄存器的类型也不一样,这样一来学生就得去记很多的寄存器;其次库函数的编程方法,虽然ST公司做有很多的标准函数库,但去查找也是很难的,同时不同的公司也会做自己的函数库,这样学生在使用的时候很难分清函数库的调用情况。那有没有有一种能让我们高职的学生容易上手、容易理解的方法去学生STM32单片机呢?这就是本文将要阐述的STM32CubeMX图形化编程。
1 STM32CubeMX简介
STM32CubeMX 是ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具[5],直接由图形界面简单配置下,生成初始化代码,并对外设做了进一步的抽象,让开发人员更只专注应用的开发,可以大大减轻开发工作时间和费用,提高开发效率[1]。STM32CubeMX几乎覆盖了STM32全系列芯片。在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等,省去了我们配置各种外设的时间,大大的节省了时间。
2 STM32单片机寄存器和库函数编程
在当前高校的电子类的专业高级的单片机编程基本上都是使用STM32单片机,因为它是32位的单片机,在做系统或产品上它具有工作效率高、运行速度快、成本低等特点,都得到广大师生的使用[3]。而目前多数的高校对STM32单片机的教学基本上使用寄存器编程教学或库函数编程教学。
■2.1 STM32库函数与寄存器开发流程
进行具体的项目开发前,做好项目创建工作,通常包括如下步骤:
(1)新建工程项目的文件夹和子文件夹(如user、output、listing等);
(2)使用MDK新建(或打开项目),选择目标CPU、添加CMSIS核心、STM32启动代码和外设驱动程序,构成运行环境;
(3)添加包含main()函数的主程序文件;
(4)配置目标选项。
■2.2 以闪烁的LED为例采用库函数编程和寄存器编程的对比
(1)函数库编写闪烁LED部分函数,如图1所示。
图1 函数库编写闪烁LED部分函数
(2)寄存器编写闪烁LED部分函数,如图2所示。
图2 寄存器编写闪烁LED部分函数
STM32库函数本质上是对外设寄存器直接编程,只是为了方便应用封装成了函数。所以用户的应用程序也可以绕过库函数,直接对寄存器编程。直接对寄存器编程的代码效率最高。不过,需要花费较多的时间学习和查阅STM32数据手册,这个过程繁琐、易错,难以移植。
3 STM32CubeMX图形化编程
■3.1 使用STM32CubeMX开发流程
使用STM32CUberMX开发流程如下:
(1)在STM32CubeMX中直观的配置MCU;
(2)生成开发工程;
(3)编写功能代码;
(4)配置目标选项。
■3.2 使用STM32CubeMX图形化编程实现闪烁的LED
(1)打开STM32CubeMX软件,选择ACCESS TO MCU SELECTOR新建工程,如图3所示。
图3 STM32CubeMX软件界面
(2)选择开发板的芯片及芯片的封装类型,如图4所示。
图4 软件界面芯片选择
(3)选择Pinout&Configuration菜单,点击Categorier/System Core/SYS,在Mode下面对应的选择,完成之后在右边的芯片就出现对应的标识,如图5所示。
图5 SYS配置选项
(4)配置时钟选项,如图6所示。
(5)配置芯片引脚输入/输出及其他特性(及LED2的连接引脚),如图7所示。
图6 时钟选项
图7 芯片引脚配置
(6)点击Clock Configuration(时钟源配置选项),对时钟源进行配置,如图8所示。
图8 时钟源配置
(7)点击Projiect Manager(工程管理)进行配置,首先在界面选择Project选项,如图9所示。
图9 工程管理配置
其次,点击Code Generator(代码生成器)进一步配置(重点),如图10所示。
图10 代码生成器配置
(8)点击GENERATE CODE创建工程,如图11所示。
图11 代码生成界面
(9)点击Open Projiect(打开工程),就自动的关联打开MDK-ARM V5软件并创建工程保存在文件夹里,如图12所示。
图12 打开工程文件
(10)在MDK-ARM软件里面找到main.c文件中主函数里的while循环语句添加两句语句就可以实现闪烁的LED了,如图13所示。
图13 代码修改界面
注意:所有自己编写的代码请放在/* USER CODE BEGIN XXX */ /* USER CODE END XXX */ 之间,这样我们修改工程的时候你自己写的代码就不会被删除。
4 总结
本文以STM32单片机控制闪烁的LED实验为例,分别以寄存器、库函数和STM32CubeMX 三种编程开发模式去实现闪烁的LED控制。从编程过程我们发现寄存器和库函数编程中都需要导入很多都文件,特别是IO口的初始化和时钟的配置都是需要花费很多的时间去理解;而使用STM32CubeMX图形化编程,我们只需要简单的图形化配置就可以完成代码的生成及实现。通过多年的教学实验,对三种STM32编程特点进行了总结和对比,如表1所示。
表1 三种编程特点对比表
总之,在实践教学中,我们使用STM32CubeMX图形化编程开发做设计,简单、易懂,学生的接受情况也比较好,相对之前的寄存器和库函数编程教学,取得了良好的效果。使用STM32CubeMX图形化进行配置,及使用HAL库进行开发,这样极大的缩短了新建工程的时间,而且时钟配置和中断配置都更加简单方便,更适合我们高职学生的学习。