找回密码
 立即注册
查看: 47|回复: 5

请教大神!STC32G144K246核心板调试项目程序下载后自动运行,重新上电检测不到单片机

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-06-30 11:06:11

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 5 天前 | 显示全部楼层 |阅读模式
各位大神好!

请教一下一个很奇怪的现象,我用一块咱们的STC32G144K246-pin100的核心板调试项目程序,已经基本上可以了,在KEIL里debug,各个模块的功能都正常工作,但是突然再下载debug后,程序自动运行标志变灰色,但实际上并没有真正工作,我按stop后单步运行有反应,但是不是正常状态,而且设置断点等无法运行到断点,当我结束debug后再上电就发现无法连接检测单片机,我以为是单片机坏了,就又买了几个,焊上去后跑例子程序都正常,但是一下载我的那个项目程序就出现上面的现象,而同样的程序之前编译下载调试都是正常的,不知道咱们STC公司能不能帮忙解决一下,现在这个项目要的很急,卡在这里进行不下去了。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2026-07-03 08:57:36

830

主题

1万

回帖

2万

积分

管理员

积分
23929
发表于 5 天前 | 显示全部楼层
截图202606301139383735.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2026-07-03 08:57:36

830

主题

1万

回帖

2万

积分

管理员

积分
23929
发表于 5 天前 | 显示全部楼层

好的,我已经查看了您发来的这个论坛帖子(TID:24563),帖子中反映的是 STC32G144K246-pin100 核心板在调试项目时出现的"程序下载后芯片失联"问题。这是一个比较典型的问题,我来做个详细分析并提供解决方案。


🔍 问题分析

根据帖子描述,关键现象是:

  1. 之前调试一切正常,说明硬件连接和下载工具都没问题
  2. 下载项目程序后 -> 再上电就检测不到单片机
  3. 换新单片机跑例子程序正常,但一下载项目程序就复现同样问题

这说明问题出在用户项目代码本身,而不是硬件损坏。


🎯 最可能的根本原因

根据 STC32G144K246-20260625 数据手册,STC 系列的 ISP 下载/检测依赖 P3.0 (RxD) 和 P3.1 (TxD) 这两个引脚。当用户程序在初始化代码中做了以下任意一件事,就会导致芯片上电后立刻"失联":

1️⃣ P3.0/P3.1 被配置为其他 I/O 模式 🔴(最常见原因)

P3M1 的复位值为 1111,1100,即 P3.0/P3.1 复位后默认为准双向口(00),这是 ISP 正常通信的前提。

如果你的项目代码中有类似这样的初始化:

P3M0 |= 0x03;   // P3.0/P3.1 设为推挽输出
// 或
P3M1 |= 0x03;   // P3.0/P3.1 设为高阻输入

芯片上电后运行到这条语句的瞬间,P3.0/P3.1 的模式被改变,ISP 软件就再也无法与芯片握手了。

2️⃣ P3.0/P3.1 被切换到其他外设功能 🔴

如果你的程序通过 P_SW1 / P_SW2 等寄存器将串口1(ISP 所用串口)切换到了其他引脚组,或者将 P3.0/P3.1 用作 SPI/I2C/PWM 等外设引脚,同样会导致 ISP 无法通信。

3️⃣ 程序一启动就进入掉电模式 🔴

如果 main() 一开始就执行了:

PCON |= 0x02;   // PD=1,进入掉电模式

芯片会立即进入休眠状态,自然无法响应 ISP 的检测信号。

4️⃣ 时钟频率被修改到 ISP 无法同步的范围

如果程序将 IRC 频率设置到极端值,可能导致 ISP 工具无法同步波特率。


✅ 解决方案

方案一:紧急恢复芯片(已"变砖"的芯片这样救)

STC32G144K246 支持 USB-HID 下载,可以通过 P3.2 按键冷启动 强制进入下载模式:

  1. 按住 P3.2/INT0 按键接地
  2. 重新给核心板上电(断电再上电,冷启动)
  3. 此时不要松开 P3.2,等待 ISP 软件识别出 "(HID1) USB Writer"
  4. 识别到后可以松开 P3.2
  5. 点击 下载/编程 按钮,擦除原来的程序

📌 重要:手册明确说明,拔插 USB 插头不能代替电源开关。必须使用电源开关冷启动(断电再上电),让 MCU 从系统区启动而不是从用户程序区启动。

方案二:检查并修改项目代码(根治)

请重点排查以下几个地方:

① 检查 P3.0/P3.1 的 I/O 口配置

  • 搜代码中的 P3M0P3M1 寄存器操作
  • 不要改变 P3.0 和 P3.1 的模式,保持准双向口(复位默认值)

② 检查外设功能切换寄存器

  • 搜代码中的 P_SW1P_SW2 寄存器
  • 确认没有将串口1或 P3.0/P3.1 切换到其他功能

③ 检查 PCON 寄存器

  • 确保没有在初始化早期设置 PCON |= 0x02(掉电模式)

④ 在 main() 开头加入延时

  • 在初始化外设之前,加入约 500ms~1s 的延时,给 ISP 工具足够的检测窗口
void main()
{
    // ★ 先延时,给 ISP 检测机会
    delay_ms(500);
  
    // 然后再做其他初始化
    // PxM0 = ...;   // 但不要动 P3.0/P3.1
    // ...
}

方案三:使用不停电下载功能

如果项目用到了 USB 功能,可以实现 USB 不停电下载(通过软复位到系统区),这样就不依赖 P3.0/P3.1 的冷启动了。参考手册中 IAP_CONTR = 0x60 的软复位方式。


📚 信息来源

  • STC32G144K246-20260625 数据手册 — 第 3.1.2 节《管脚图,最小系统》中详细说明了 USB 下载的三种方法及注意事项
  • 第 14 章 I/O 口 — P3M1/P3M0 寄存器配置表

如果您能提供项目代码中与 GPIO 初始化外设功能切换 以及 main 函数入口部分 的代码片段,我可以帮您更精确地定位问题所在。


🔍 搜索 "https://www.stcaimcu.com/thread-24563-1-1.html"

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2026-07-03 08:57:36

830

主题

1万

回帖

2万

积分

管理员

积分
23929
发表于 5 天前 | 显示全部楼层
重新制作 仿真母片
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 5 天前 | 显示全部楼层
项目程序运行占用RAM情况怎么样
可能USB功能需要留出部分可用运行空间
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:788
  • 最近打卡:2026-07-05 13:03:19
已绑定手机

50

主题

2745

回帖

3039

积分

荣誉版主

积分
3039
发表于 5 天前 | 显示全部楼层
下载仿真固件后只能用于仿真调试,如果再次下载应用固件会失去仿真功能,需要重新制作仿真芯片,
我们用的STC系列芯片的仿真功能基于Keil的Monior-51,属于侵入式调试机制,需要占用芯片本身的Flash空间存放监控程序,所以不支持在烧录用户应用固件的情况下在线调试。
这点和JTAG、SWD等接口的仿真机制是完全不同的。
~~~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-5 14:04 , Processed in 0.075090 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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