找回密码
 立即注册
查看: 191|回复: 10

STC32G144K246超频变成砖

[复制链接]
已绑定手机

29

主题

56

回帖

1495

积分

金牌会员

积分
1495
发表于 昨天 18:14 | 显示全部楼层 |阅读模式
STC32G144K246超频变成砖

/* ================================================================
*  第一步:HPLLDIV[3:0] 编码表(必须先于下面的 #if 定义)
*  数值查手册 HPLLDIV[3:0] 表:倍频数 = 该值对应值
* ================================================================ */
#define HPLLDIV_480M     14     /* 倍频80 -> 6MHz*80 = 480MHz */
#define HPLLDIV_360M      4     /* 倍频60 -> 6MHz*60 = 360MHz */

/* ================================================================
*  第二步:频率档位编号
* ================================================================ */
#define SYS_CLK_60M       1
#define SYS_CLK_80M       2
#define SYS_CLK_90M       3
#define SYS_CLK_120M      4

/* ================================================================
*  第三步:★★★ 改这一行即可切换频率 ★★★
* ================================================================ */
#define SYS_CLK_SEL       SYS_CLK_120M

/* ================================================================
*  第四步:由 SYS_CLK_SEL 自动推导全部参数
* ================================================================ */
#if (SYS_CLK_SEL == SYS_CLK_60M)

    #define MAIN_Fosc         60000000L     /* 系统主频 = 60MHz */
    #define CFG_HPLLDIV       HPLLDIV_480M  /* HPLL1 = 480MHz */
    #define CFG_CLKDIV        4             /* 240MHz / 4 = 60MHz */
    #define CFG_WTST          1             /* ★按手册WTST表核对 */

#elif (SYS_CLK_SEL == SYS_CLK_80M)

    #define MAIN_Fosc         80000000L     /* 系统主频 = 80MHz */
    #define CFG_HPLLDIV       HPLLDIV_480M  /* HPLL1 = 480MHz */
    #define CFG_CLKDIV        3             /* 240MHz / 3 = 80MHz */
    #define CFG_WTST          2             /* ★按手册WTST表核对 */

#elif (SYS_CLK_SEL == SYS_CLK_90M)

    #define MAIN_Fosc         90000000L     /* 系统主频 = 90MHz */
    #define CFG_HPLLDIV       HPLLDIV_360M  /* HPLL1 = 360MHz */
    #define CFG_CLKDIV        2             /* 180MHz / 2 = 90MHz */
    #define CFG_WTST          2             /* ★按手册WTST表核对 */

#elif (SYS_CLK_SEL == SYS_CLK_120M)

    #define MAIN_Fosc         120000000L    /* 系统主频 = 120MHz */
    #define CFG_HPLLDIV       HPLLDIV_480M  /* HPLL1 = 480MHz */
    #define CFG_CLKDIV        2             /* 240MHz / 2 = 120MHz */
    #define CFG_WTST          3             /* ★按手册WTST表核对 */

#else
    #error "SYS_CLK_SEL 取值非法,只能是 SYS_CLK_60M/80M/90M/120M"
#endif

/* ---------------- 底层:设置 HPLL1 倍频 ---------------- */
static void HPLL1_SetDiv(unsigned char hplldiv)
{
    HPLLCR &= ~0x0F;                    /* 清 HPLLDIV[3:0](B3:B0) */
    HPLLCR |= (hplldiv & 0x0F);         /* 写入 HPLLDIV[3:0] */
}

/* ---------------- 底层:主时钟切到安全源 ---------------- */
static void Clock_ToSafeSource(void)
{
    CLKSEL &= ~0x0C;                    /* 清 MCK2SEL[1:0](B3:B2) */
    CLKSEL |=  0x0C;                    /* MCK2SEL=11: 内部48MHz IRC */
}

