• keil5debug无法进行调试


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2401_83412900 2024-04-06 14:54 采纳率: 0% 浏览 6 首页/ 编程语言 / keil5debug无法进行调试 c语言学习方法stm32 在用stlink时,想用调试,结果点start debug session 后直接跳转到了LDR 汇编这里,并且左上角的单步调试等按钮都是灰的,可不可以帮我看看是我代码问题还是硬件有问题,还是哪里配置错了。先提前谢谢各位了。用的代码是cubemx生成的 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET); HAL_Delay(200); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET); HAL_Delay(200)实现闪烁。当我烧录进去后,在想调试,就直接跳到了这里(位于startup_stm32f103x6.s) HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET); HAL_Delay(200); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET); HAL_Delay(200); 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-06 14:54
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      看起来问题出在你的代码中,因为调试器无法在你的代码中停下来进行单步调试,而是跳转到了汇编代码中。

      以下是我能想到的解决方案:

      1. 检查调试器的配置是否正确。如果您使用的是Keil IDE进行调试,则需要正确配置调试选项。请确保已正确指定了要使用的调试器和目标设备,并启用了调试模式。

      2. 确认将正确的调试信息编译到了代码中。尝试使用带有调试信息的编译器选项重新编译代码,并确保已正确地指定了调试选项。

      3. 修改代码,避免使用延时函数。在使用延时函数时,可能会导致调试器出现问题。尝试使用其他方法来实现等待时间,如使用定时器。

      4. 重新烧写代码,确保已正确地烧写了代码。如果可能,尝试使用另一个编程器重新烧写代码,并在调试器中启动调试会话。

      修改后的代码:

      while(1) {
          HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
          HAL_Delay(200);
      }
      

      这是一个基本的闪烁LED的代码,使用了HAL库中的GPIO翻转功能,同时使用了HAL库中的延时函数。

      评论 编辑记录
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-06 14:54
      关注

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

      首先,我要指出的是,您的问题是关于使用Keil V5 Debug器调试C语言程序的问题。您已经尝试了一些基本的操作,但没有成功。以下是解决这个问题的一些建议:

      1. 检查Keil V5的设置:确保Keil V5正确安装并启用了,以及已设置了正确的板子(如STM32F103)和编程环境。
      2. 更改Debug区域的符号表:检查您使用的符号表是否正确与 Keil V5 相匹配。如果符号表不同,可能会导致调试失败。您可以将当前符号表更改为正确的符号表。
      3. 使用支持手动输入的工作区(JTAG)或串行调试:虽然 Keil V5 本身可以支持这些工作区,但如果您的设备不支持这些功能,则可能需要更换开发板或更改其他设置。
      4. 重新启动开发板:有时候重启开发板能解决一些小问题。请您尝试关闭开发板,等待几秒钟再打开,然后再尝试连接到板子并进行调试。
      5. 检查GPIO引脚的状态:在使用HAL_GPIO_WritePin函数之前,确保对GPIO引脚进行了正确的配置。例如,如果您选择了正确的 GPIO 设备名称,请将其设置为 GPIO_PULL_UP 或 GPIO_PULL_DOWN。
      6. 清空日志文件:清除 Keil V5 中的日志文件可以帮助解决问题。请注意,在清空日志文件之前,请先备份任何重要的数据。
      7. 检查硬件配置:确认您的设备支持所需的板子和速度,以及硬件版本和型号与 Keil V5 的兼容性。

      以下是一个简单的示例代码片段,用于从定点库加载单例常量,并将其存储在一个数组中:

      #include 
      
      // 定义单例常量
      const char* SingletonString = "Hello World";
      
      int main() {
          // 使用 Keil V5 的 HAL观音复制这个常量
          const int ARRAY_SIZE = 10;
          char* array[ARRAY_SIZE];
          
          HAL观音SetSymbolTable(array, SingletonString);
          
          for (int i = 0; i < ARRAY_SIZE; i++) {
              printf("Array element at index %d: %s\n", i + 1, array[i]);
          }
          
          return 0;
      }
      

      请注意,这段代码只是一个示例,实际的代码需要根据您的具体需求进行修改。希望这些建议能帮到您,祝您调试顺利!

      展开全部

      评论 编辑记录
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    定义一个函数 void sort(int a[],int n)将一个数组中的元素按逆序重新存放。main( )函数 先输入数组元素,再调用函数 sort()对数组元素逆序,最后输出所有数组元素
    个人数据保全计划:(2) NAS基础知识
    基于cifar数据集合成含开集、闭集噪声的数据集
    这就是思维导图!全面分析思维导图的实际用途
    【树莓派不吃灰系列】快速导航
    NAT如何配置地址转换
    怎么优化Web网站性能
    Java21 + SpringBoot3整合Redis,使用Lettuce连接池,推荐连接池参数配置,封装Redis操作
    能聚合各站热点的DailyHot
    MVCC之RC、RR隔离级别下可见性的分析
  • 原文地址:https://ask.csdn.net/questions/8084095