betway88必威体育
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【测评】NUCLEO-F412ZG开箱+蓝绿红3LED点亮并闪烁

共3条 1/1 1 跳转至

【测评】NUCLEO-F412ZG开箱+蓝绿红3LED点亮并闪烁

菜鸟
2024-08-10 16:27:06     打赏

       报名参加活动,居然能够意外抽中~很是幸运。 感谢EEPW和ST提供的本次NUCLEO-F412ZG的测评机会!

工作人员联系后当天顺丰寄出,第二天傍晚就收到了。 包装很好,比较大的一个顺丰的盒子,拆开后就拿到了ST的原厂开发板,塑料包装,如下图所示:

image.png

拿到板子已经两天了,一直比较忙还没空来个开箱贴。趁今日周六,点亮下这个板子,并记录如下,供大家参考!

首先奉上完整源代码: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版,右下角点击下载,

image.png

或者使用如下的直链地址下载(文件大小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

image.png

最新1.28.0版本,需要注册账号才能下载,大小611M

3.      官方手册pdf文档

从ST官网找到 neucleo-F412ZG 这块开发板的主页: https://www.st.com.cn/zh/evaluation-tools/nucleo-f412zg.html

image.png

主要是下载这个 UM1974文档,从中我们可以看到开发板的阵脚定义等资料,供开发时候使用

二、 使用CubeMX生成工程模板和初始代码

1.      功能要求:

既然开箱贴,就简单的点两个灯吧。 观察板子上,有3个用户LED可以供自己代码使用,分别是LD1(绿色)、LD2(蓝色)和LD3(红色。)那就让这三个灯来点亮并闪烁起来吧~~

查找手册,看看3个LED对应的GPIO针脚是哪些~

查找UM1974文档,如下:

image.png

很显然,对应的绿/蓝/红三个led引脚分别为PB0、PB7和PB14.

2.      CubeMX软件配置

打开CubeMX,选择MCU型号F412ZGT6,开始工程配置。

首先配置时钟,查看手册:

image.png

默认使用的是 ST-Link板子上提供的时钟,固定频率8MHz,来作为主芯片的HSE。那就CubeMX中先配置RCC如下:

image.png

然后再在Clock Config页面配置主时钟为96MHz,自动解决依赖:

image.png

GPIO配置比较简单,找到PB0/PB7和PB14均配置为 GPIO_Out, 模式为推挽输出:

image.png

然后生成代码即可:

image.png


三、  亮灯和闪烁代码

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按键,代码就跑起来了,红黄绿三色灯点亮并闪烁起来啦~~~

image.png

完结,撒花~#

奉上完整源代码:LED-blink-zhw.7z.zip 

-------------------------------------------------------------------------------

等有空继续把板子用起来,基于板子的 STM32F412芯片,移植一个嵌入式操作系统eCos来跑工业通讯协议,敬请期待!谢谢大家。

点亮板子,比较简单。谬误之处请大家指正!再次感谢EEPW!




关键词: NUCLEO-F412ZG     CubeMX     点亮    

专家
2024-08-10 22:56:13     打赏
2楼

方便快捷


专家
2024-08-11 00:49:55     打赏
3楼

感谢楼主分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]