【STM32U3 评测】介绍、环境搭建、工程测试
本文介绍了 NUCLEO-U3C5ZI-Q 开发板的相关信息,包括外观、参数特点、资源分布、原理图等,并搭建 STM32Cube 开发环境,进行闪灯和串口打印等工程测试。
介绍
Nucleo-U3C5ZI-Q 开发板为用户提供了一种经济实惠且灵活的方法,用户可以通过选择STM32微控制器提供的多种性能与功耗特性组合,来尝试新概念并构建原型。对于兼容的开发板,内部或外部SMPS可显著降低运行模式下的功耗。
Nucleo-U3C5ZI-Q 开发板通过多个扩展连接器提供了多种专用屏蔽,助力用户轻松扩展 Nucleo 开放式开发平台的功能:Arduino® Uno V3连接器,可在某些电路板上作为 ST Zio 扩展连接器的组成部分进行扩展;ST morpho接头,提供对微控制器I/O引脚的访问。
集成 ST-LINK 调试器/编程器,无需额外探头。
包装

NUCLEO-U3C5ZI-Q 开发套件包括主板和说明书;
主板外面有防静电袋和瓦楞纸包裹,起到很好的防静电和减震作用,避免运输过程中的振动和摩擦影响;

防静电袋贴有醒目的标签;

开发板
Top view

Bottom view

参数特点
- 通用特性
- 采用 LQFP144 封装的 STM32 微控制器
- 3个用户LED
- 1个用户按钮和1个复位按钮
- 32.768 kHz晶振
- 板载连接器:
- 灵活的电源选项:ST-LINK USB VBUS、USB连接器或外部电源;
- 提供全面的免费软件库和示例,可通过STM32Cube MCU软件包获取;
- 支持多种集成开发环境 (IDE),包括IAR Embedded Workbench®、MDK-ARM,以及STM32CubeIDE
- 开发板功能
- USB OTG
- 用户按钮、复位按钮
- 板载连接器:
- ARDUINO® Uno V3连接器或包括ARDUINO® Uno V3的ST Zio扩展连接器
- 具有 USB Type-C® 接口的 USB
- M.2 Key A 串行存储器连接器
- CAN FD 插头
- 板载ST-LINK 调试器/编程器,支持USB重新枚举功能:大容量存储器、虚拟COM端口和调试端口;
主控
主控为 STM32U3C5ZIT6Q ;
超低功耗 Arm Cortex-M33 搭载 TrustZone MCU,96 MHz,2 MB 闪存,640 KB 内存,HSP,I3C,SMPS,加密存储器。

详见:STM32U3C5ZI | 产品 - 意法半导体 .
原理图

MCU

外设

接口

ST-LINK

上电
使用 Type-C 数据线连接开发板和电脑;
开发板运行出厂默认程序,蓝色 LED3 快速闪烁;

环境搭建

硬件连接
使用 Type-C 数据线连接开发板和电脑;

升级 STLINK
为了确保工程调试和运行的顺利进行,需要将板载 STLINK-V3 固件升级至最新版本。
- 打开 STM32CubeProgrammer 软件,右侧切换为 ST-LINK 模式,自动识别板载调试器信息;
- 点击固件升级按钮,在弹出的对话框中选择进入升级模式,升级 STLINK 固件;

工程测试
加载官方示例工程 GPIO 和 UART 以验证开发环境,包括工程创建、关键代码、编译运行等流程。
工程创建
- 打开 STM32CubeMX 软件,选择从示例创建工程;

- 在左侧 Board 标签下搜索并选择 NUCLEO-U3C5ZI-Q 型号开发板;
- 右下方找到 GPIO_IOToggle 工程,点击右侧下载按钮;
- 待下载完成,点击右上角 Start Project 按钮,并选择工程路径和 IDE;

