RT-Thread论坛
直播中

李艳

7年用户 1435经验值
私信 关注

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

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

QQ截图20240710172449.png
以前也碰到这鬼问题,是芯片包版本的问题。这次我以为是内核版本的问题,将内核版本切换成4.0.2,还是这个死样子。
rtthread缺少优秀的教学视频,官方太懒了,视频里面整天这论坛,那论坛的,多出教学视频,先把用户基数搞上来呀。

cubemx建立裸机工程是没有问题的。配上rtthread操作系统就不行了。我看网上也又类似的提问,也没看到答案。

回帖(1)

周煌煦

2024-7-10 18:25:36
针对您遇到的问题,我为您提供以下几个解决方案:

1. 检查串口配置:首先,请确保您的串口配置正确。在RT-Thread Studio中,打开rtconfig.h文件,检查串口相关的宏定义,例如:`#define BSP_USING_UART1`(表示使用UART1)。同时,检查`BSP_UART1_COM_TX_PIN`和`BSP_UART1_COM_RX_PIN`是否正确配置了TX和RX引脚。

2. 检查串口驱动:确保您的串口驱动已经正确初始化。在您的项目中,找到`board.c`文件,检查是否有类似以下代码:

   ```c
   #ifdef BSP_USING_UART1
   int rt_hw_usart_init(void)
   {
       rt_err_t result;
       result = rt_hw_usart_init();
       rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
       return result;
   }
   #endif
   ```

   如果没有,请添加相应的代码,并在`rtthread_startup.c`文件中的`rt_hw_board_init()`函数中调用`rt_hw_usart_init()`。

3. 检查串口中断:确保您的串口中断已经正确配置。在`board.c`文件中,找到类似以下代码:

   ```c
   #ifdef BSP_USING_UART1
   void USART1_IRQHandler(void)
   {
       /* 进入中断 */
       rt_interrupt_enter();
      
       /* 处理串口中断 */
       // TODO: 添加您的代码

       /* 退出中断 */
       rt_interrupt_leave();
   }
   #endif
   ```

   如果没有,请添加相应的代码,并在中断向量表中添加对应的中断处理函数。

4. 检查串口输出函数:确保您使用的串口输出函数是正确的。在RT-Thread中,可以使用`rt_kprintf()`函数进行串口输出。例如:

   ```c
   rt_kprintf("Hello, RT-Thread!n");
   ```

5. 检查串口波特率:确保您的串口波特率设置正确。在`rtconfig.h`文件中,找到`BSP_UART1_BAUD_RATE`宏定义,并设置合适的波特率,例如:

   ```c
   #define BSP_UART1_BAUD_RATE 115200
   ```

6. 检查串口连接:确保您的开发板与电脑之间的串口连接正确。检查串口线是否连接到正确的TX和RX引脚。

7. 使用串口助手:如果以上方法都无法解决问题,您可以尝试使用串口助手(如PuTTY、SSCOM等)来检测串口输出。在串口助手中,设置正确的波特率、数据位、停止位和奇偶校验位,然后打开串口助手,观察是否有数据输出。

希望以上方法能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们为您提供更具体的解决方案。
举报

更多回帖

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