找回密码
 立即注册
查看: 104|回复: 4

开天斧《-22-基于HID协议的USB鼠标范例》调试停留在while (!(IRC48MCR & 0x01));处

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-25 02:08:26
已绑定手机

3

主题

2

回帖

39

积分

新手上路

积分
39
发表于 2025-4-16 05:48:03 | 显示全部楼层 |阅读模式
使用开天斧板子,将调试管脚设置为P3.6,P3.7,因为要使用USB功能。 打开样例程序,运行停留在while (!(IRC48MCR & 0x01));处。 如果将生成的程序直接下载,而不是使用调试模式,鼠标程序是工作的。

初次使用STC,感觉简单的样例运行都需要好多时间摸索,哎!
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-16 05:53:00 | 显示全部楼层
问题分析与解决方案

问题描述
在使用开天斧板子进行《-22-基于HID协议的USB鼠标范例》调试时,程序运行停留在以下代码处:
  1. c
  2. while (!(IRC48MCR & 0x01));
复制代码
具体表现为:
1. 调试模式下,程序无法继续执行,停留在上述代码处。
2. 直接下载生成的程序到板子中,USB鼠标功能正常工作。

初步分析
1. IRC48MCR寄存器:该寄存器通常用于控制内部48MHz时钟的稳定状态。IRC48MCR & 0x01用于检查48MHz时钟是否已经稳定。
2. 调试模式与直接下载的区别:
调试模式:在调试模式下,程序执行可能会受到调试器的影响,例如断点、单步执行等,可能导致某些硬件状态无法及时更新。
直接下载:程序直接运行,不受调试器干扰,硬件状态能够正常更新。

可能原因
1. 时钟稳定时间不足:在调试模式下,由于调试器的介入,可能导致时钟稳定时间不足,程序无法及时检测到时钟稳定信号。
2. 调试器配置问题:调试器的配置可能影响了硬件状态的读取,导致程序无法正确判断时钟是否稳定。
3. 硬件初始化顺序问题:在调试模式下,硬件初始化顺序可能与直接下载时不同,导致某些硬件状态未能及时更新。

解决方案
1. 增加时钟稳定等待时间:
   在while (!(IRC48MCR & 0x01));之前增加一段延时,确保时钟有足够的时间稳定。例如:
  
  1. c
  2.    delayms(10);  // 增加10ms延时
  3.    while (!(IRC48MCR & 0x01));
复制代码
2. 检查调试器配置:
   确保调试器的配置不会影响硬件状态的读取。可以尝试调整调试器的设置,例如关闭某些可能影响硬件状态的调试功能。
3. 优化硬件初始化顺序:
   检查并优化硬件初始化顺序,确保在调试模式下,硬件状态能够及时更新。例如,确保在检查时钟稳定之前,所有相关的硬件初始化已经完成。

具体操作步骤
1. 修改代码:
   在while (!(IRC48MCR & 0x01));之前增加一段延时,例如:
  
  1. c
  2.    delayms(10);  // 增加10ms延时
  3.    while (!(IRC48MCR & 0x01));
复制代码
2. 重新编译并下载:
   重新编译代码,并使用调试模式进行测试,观察程序是否能够继续执行。
3. 调整调试器配置:
   如果问题仍然存在,尝试调整调试器的配置,例如关闭某些可能影响硬件状态的调试功能。
4. 优化硬件初始化顺序:
   检查并优化硬件初始化顺序,确保在调试模式下,硬件状态能够及时更新。

总结
通过增加时钟稳定等待时间、检查调试器配置以及优化硬件初始化顺序,可以有效解决调试模式下程序停留在while (!(IRC48MCR & 0x01));处的问题。初次使用STC系列芯片时,可能会遇到一些调试问题,但通过逐步分析和优化,可以顺利解决这些问题,提高开发效率。

希望以上分析和解决方案能够帮助您顺利解决问题,祝您在STC系列芯片的开发过程中取得更多成果!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-4-16 08:26:20 | 显示全部楼层
制作完成仿真芯片后,必须对目标单片机重新上电仿真功能才有效
如果使用官方的Link1D或者USB转双串口工具制作仿真芯片,由于工具上有自动停电/上电电路,工具会在制作完成后自动进行停电/上电,此时才不需要重新上电
如果是使用其他工具制作仿真芯片后,制作完成后必须对目标单片机重新上电,仿真功能才有效,才可正常进行仿真
STC32G12K128/STC32G12K64  7.4.8以及此前的固件版本,制作成串口和USB仿真后,用USB下载能恢复到正常下载
STC32G12K128/STC32G12K64  7.4.12/7.4.13固件版本,制作成串口和USB仿真后,使用USB下载不能恢复到正常下载,需要更新到7.4.14版本
不建议仿真USB,仿真还是有一些限制的,还有上位机操作系统有超时机制,仿真加入断点停止响应,上位机操作系统就会认为USB设备异常或断开
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-25 02:08:26
已绑定手机

3

主题

2

回帖

39

积分

新手上路

积分
39
发表于 2025-4-17 07:20:20 | 显示全部楼层
是程序设置问题。 忘了设置调试器。 但是仍然无法正常调试程序。 使用P3.6,P3.7作为SW接口;使用LINK1作为调试器; USB连接到主机; 程序可以进入调试界面,但是无法单步跟踪。
使用相同设置,运行跑马灯程序,可以单步跟踪调试。  
USB鼠标样例程序, 如果在初始化处设置断点,会导致程序不断的重置,开始,停留在断点处。 如果不设置任何断点, 可以运行,但是PC端看不到鼠标连接。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-25 02:08:26
已绑定手机

3

主题

2

回帖

39

积分

新手上路

积分
39
发表于 2025-4-17 07:23:56 | 显示全部楼层
你们的工程师能否给一个可以调试的程序样例?
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:22 , Processed in 0.176002 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表