本帖最后由 zzzw0 于 2019-6-10 11:38 编辑

一、连接测试
将NUCLEO-L412KB开发板通过MICRO-USB数据线连接上PC,可以看到已经识别出了一个ST-LINK和一个虚拟串口,同时还识别出了一个存储设备。
CONNECT.png
CONNECT1.png
这是因为开发板背面的ST-LINK将自身配置为一个USB复合设备,除基本的下载器、调试器功能外,还具有虚拟串口的功能。而存储设备功能是为了实现MBED开发。
在硬件上,从开发板的原理图可以看到,ST-LINK与STM32L412K通过串行方式(SWD)相连,即只需要使用SWCLK和SWDIO。ST-LINK还实现了USB转虚拟串口功能,ST-LINK与STM32L412K通过串口连接即可。MBED官网尝试了很久仍然连接不上,所以暂时不能展示MBED开发。 clock.png
二、STM32CubeMX配置
下载安装最新版本的Package,此处下载安装的是L4 1.13.0。
package.png 可以直接选择NUCLEO-L412KB开发板
select board.png
select board2.png
可以看到默认已经配置了外部高速时钟源、外部低速RTC时钟源、串行下载调试接口(SWD)、串口、板载LED。与常见的外部高速时钟源不同的是,STM32L412KB不能基于晶振作为高速时钟源,从原理图上可以看到,在开发板上使用的是由ST-LINK提供的内部时钟输出(MCO)。
select board3.png
时钟结构展示保持默认配置,设置好工程名和存放位置,选择好开发环境,我一般使用Keil5,所以此处选择MDK-ARM V5,然后就可以点击生成工程了。
name.png

三、Keil配置
在Keil中,为实现对STM32L412K的仿真调试等功能,需要安装好STM32L4系列的器件包(Device Family Package)。需要在Keil官网上下载2.1.0或以上的版本,因为在2.1.0才新加入了L412的支持,此处下载安装了2.2.0版本。
PACK1.png
PACK2.png
在Keil中,我使用的版本是5.26,选择使用新版本的V6编译器,对于STM32CubeMX生成的工程,相比于V5编译器,速度快了不少。
keil1.png
在Dugger下载设置中
keil2.png


编写程序使得板载LED以1000ms间隔闪烁,在每隔1000ms串口输出信息。
为实现使用printf函数方便的完成串口调试,需要重定向printf函数中使用的fputc函数至串口2输出,需要添加如下代码段:
/* USER CODE BEGIN 0 */
  • #include <stdio.h>
  • int fputc(int ch, FILE *f)  
  • {  
  •   HAL_UART_Transmit(&huart6,(uint8_t*)&ch,1,HAL_MAX_DELAY);
  •   return ch;
  • }
  • /* USER CODE END 0 */
  • 复制代码
    在main函数中,添加如下代码段:
    /* Infinite loop */
  •   /* USER CODE BEGIN WHILE */
  •   while (1)
  •   {
  •     /* USER CODE END WHILE */
  •     HAL_Delay(1000);
  •     HAL_GPIO_TogglePin(LD3_GPIO_Port,LD3_Pin);
  •     uint8_t cnt;
  •     printf("test %d\r\n",cnt++);
  •     /* USER CODE BEGIN 3 */
  •   }
  •   /* USER CODE END 3 */
  • 复制代码
    四、测试结果
    开发板上的LD3 LED每隔1000ms改变亮灭状态,在串口调试助手中,每隔1000ms接收到一次信息。
    uart1.png