[STM32U3] 【STM32U385RG 测评】+ 初识篇

[复制链接]
 楼主| jinglixixi 发表于 2025-7-9 10:22 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2025-7-9 10:30 编辑

STM32U385RG 开发板是一款基于 Arm® Cortex®-M33 内核的Nucleo-64 开发工具,它具有低功耗、安全性高的特点。此外,它还板载了 ST-LINK/V3E 调试器,并支持 USB、SPI、CAN FD 等通信接口方式。
该开发板的外观如图1所示,是采用双面器件布局,但以正面为主,背面只是小的阻、容器件。
504660503b864a76dacd8abc55ecc57a
图1 外观

在上电后,可见到电源和通信指示灯被点亮,并伴有绿色LD3的快速闪烁,见图2所示。
若按下蓝色的用户键,会一次改变闪烁的频率。
b48a2782ccef35d094654e8452ca1a73
图2 上电效果

在软件开发方面,它支持以IAR、MDK及STM32CubeIDE进行开发。
在选取MDK为开发工具的情况下,下载下面3个文件既可进行开发工作。其中,压缩文件stm32cubeu3-1-2-0中是供用户学习和测试的例程,Keil.STM32U5xx_DFP.3.1.0则是使用MDK开发所需的芯片支持升级包,文件1743576327551937则是开发板的原理图。
4d3fa6a58f8387946617c48d1f758089
7b53310eac57e8774a34f59e262a6388
6f2e4c78e01c52431ca97469ff483bdf
图3 所需文件

至于MDK,选取V5.36的版本即可进行编译和下载,其界面如图4所示。
edb4ef70aecb42d3678e8ed77de5b3d9
图4 软件界面

在完成芯片支持升级包的安装后,可呈现出对芯片的支持状态,见图5所示。
6224106333635b2387f27cd9c13cd7ad
图5 芯片支持

在完成编译的情况下,其结果如图6所示。
aec23d9f59e6414283c06d97c22c609d
图6 完成编译

在连接开发板的状态下,其呈现的状态如图7所示。
5e916b35a951db0e46bebd79c73174cc
图7 完成连接

在如图8所示的烧录算法下,执行程序下载则如图9所示,说明下载成功。
此时,即可见到开发板上的LED2闪烁起来,见图10所示。
9e411132ed4f131ffc760ab3503bc0f8
图8 烧录算法

c9c84de46d4fd96c468b7adf0c2a7e7f
图9 完成下载

snap1.jpg
图10 运行效果

产生LED2闪烁的主程序为:
  1. int main(void)
  2. {
  3. HAL_Init();
  4. SystemClock_Config();
  5. MX_ICACHE_Init();
  6. LED2_GPIO_CLK_ENABLE();
  7. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  8. GPIO_InitStruct.Pull = GPIO_NOPULL;
  9. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  10. GPIO_InitStruct.Pin = LED2_PIN;
  11. HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
  12. while (1)
  13. {
  14. HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
  15. HAL_Delay(100);
  16. }
  17. }

对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的电路来看,两者是完全统一的。
9814a2548b14fd08d6c526d4b5ff5a8c
图11  LED2电路

如果进行功耗检测的话,其功耗情况如图12所示。
de19a6035e641d8aaa25156795289f01
图12  功耗检测

若要实现LED2闪烁及串口输出“Hello 21ic, Hello NUCLEO-U385RG-Q!"的效果,则主程序的内容为:
  1. int main(void)
  2. {
  3.   HAL_Init();
  4.   SystemClock_Config();
  5.   BSP_LED_Init(LD2);
  6.   MX_GPIO_Init();
  7.   MX_USART1_UART_Init();
  8.   MX_ICACHE_Init();
  9.   printf("\n\r Hello 21ic, Hello NUCLEO-U385RG-Q!\n\r");
  10.   while (1)
  11.   {
  12.           BSP_LED_Toggle(LD2);
  13.           HAL_Delay(500);  
  14. }
  15. }

相应的串口初始化函数为:
  1. static void MX_USART1_UART_Init(void)
  2. {
  3.   huart1.Instance = USART1;
  4.   huart1.Init.BaudRate = 115200;
  5.   huart1.Init.WordLength = UART_WORDLENGTH_8B;
  6.   huart1.Init.StopBits = UART_STOPBITS_1;
  7.   huart1.Init.Parity = UART_PARITY_NONE;
  8.   huart1.Init.Mode = UART_MODE_TX_RX;
  9.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  10.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  11.   huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  12.   huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  13.   huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  14.   if (HAL_UART_Init(&huart1) != HAL_OK)
  15.   {
  16.     Error_Handler();
  17.   }
  18.   if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }
  22.   if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  23.   {
  24.     Error_Handler();
  25.   }
  26.   if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
  27.   {
  28.     Error_Handler();
  29.   }
  30. }

该程序的实现效果如图13所示,说明它符合预期的设计要求。
snap.jpg
图13 输出测试

演示视频:




LOVEEVER 发表于 2025-7-29 23:39 | 显示全部楼层
非常不错的资源资料
 楼主| jinglixixi 发表于 2025-7-30 00:40 | 显示全部楼层
LOVEEVER 发表于 2025-7-29 23:39
非常不错的资源资料

感谢支持!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部