RT-Thread论坛
直播中

李桂兰

8年用户 1531经验值
私信 关注
[问答]

RT Thread Studio新建STM32L431RCTx工程,串口无输出怎么解决?

又遇到这种鬼问题,采用RT Thread Studio新建了thread通用项目,内核版本为5.0.2,芯片型号为STM32L431RCTx,芯片包为0.1.9,建好工程后,程序可以正常运行,写的闪灯程序也正常,就是串口无信息输出。

以前也碰到这鬼问题,是芯片包版本的问题。这次我以为是内核版本的问题,将内核版本切换成4.0.2,还是这个死样子。
rtthread缺少优秀的教学视频,官方太懒了,视频里面整天这论坛,那论坛的,多出教学视频,先把用户基数搞上来呀。
cubemx建立裸机工程是没有问题的。配上rtthread操作系统就不行了。我看网上也又类似的提问,也没看到答案。


回帖(2)

向婧宇

2025-9-16 17:42:20
eclipse 的串口工具不太好用, 建议可以用 MobeXtern 或者 tabby 一些独立的串口工具吧            
举报

孔妞妞

2025-9-19 17:41:13

针对RT Thread Studio新建STM32L431RCTx工程串口无输出的问题,以下是系统化的解决方案,结合常见故障点和您的描述整理:




根本原因分析




  1. 串口引脚配置错误



    • RT-Thread Studio默认配置可能与实际硬件不符(如PA9/PA10为USART1,但您的板子可能使用其他串口或引脚)。




  2. 控制台配置缺失



    • RT-Thread需通过RT_CONSOLE_DEVICE_NAME指定串口设备名(如"uart1"),未正确配置会导致rt_kprintf()无输出。




  3. 时钟配置问题



    • STM32L4需确保时钟树使能串口外设时钟(默认工程可能未完整适配L4系列)。




  4. 驱动未启用或中断冲突



    • 串口驱动未启用(drv_usart.c未参与编译)或中断优先级配置错误。




  5. 芯片包兼容性问题



    • STM32L431芯片包(0.1.9版本)可能存在适配缺陷(您提到的历史经验)。






详细解决步骤


1. 检查硬件连接与串口工具



  • 确认开发板串口引脚(如USART1: PA9/TX, PA10/RX)与USB转串口工具连接正确。

  • 验证串口工具波特率(默认115200)、停止位等设置。


2. 验证串口驱动配置



  • 打开工程中的 board.h 文件,确保启用对应串口:
     #define BSP_USING_UART1   // 启用UART1,根据实际需求修改

  • 检查 board.c 中的引脚配置:
     static const struct serial_configure uart_config = RT_SERIAL_CONFIG_DEFAULT; // 波特率115200

    确认引脚映射正确(如USART1默认PA9/PA10)。



3. 配置控制台设备



  • 打开 rtconfig.h 文件,添加:
     #define RT_USING_CONSOLE             // 启用控制台
    #define RT_CONSOLE_DEVICE_NAME "uart1" // 指定控制台使用的串口设备名


4. 修复时钟初始化



  • board.cSystemClock_Config()函数中,确认串口外设时钟已使能:
     __HAL_RCC_USART1_CLK_ENABLE(); // 确保USART1时钟开启

  • 检查时钟源配置(如HSI/PLL),确保频率正确(L431默认CPU频率80MHz)。


5. 测试串口独立收发(绕过操作系统)



  • main()函数初始化阶段直接测试串口:
     #include 
    void uart_test(void) {
         rt_device_t uart = rt_device_find("uart1");
         rt_device_open(uart, RT_DEVICE_FLAG_INT_TX);
         char str[] = "Hello RT-Thread!n";
         rt_device_write(uart, 0, str, sizeof(str) - 1);
    }

    调用uart_test()后观察串口输出。



6. 更新芯片包与内核



  • 在RT-Thread Studio的 SDK管理器 中:

    1. 更新芯片包至最新版本(搜索STM32L4)。

    2. 尝试切换RT-Thread内核版本(如4.1.x或5.0.x最新版)。


  • 若问题依旧,手动替换BSP:


7. 检查串口中断与驱动



  • 确认 drv_usart.c 文件包含在编译中(右键工程→属性→C/C++构建→设置→源文件位置)。

  • 检查stm32_get_uart_config()函数中的引脚配置是否匹配硬件。


8. 使用CubeMX生成初始化代码(可选)



  • 在RT-Thread Studio中右键工程 → 配置CubeMX → 重新配置串口引脚和时钟 → 生成代码并同步刷新工程。




补充建议




注意:STM32L4系列需特别注意低功耗时钟配置(如MSI/HSI时钟源)。若以上步骤无效,建议提供board.crtconfig.h关键片段进一步分析。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分