一、板载ST-LINK仿真器
        NUCLEO-G070RB开发板有一个板载ST-LINK仿真器,需要下载ST官方的驱动en.stsw-link009,安装到电脑才能识别,因为板载ST-LINK仿真器的驱动版本是st-link_v2.1。而单独安装st-link_v2_usbdriver是不能识别的。

二、第一个程序
        ST官网下载NUCLEO-G070RB开发板的示例代码,所有的工程都是由STM32CubeMX工具生成,保存格式为MDKV5)和IAR两种版本。由于本人习惯MDK,且已经安装MDK 4.60MDK5.23,如下图:
MDK.png
下面进入工程目录,打开第一个工程GPIO_IOToggle.uvprojx
GPIO_IOToggle DIR.png
双击打开后,如下图所示:
GPIO_IOToggle _RJ.png
选择ST-linkDebugger
选择ST-link.png
然后选择Flash-> Download
下载程序.png
下载完成后,发现LED开始闪烁。
由于系统时钟是1ms,因此每秒LED闪烁5次,每次点亮和熄灭时间都是0.1s属于人眼可以分辨的状态。

然后打开工程GPIO_EXTI.uvprojx,同样的方法下载到开发板。


初始状态,LED4处于灭的状态。如下图:
LED4mie.jpg

按一下B1按键后,LED4点亮
LED4 light.png
再按一次B1按键,LED4再次熄灭。

至此,第一个工程已经测试完毕。

三、测试串口
3.1、打开串口工程
串口工程.png
打开后进行编译,如下:
打开串口工程.png
由于开发板所给的串口程序是需要2NUCLEO-G070RB开发板的串口互联来完成测试的,而串口发送完成和接收完成使用的是同一个全局变量UartReady。而本人只有一个开发板,需要修改程序如下:
        将等待接收完成的while死循环屏蔽掉,如下图
屏蔽串口接收完成判断.png
由初始化部分MX_USART1_UART_Init()-> HAL_UART_Init(&huart1) -> HAL_UART_MspInit(huart) 得知,本程序初始化了USART1,并使用了PA9和PA10两个管脚,经查看原理图得知PA9接到CN5的第一脚,PA10接到CN9的第三脚,如下图:
串口连接.png
其他串口特性初始化如下:
串口属性.png

现用杜邦线将CN5的第一脚与CN9的第三脚相连,如下图:
CN5_pin1_CN9_pin3.png
点击Debug进入程序,打上2个断点,如下所示:
串口程序断点.png
如果接收的数据和发送不一致,那么就会进入第一个断点,如果相同,就进入下一个断点。
        现在开始全速运行程序,LED40.2s闪烁一次,然后按下B1按键,程序开始进入发送程序,发送完毕后,也即接收完成,此时判断接收和发送的数据是否相同,结果如下:
接收判断正确.png
为进一步确认数据完全相同,打开监控Watch1,添加aRxBufferaTxBuffer,显示如下:
aTxBuffer
aTxBuffer.png
aRxBuffer
aRxBuffer.png
经仔细比对,接收数据和发送数据完全相同!

3.2、测试高速串口
本次申请开发板的主要目的就是测试一下STM32G0系列的高速串口。

现将串口速度调整为2Mbps,执行结果如下:
说明STM32G0系列的USART12Mbps下没有问题。

现将串口速度调整为6Mbps,程序死在初始化接到,经查,初始化USART1时候出现错误:
串口初始化错误1.png
进入(HAL_UART_Init(&huart1)函数,进行仔细查看,发现在HAL_StatusTypeDefUART_SetConfig(UART_HandleTypeDef *huart)函数中,计算波特率时候出错,如下:
波特率计算出错.png
UART_BRR_MIN = 0x00000010UART_BRR_MAX  = 0x0000FFFF
经查手册STM32G070RB user manu.pdf,发现要在6Mbps下运行,需要满足2个条件,一是必须使用DMA,二是必须使用8位采样。由于本案例已经使用DMA,所以现将USART1初始化部分更改如下:
采样方式.png
然后重新编译运行,并按一下按键B1,程序成功执行到如下位置。
查看接收和发送缓存区,接收数据和发送数据确实相同。

至此,STM32G070USART16Mbps下的试验全部完成。下一步准备应用到本公司的远程IO设备中,以更换原来的STM32F051C8T6

万分感谢斑主,给予该开发板,让我充分了解到STM32G070的性能。其他性能,诸如USBADCTimerSPI以及在开发板上运行FreeRTOS等有待下一次进行测试。