简介
这篇文章介绍如何使用CubeMx创建一个简单的LED工程,该工程是一个MDK工程,当然也可以使用CubeMx创建基于其他编译器的工程。作为入门,我们的第一个工程仅点亮一个LED。并且在这个工程上进行修改,增加一个按键功能,展示CubeMx修改工程的功能。
硬件准备
笔者使用正点原子战舰V3开发板,使用任何主控是STM32的硬件设备并且带有GPIO控制的LED和按键,就可以,硬件上没有什么限制。
软件准备
1.生成工程,并点亮LED
2.修改现有工程,将GPIO输入功能,也就是按键功能加入工程
第一部分 新建工程点亮LED
打开CubeMx,选择ACCESS TO SELECTOR
刚安装好第一次点击会进入一个加载页面,他是链接官网更新芯片库的,如果加载时间过长,也可以关闭加载页面,也能直接进入我们下一步要操作的页面
在右上方选择你的硬件装置搭载的芯片,然后在左下方选择你要用的芯片并双击进入下一个页面。
可以通过界面发现,CubeMx工程的配置步骤非常清晰,从左到右分别为引脚与外设配置,时钟树配置,工程相关配置。从上到下也是系统核心功能到外设的配置。最右方的区域用图形化的方式配置相关的引脚。
1.第一步需要配置时钟源,我在这里选用外部晶振作为外部时钟源。左侧选择后,右侧会自动选择外部时钟源要用的引脚
2.根据硬件选择LED使用的引脚,找到pcb的原理图
我使用LED1,发现他的引脚是E5,在CubeMx右方相应位置,左键选择
3.在左方选择GPIO,进行详细配置
User Label可以自己为这个引脚命名,到时候这个命名会出现在代码中易于操作
4.引脚配置完了,接下来配置时钟树
时钟频率,f103zet6最高为72Mhz,通过配置,最后使APB外设的时钟频率达到最高就可以了
5.配置工程相关
有两个地方要注意,生成工程的路径不能有中文,生成的IDE版本要正确,我这里选择的是MDK5.
6.配置完这些步骤后就可以点击GENERATE CODE生成工程了
7.打开工程
1 | /* Exported functions prototypes ---------------------------------------------*/ |
会发现main.h里自动生成了宏定义,到时候可以通过宏定义操作LED
1 | /* USER CODE BEGIN WHILE */ |
在main.c里编写代码如上,下载程序到硬件上(下载方式自行决定),就可以看到一个闪烁的LED
第二部分,修改工程增加按键
1.在主页面打开刚刚生成的工程
2.根据原理图选择相应的引脚,我这里用的是KEY0
在工程中选择E4引脚
由原理图可知,按键应该上拉,按键的配置如图所示,然后直接点击generate code并打开工程就行了
3.我们会发现原来用户的代码还在,但是CubeMx自动生成了GPIO输入的初始化代码,这样我们只用关心真正的应用代码部分就可以了。
1 | while (1) |
使用以上代码,编译下载到硬件中,就可以看到LED随按键的按下而亮灭
总结
这部分内容具体使用了CubeMx创建工程,并初步展示了CubeMx修改工程组件的能力,CubeMx不仅可以添加功能,而且可以更改工程使用的芯片等等。而这些操作都是不会破坏用户层的代码的,这就是CubeMx的强大之处.下一部分我会展示使用CubeMx配置串口功能,并使用GPIO外部中断完成按键功能。