/* ---------------- 底层:主时钟切到 HPLL1/2 ---------------- */
static void Clock_ToHPLL(void)
{
    CLKSEL &= ~0x0C;                    /* 清 MCK2SEL[1:0](B3:B2) */
    CLKSEL |=  0x04;                    /* MCK2SEL=01: HPLL1输出/2 */
}
/* ---------------- 时钟初始化(参数由 sys_clock.h 决定) ---------------- */
void SystemClock_Init(void)
{
    EAXFR = 1;                          /* 使能扩展寄存器(XFR)访问 */

    HPLLCR |= 0x10;                     /* HPLLCKS(B4)=1: 输入选内部48M IRC */
    HPLLPDIV = 8;                       /* 48MHz/8=6MHz,手册要求基频6MHz */
    HPLL1_SetDiv(CFG_HPLLDIV);          /* 按所选档位设倍频 */
    HPLLCR |= 0x80;                     /* ENHPLL(B7)=1: 使能HPLL1 */

    HPLL2CR &= ~0x60;                   /* HSIOCK[1:0](B6:B5)=00: 高速外设时钟=HPLL1/2 */

    Clock_ToSafeSource();               /* 先切安全源 */
    Clock_ToHPLL();                     /* 再切HPLL1/2 */

    CLKDIV = CFG_CLKDIV;                /* 设置系统分频 */
    WTST   = CFG_WTST;                  /* 设置代码等待时间(★按手册核对) */
}

void main()           
{
    SystemClock_Init();  
}



回复

使用道具 举报 送花

已绑定手机

35

主题

399

回帖

4073

积分

论坛元老

机长

积分
4073
发表于 昨天 19:55 | 显示全部楼层
不应该呀,我记得STC的芯片都是以24MHz频率冷启动的,然后才是切目标频率?
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复

使用道具 举报 送花

已绑定手机

29

主题

56

回帖

1495

积分

金牌会员

积分
1495
 楼主| 发表于 昨天 20:00 | 显示全部楼层
hsr*** 发表于 2026-11-12 19:55
不应该呀,我记得STC的芯片都是以24MHz频率冷启动的,然后才是切目标频率? ...

用一箭双雕之USB转双串口都下载不了
回复

使用道具 举报 送花

已绑定手机

19

主题

3566

回帖

7712

积分

论坛元老

积分
7712
发表于 昨天 21:08 | 显示全部楼层
USB下载也不行吗
回复

使用道具 举报 送花

83

主题

8324

回帖

1万

积分

超级版主

积分
17958
发表于 昨天 21:35 | 显示全部楼层
这超频是运行你的程序时才操作超频,下载程序跟你的程序做什么操作无关的,因为下载程序时运行的是Bootloader,并没有运行你的程序,所以再找找别的原因吧。
回复

使用道具 举报 送花

已绑定手机

35

主题

399

回帖

4073

积分

论坛元老

机长

积分
4073
发表于 昨天 23:14 | 显示全部楼层
wan*** 发表于 2026-11-12 20:00
用一箭双雕之USB转双串口都下载不了

不对,你是如何得出“超频弄坏”这个结论的?你先入为主带了这个想法是有问题的,有点妨碍你找真正的原因了……
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复

使用道具 举报 送花

已绑定手机

29

主题

56

回帖

1495

积分

金牌会员

积分
1495
 楼主| 发表于 昨天 23:15 | 显示全部楼层
已经拆了丢垃圾桶了换了一块芯片好了
回复

使用道具 举报 送花

6

主题

95

回帖

1200

积分

金牌会员

积分
1200
发表于 13 小时前 | 显示全部楼层
可以考虑多方位救援 ,曾经整STM32 的CUBE下载后没有反应也不能连接上下载器,也是直接更换芯片扔了.
回复

使用道具 举报 送花

5

主题

228

回帖

1391

积分

金牌会员

积分
1391
发表于 6 小时前 | 显示全部楼层
有可能超频后芯片内部发热大烧坏了
回复

使用道具 举报 送花

33

主题

3086

回帖

7246

积分

论坛元老

积分
7246
发表于 5 小时前 | 显示全部楼层
不会是烧了吧,,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-13 22:21 , Processed in 0.082396 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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