一、简单开箱
感谢电子发烧友平台组织本次试用活动,也感谢广州市星翼电子科技有限公司为我们提供的 正点原子STM32探索者V3开发板 。
正点原子开发板的做工还是非常扎实的,所以这里还是贴两张实拍图作一个简单的开箱。
拆开快递纸箱子之后,可以看到正点原子开发板的黑色包装盒子,非常大气:
打卡包装盒,可以看到开发板和一个白色纸盒(12V电源适配器):
包装盒内除了开发板12V电源适配器外,还有几个配件位于固定模具下面:
- 一根USB Type-C数据线;
- 一个红外遥控器;
- 两根杜邦线;
打开泡沫袋,可以看到开发板正面,非常精美:
开发板正反两面都装有透明亚克力,这样既可以保护板上的元件不易受损,也让开发板看起来更精致、美观,同时还可以防尘。
可以看到主控芯片的型号是——STM32F407ZGT6。
二、资料下载
正点原子官网提供了正点原子STM32探索者V3开发板配套资料,网页链接: http://www.openedv.com/docs/boards/stm32/zdyz_stm32f407_explorerV3.html
比较重要的是:
其中,原理图、硬件资料是必须下载的,其他文档资料可按需下载。
三、环境搭建
接下来是搭建 STM32CubeMX + Keil 开发环境,基本上也没啥难度。
3.1 安装Keil MDK
Keil产品下载页面: https://www.keil.com/download/product/
单击“MDK-ARM”,进入MDK最新版下载页面:https://www.keil.com/demo/eval/arm.htm
当前最新版5.38a本,下载链接: https://armkeil.blob.core.windows.net/eval/MDK538a.EXE
PS: 国内下载速度较慢,可以用某雷加速下载。
3.2 激活Keil MDK
KeyGen程序(可以生成2032年的,亲测有效): https://pan.baidu.com/s/1oZPXu8OkkZ2EXuePwGbu0A?pwd=keil
下载完成后,解压开keil_keygen_2032。
Keil MDK安装好了之后,打开Keil uVision5。通过 File→License Management菜单,打开License Management界面。在License Management界面中,复制CID。
打开keil_keygen_2032.exe,粘贴CID,Target选择ARM,点Generate生成License ID Code(LIC)。将生成的LIC复制到Keil的License Management界面,粘贴到“New License ID Code”文本框中,点”Add LIC”即可激活Keil。
3.3 安装STM32CubeMX
首先需要下载STM32CubeMX。
STM32CubeMX下载页面:https://www.st.com/zh/development-tools/stm32cubemx.html
需要登录ST账号之后才能下载,如果没有ST账号,则需要先注册ST账号。
安装STM32CubeMX没啥难度,按照安装向导,一路下一部就好了。
3.4 安装STM32F4系列MCU的Keil支持包
Keil MDK 官方提供了STM32F4系列MCU支持包,下载页面:https://www.keil.com/dd2/Pack/
PS:此页面上厂商和产品比较多,可以使用Ctrl+F在网页上快速查找:“STM32F4”
STM32F4系列MCU的Keil MDK支持包下载链接为: https://keilpack.azureedge.net/pack/Keil.STM32F4xx_DFP.2.17.0.pack
下载完成后,如果你已经成功安装了Keil,则直接双击pack文件,按照向导提示即可安装该支持包。
安装好Keil MDK、STM32CubeMX和STM32F4系列MCU的Keil支持包,STM32CubeMX+Keil开发环境就搭建完成了。
四、GPIO点灯
接下来就是使用STM32CubeMX+Keil开发环境进行点灯了,这里建议另外配备一个硬件调试器,CMSIS-DAP、DAPLink、JLink或STLink均可。
4.1 查阅开发板原理图
解压网盘资料的**【正点原子】探索者STM32F407开发板V3 资料盘(A盘)\3,原理图.zip** 文件,其中的 Explorer STM32F4_V3.2_SCH.pdf 文件即为开发板原理图。
点灯之前,我们需要在开发板原理图上找到LED灯相关的部分。
可以看到:
- LED0连接在PF9引脚,低电平点亮;
- LED1连接在PF10引脚,低电平点亮;
4.2 创建STM32CubeMX项目
打开STM32CubeMX,界面如下图:
点击New Project下方的“Access to MCU Selector”,弹出MCU/MPU选择界面,如下图:
在左上方的Commercial Part Number处输入主控芯片型号——STM32F407ZGT6 后,鼠标选中右下角的STM32F407ZGT6,界面如下图:
此时,右上角的Start Project按钮从灰色变为了蓝色(可以点击的状态),点击Start Project开始STM32CubeMX项目:
此时,STM32CubeMX项目已创建成功,按Ctrl+S,选择合适的路径,可以保存项目,例如我选择的目录为D:\Hardware\ST\ExplorerV3_STM32F407\Elecfans_01\Blinky,保存到的文件名为Blinky.ioc。
4.3 配置系统时钟和引脚功能
接下来在STM32CubeMX中配置系统时钟源和LED引脚功能。
首先, 设置系统时钟源 。具体操作为,展开左侧“System Core”菜单,选中“RCC”,
修改中间的RCC Mode and Configuration配置:
- High Speed Clock 修改为 “Crystal/Cemaric Resonator”
- Low Speed Clock 修改为 “Crystal/Cemaric Resonator”
即两个时钟源都设置为外部晶振,响应的,右侧引脚视图中四个引脚由灰色变为了绿色,表示已经被设定了功能。
Ctrl+S保存。
接着, 设置系统时钟配置 。
切换到Clock Configuration标签页,HCLK值输入100,回车,CubeMX将会自动计算相关参数,如下图所示:
Ctrl+S保存。
最后, 设置LED引脚功能 。
切回到Pinout&Configuration标签页,先找到PF9,下拉选择引脚功能为GPIO_Output,如下图所示:
再将鼠标移动到PF9上,右键点击,如下图所示:
选择Enter User Label,输入LED0(和原理图中的标号对应);
类似的,将PF10设置为GPIO_Output功能,并为其设置User Label为LED1,设置完成后,如下图所示:
Ctrl+S保存。
4.4 生成Keil项目
接下来,使用STM32CubeMX生成Keil项目。
首先,STM32CubeMX切换到Project Manager标签页,然后将Project -> Toolchain/IDE 设置为MDK-ARM,如下图所示:
接着,左侧点击Code Generator,如下图所示:
图中,已进行了如下设置:
- STM32Cube MCU packages and embedded software packs,选择Copy only necessary library files,即只拷贝必要的文件,默认是第一个拷贝所有库文件到项目中;
- Generated files,选择Generate peripheral initialization as a pair of '.c/.h' files per peripheral,即每个外设的初始化生成独立的.c/.h文件,默认没有选择这个选项,各个外设初始化代码也会在main.c里面;
继续Ctrl+S保存。
最后,点击右上角的Generate Code,就会开始生成代码;代码生成完成后,会弹出提示框,告诉你代码已经生成了,如下图所示:
这里点击Open Folder即可打开文件夹,可以查看到生成目录及其文件:
4.5 打开Keil项目
打开其中的MDK-ARM目录,可以看到如下文件:
其中的Blinky.uvprojx即为Keil的项目文件。
双击打开Blinky.uvprojx,如果已经安装了Keil,将会使用Keil打开项目,如下图所示:
左侧Project视图中,可以看到整个项目的文件结构。
4.6 编译Keil项目
点击Keil的Build图标,或者按F7快捷键,将会开始编译:
由于我安装的Keil版本比较新,这里直接编译会报错,如下图所示:
报错说没有ARM-Compiler Version 5。
【解决方法】切换默认编译器,具体操作为:
- 鼠标右击Project视图中的Blinky目录,选择“Options for Target - Blinky”,弹出菜单,如下图所示:
- 在弹出的Options for Target - Blinky界面中,下拉ARM Compiler,选择Use default compiler version 6,即使用默认的版本6编译器;
- 点击底部的OK,确认。
完成上述步骤后,再次点击编译按钮,将会可以正常编译,此时Build Output输出如下:
截至到这里,Keil项目中的所有代码都是STM32CubeMX自动生成的,可以正常编译通过,说明我们的开发环境搭建正常没有问题。
4.7 编写点灯代码
接下来在Keil中,添加点灯代码。
打开main.c文件,找到main函数中的while(1)循环,添加如下3行代码行:
HAL_Delay(1000);
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
如下图所示:
Ctrl+S保存;
再次编译,可以编译通过,则表示代码没有语法错误。
4.8 准备开发板和调试器
接下来进入压轴戏,下载程序到我们的 正点原子STM32探索者V3开发板 。
开始之前,首先为连接开发板连接电源和调试器:
- 电源,可以使用12V电源适配器查到DC_IN口(适配器插在220V市电上),也可以使用USB Type-C线插到USB_UART口(另一端连接到PC);
- 调试器,我这里使用的是JLINK调试器,连接在板子的JTAG口上(另一端连接到PC);
4.9 修改Keil项目的调试设置
完成上述硬件连接后,还需要修改Keil项目的调试设置,具体操作如下(这里以JLink为例):
- 鼠标右击Project视图中的Blinky目录,选择“Options for Target - Blinky”,弹出菜单,如下图所示:
- 在弹出的Options for Target - Blinky界面中,切换到Debug标签页面,如下图所示:
- Use右边的下拉,选择J-LINK/J-TRACE Cortex,然后点击右侧的Settings,弹出Cortex JLink/JTrace Target Driver Setup界面,如下图所示:
这里看到成功识别了 ARM CoreSight JTAG-DP,说明JLINK调试器已经成功识别到主控芯片了。
- 点击界面中的Auto Clk,可以自动选择最佳速度,弹框如下,点击确定即可:
- 切换到Flash Download标签页,勾选Reset and Run,便于调试,如下图所示:
- 最后点击确定,回到Options for Target - Blinky界面,点击OK,保存设置;
4.10 下载程序到开发板
完成前面的一些列操作之后,就可以点灯了。
PS:虽然,这些东西对于我们这些玩板子的发烧友来说非常简单,对于新手小白还是有点繁琐的,这是我为什么要详细记录下来的原因。
点击Keil中的下载按钮,或者F8快捷键,将会开始下载,如下图:
下载完成后,Build Output可以看到成功的提示:
并且,可以看到开发板上的LED灯闪烁了:
五、参考链接
- 正点原子资料下载中心 STM32F407探索者开发板V3: http://www.openedv.com/docs/boards/stm32/zdyz_stm32f407_explorerV3.html
- STM32CubeMX下载页面: https://www.st.com/zh/development-tools/stm32cubemx.html
- STM32F4系列MCU的Keil MDK支持包: https://keilpack.azureedge.net/pack/Keil.STM32F4xx_DFP.2.17.0.pack