报名参加活动,居然能够意外抽中~很是幸运。 感谢EEPW和ST提供的本次NUCLEO-F412ZG的测评机会!
工作人员联系后当天顺丰寄出,第二天傍晚就收到了。 包装很好,比较大的一个顺丰的盒子,拆开后就拿到了ST的原厂开发板,塑料包装,如下图所示:
拿到板子已经两天了,一直比较忙还没空来个开箱贴。趁今日周六,点亮下这个板子,并记录如下,供大家参考!
首先奉上完整源代码:LED-blink-zhw.7z.zip (去掉zip,请用7zip解压)
一、 开发环境
我是用Keil-MDK 开发的,电脑上本就安装有keil v5.36版本,这里就不再赘述。要使用Keil支持F412ZGT6这个mcu,需要安装对应的开发包。
另外,我使用HAL库开发,使用CubeMX工具方便地生成工程模板,需要安装F4xx的CubeMX的固件支持包。
1. Keil 支持包stm32f4xx_dfp下载地址:
可以通过keil中链接跳转到官网地址:
https://www.keil.arm.com/packs/stm32f4xx_dfp-keil/boards/
如下图所示为 2.17.1版,右下角点击下载,
或者使用如下的直链地址下载(文件大小275M):
https://www.keil.com/pack/Keil.STM32F4xx_DFP.2.17.1.pack
2. CubeMX 的固件支持包下载:
使用CubeMX生成工程模板和代码时,需要对应的固件支持包。 如下地址下载:
https://www.st.com.cn/zh/embedded-software/stm32cubef4.html#st-get-software
最新1.28.0版本,需要注册账号才能下载,大小611M
3. 官方手册pdf文档
从ST官网找到 neucleo-F412ZG 这块开发板的主页: https://www.st.com.cn/zh/evaluation-tools/nucleo-f412zg.html
主要是下载这个 UM1974文档,从中我们可以看到开发板的阵脚定义等资料,供开发时候使用
二、 使用CubeMX生成工程模板和初始代码
1. 功能要求:
既然开箱贴,就简单的点两个灯吧。 观察板子上,有3个用户LED可以供自己代码使用,分别是LD1(绿色)、LD2(蓝色)和LD3(红色。)那就让这三个灯来点亮并闪烁起来吧~~
查找手册,看看3个LED对应的GPIO针脚是哪些~
查找UM1974文档,如下:
很显然,对应的绿/蓝/红三个led引脚分别为PB0、PB7和PB14.
2. CubeMX软件配置
打开CubeMX,选择MCU型号F412ZGT6,开始工程配置。
首先配置时钟,查看手册:
默认使用的是 ST-Link板子上提供的时钟,固定频率8MHz,来作为主芯片的HSE。那就CubeMX中先配置RCC如下:
然后再在Clock Config页面配置主时钟为96MHz,自动解决依赖:
GPIO配置比较简单,找到PB0/PB7和PB14均配置为 GPIO_Out, 模式为推挽输出:
然后生成代码即可:
三、 亮灯和闪烁代码
CubeMX配置好工程后,直接用Keil打开工程,先完全编译一下,无error 无warning,完美!
下面稍微改下,让3个LED闪烁起来就可以了。
先找到 main.c 文件,这是帮我们生成的主函数,找到其中的 int main(void)入口函数,默认的主循环为空。我们只要在循环中加入控制LED闪烁的代码即可。这里我在每次循环中,让3个LED的状态均反转,然后等待500ms后进入下一个循环。 代码如下:
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration-----------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); HAL_Delay(500); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
从上面代码中我们可以看到,CubeMX帮我生成了 HAL库初始化代码 HAL_Init(); 帮我们配置了系统时钟 SystemClock_Config(); 还帮我们初始化了用到的GPIO引脚 MX_GPIO_Init(); 大大简化了我们的代码工作量。只要短短3-4行代码,就完成了我们的点灯任务~~确实方便!
四、 下载并测试
ST官方的 NUCLEO开发板,方便之处就在于 板子上自带了调试器 ST-Link,只要一根usb线就可以供电和下载、调试,非常好用。
点灯代码开发好后,再次编译无错误,点击keil工具栏上的LOAD图标进行代码下载。首次可能会提示 ST-Link的固件版本低,询问是否在线升级。我升级后再次点击LOAD,非常顺利下载到了板子上。 按右上角黑色Reset按键,代码就跑起来了,红黄绿三色灯点亮并闪烁起来啦~~~
完结,撒花~#
奉上完整源代码:LED-blink-zhw.7z.zip
-------------------------------------------------------------------------------
等有空继续把板子用起来,基于板子的 STM32F412芯片,移植一个嵌入式操作系统eCos来跑工业通讯协议,敬请期待!谢谢大家。
点亮板子,比较简单。谬误之处请大家指正!再次感谢EEPW!