工程代码
展开左侧工程文件目录,双击打开 Application/User/main.c 文件,关键代码如下
#include "main.h"
/* USER CODE BEGIN PV */
static GPIO_InitTypeDef GPIO_InitStruct;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_ICACHE_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
/* Initialize all configured peripherals */
MX_ICACHE_Init();
/* USER CODE BEGIN 2 */
/* -1- Enable GPIO Clock (to be able to program the configuration registers) */
LED1_GPIO_CLK_ENABLE();
LED2_GPIO_CLK_ENABLE();
/* -2- Configure IO in output push-pull mode to drive external LEDs */
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Pin = LED1_PIN;
HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = LED2_PIN;
HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
/* Insert delay 100 ms */
HAL_Delay(100);
HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
/* Insert delay 100 ms */
HAL_Delay(100);
}
/* USER CODE END 3 */
}
保存代码。
编译上传
- 右键工程文件夹,选择构建项目,或点击工具栏小锤子按钮;
- 构建完成后,无报错产生,点击工具栏运行按钮,自动上传固件至开发板并运行;

效果演示
LED1 和 LED2 交替闪烁;

串口
加载官方示例工程 UART 以验证开发环境,包括工程创建、关键代码、编译运行等流程。
工程创建
- 打开 STM32CubeMX 软件,选择从示例创建工程;
- 在左侧 Board 标签下搜索并选择 NUCLEO-U3C5ZI-Q 型号开发板;
- 右下方找到 UART_Console 工程,点击右侧下载按钮;
- 待下载完成,点击右上角 Start Project 按钮,并选择工程路径和 IDE;

工程代码
展开左侧工程文件目录,双击打开 Application/User/main.c 文件,关键代码如下
#include "main.h"
UART_HandleTypeDef huart1;
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ICACHE_Init(void);
static void MX_USART1_UART_Init(void);
/* USER CODE BEGIN PFP */
#if defined(__ICCARM__)
__ATTRIBUTES size_t __write(int, const unsigned char *, size_t);
#endif /* __ICCARM__ */
#if defined(__ICCARM__)
/* New definition from EWARM V9, compatible with EWARM8 */
int iar_fputc(int ch);
#define PUTCHAR_PROTOTYPE int iar_fputc(int ch)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#elif defined (__CC_ARM) || defined(__ARMCC_VERSION)
/* ARM Compiler 5/6 */
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#elif defined(__GNUC__)
int __io_putchar(int ch);
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
int __io_getchar(void);
#define GETCHAR_PROTOTYPE int __io_getchar(void)
#endif /* __ICCARM__ */
int main(void)
{
HAL_Init();
SystemClock_Config();
BSP_LED_Init(LD2);
MX_GPIO_Init();
MX_ICACHE_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
/* Output a message on Hyperterminal using printf function */
printf("\n\r UART Printf Example: retarget the C library printf function to the UART\n\r");
printf("** This message is printed using printf() function. ** \n\r");
/* User is prompted to enter characters on terminal input.
Entered characters are echoed on terminal output until a CR character is entered */
printf("\n\r UART Getchar Example: retarget UART input to the C library getchar function\n\r");
printf("Enter a string then press ENTER \n\r");
fflush (stdout);
uint8_t receivedchar;
receivedchar= ' ';
while(receivedchar!= '\n' && receivedchar != '\r')
{
#if defined (__ICCARM__) || defined (__ARMCC_VERSION)
receivedchar = fgetc(stdin);
printf("%c ",receivedchar);
#elif defined(__GNUC__)
receivedchar = __io_getchar();
#endif /* __ICCARM__ || __ARMCC_VERSION */
}
/* End of example */
printf("\n\rEnd of example\n\r");
fflush (stdout);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
保存代码。
效果演示
- 运行串口调试助手软件,连接 STLINK-V3 对应的虚拟串口,配置波特率 115200 bps,打开串口;
- 短按板载复位按键,串口输出 UART 初始化信息;
- 发送字符串,开发板回复相同语句;

总结
本文介绍了 NUCLEO-U3C5ZI-Q 开发板的相关信息,包括外观、参数特点、资源分布、原理图等,并搭建 STM32Cube 开发环境,进行闪灯和串口打印等工程测试,为相关产品的快速开发和功能测试提供了参考。
大佬动作挺快的嘛,我也是今天才收到的
大佬动作挺快的嘛,我也是今天才收到的