Yuzhe_C 2024-04-17 20:29 采纳率: 0%
浏览 51
已结题

串口调试助手打开串口后,keil5的代码就停止了

keil5的代码在运行后,串口调试助手一打开串口就停止程序

img


代码刚开始运行

img


打开串口后,代码停止,怎么按RUN 都没有反应

img


一按reset就报错

img

  • 写回答

27条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-17 20:29
    关注
    获得0.80元问题酬金

    引自免费微信小程序:皆我百晓生

    针对您描述的问题,STM32的Keil5代码在运行时,一旦通过串口调试助手打开串口,程序就会停止运行。根据您提供的信息,这可能是由于硬件或软件方面的问题导致的。以下是详细的排查步骤和可能的解决方案:

    1. 硬件检查

      • 检查串口连接线:确保串口线与开发板之间的连接稳定无松动,且无短路、断路情况。
      • 检查电源供电:确认开发板电源稳定,无电压波动或瞬时掉电现象。
    2. 软件配置

      • 串口参数匹配:确保串口调试助手设置的波特率、数据位、校验位、停止位与代码中USART1_Init()函数配置的一致。
      • 中断处理:检查代码中是否正确处理了USART1的接收中断(如USART1_IRQHandler()),避免因未及时清除中断标志而导致中断挂起。
    3. 代码逻辑

      • 程序死循环:检查while(1)循环内是否存在可能导致程序卡死的条件或错误操作,如无限制等待某个事件、资源竞争等。
      • 串口中断处理:确保中断服务程序中的数据处理逻辑正确,不会导致程序停滞。例如,避免在中断服务程序中执行耗时操作,或因错误操作导致中断标志无法清除。
    4. 调试工具影响

      • 断点设置:检查Keil中是否设置了断点,尤其是在串口相关代码处。串口调试助手打开串口时,可能触发了断点导致程序暂停。
      • 软件/硬件 breakpoints/watchpoints:查看图1和图2中的Breakpoints信息,确认是否有误触发的断点或watchpoints。如果有,移除或调整它们的位置。
    5. J-Link连接稳定性

      • 重新连接J-Link:尝试断开并重新连接J-Link至开发板,确保J-Link与开发板之间的通信稳定。
      • 更新J-Link驱动与固件:确保您使用的J-Link驱动和固件版本是最新的,过时的版本可能引发连接问题。您可以访问SEGGER官网下载最新版本。
    6. 复现与排除

      • 清理工作区:关闭串口调试助手,断开J-Link与开发板的连接,关闭Keil,然后重新打开项目、连接设备、启动调试。
      • 简化测试场景:编写一个仅包含串口初始化和简单收发功能的最小化测试代码,以排除其他无关代码对问题的影响。

    如果以上步骤未能解决问题,建议您提供更详细的代码片段(特别是USART相关的初始化和中断处理部分)以及具体的串口调试助手设置信息,以便进行更深入的分析。同时,关注图1和图2中显示的寄存器状态、堆栈信息和断点情况,这些有助于定位问题所在。在排查过程中,务必遵循上述步骤逐一检查,逐步缩小问题范围,最终找到并解决导致代码停止运行的原因。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)