本帖最后由 jinglixixi 于 2025-7-9 10:30 编辑
STM32U385RG 开发板是一款基于 Arm® Cortex®-M33 内核的Nucleo-64 开发工具,它具有低功耗、安全性高的特点。此外,它还板载了 ST-LINK/V3E 调试器,并支持 USB、SPI、CAN FD 等通信接口方式。
该开发板的外观如图1所示,是采用双面器件布局,但以正面为主,背面只是小的阻、容器件。
图1 外观
在上电后,可见到电源和通信指示灯被点亮,并伴有绿色LD3的快速闪烁,见图2所示。
若按下蓝色的用户键,会一次改变闪烁的频率。
图2 上电效果
在软件开发方面,它支持以IAR、MDK及STM32CubeIDE进行开发。
在选取MDK为开发工具的情况下,下载下面3个文件既可进行开发工作。其中,压缩文件stm32cubeu3-1-2-0中是供用户学习和测试的例程,Keil.STM32U5xx_DFP.3.1.0则是使用MDK开发所需的芯片支持升级包,文件1743576327551937则是开发板的原理图。
图3 所需文件
至于MDK,选取V5.36的版本即可进行编译和下载,其界面如图4所示。
图4 软件界面
在完成芯片支持升级包的安装后,可呈现出对芯片的支持状态,见图5所示。
图5 芯片支持
在完成编译的情况下,其结果如图6所示。
图6 完成编译
在连接开发板的状态下,其呈现的状态如图7所示。
图7 完成连接
在如图8所示的烧录算法下,执行程序下载则如图9所示,说明下载成功。
此时,即可见到开发板上的LED2闪烁起来,见图10所示。
图8 烧录算法
图9 完成下载
图10 运行效果
产生LED2闪烁的主程序为:
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_ICACHE_Init();
- LED2_GPIO_CLK_ENABLE();
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
- GPIO_InitStruct.Pin = LED2_PIN;
- HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
- while (1)
- {
- HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
- HAL_Delay(100);
- }
- }
对LED2的相关定义如下:
#define LED2_PIN GPIO_PIN_5
#define LED2_GPIO_PORT GPIOA
#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
结合LED2的电路来看,两者是完全统一的。
图11 LED2电路
如果进行功耗检测的话,其功耗情况如图12所示。
图12 功耗检测
若要实现LED2闪烁及串口输出“Hello 21ic, Hello NUCLEO-U385RG-Q!"的效果,则主程序的内容为:
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- BSP_LED_Init(LD2);
- MX_GPIO_Init();
- MX_USART1_UART_Init();
- MX_ICACHE_Init();
- printf("\n\r Hello 21ic, Hello NUCLEO-U385RG-Q!\n\r");
- while (1)
- {
- BSP_LED_Toggle(LD2);
- HAL_Delay(500);
- }
- }
相应的串口初始化函数为:
- static void MX_USART1_UART_Init(void)
- {
- huart1.Instance = USART1;
- huart1.Init.BaudRate = 115200;
- huart1.Init.WordLength = UART_WORDLENGTH_8B;
- huart1.Init.StopBits = UART_STOPBITS_1;
- huart1.Init.Parity = UART_PARITY_NONE;
- huart1.Init.Mode = UART_MODE_TX_RX;
- huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- huart1.Init.OverSampling = UART_OVERSAMPLING_16;
- huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
- huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- if (HAL_UART_Init(&huart1) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
- {
- Error_Handler();
- }
- }
该程序的实现效果如图13所示,说明它符合预期的设计要求。
图13 输出测试
演示视频:
|