打印
[技术问答]

HC32F460的内部高速时钟问题

[复制链接]
1872|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
18078550376|  楼主 | 2025-3-24 18:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用内部高速时钟HRC作为PPL时钟然后倍频再分频至200MHZ作为系统时钟,在使用定时器验证时一直对不上,使用外部晶振配置又是正常的。都是基于例程在测试而且Debug查看SystemCoreClock以及相关寄存器的配置也没发现哪里有问题Z:\Share\HC1

使用特权

评论回复
沙发
18078550376|  楼主 | 2025-3-24 18:12 | 只看该作者
void CLK_Init(void)
{
    stc_clk_sysclk_cfg_t    stcSysClkCfg;
    stc_clk_xtal_cfg_t      stcXtalCfg;
    stc_clk_mpll_cfg_t      stcMpllCfg;
    stc_sram_config_t       stcSramConfig;

    MEM_ZERO_STRUCT(stcSysClkCfg);
    MEM_ZERO_STRUCT(stcXtalCfg);
    MEM_ZERO_STRUCT(stcMpllCfg);
    MEM_ZERO_STRUCT(stcSramConfig);

    /* Set bus clk div. */
    stcSysClkCfg.enHclkDiv  = ClkSysclkDiv1;
    stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;
    stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;
    stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;
    stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;
    stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;
    stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;
    CLK_SysClkConfig(&stcSysClkCfg);

                CLK_HrcCmd(Enable);
//    while(Set != CLK_GetFlagStatus(ClkFlagHRCRdy))
//    {
//        ;
//    }
    /* sram init include read/write wait cycle setting */
    stcSramConfig.u8SramIdx = Sram12Idx | Sram3Idx | SramHsIdx | SramRetIdx;
    stcSramConfig.enSramRC = SramCycle2;
    stcSramConfig.enSramWC = SramCycle2;
    SRAM_Init(&stcSramConfig);

    /* flash read wait cycle setting */
    EFM_Unlock();
    EFM_SetLatency(EFM_LATENCY_5);
    EFM_Lock();

    /* MPLL config (XTAL / pllmDiv * plln / PllpDiv = 200M). */
    stcMpllCfg.pllmDiv = 2ul;
    stcMpllCfg.plln    = 40ul;
    stcMpllCfg.PllpDiv = 2ul;
    stcMpllCfg.PllqDiv = 2ul;
    stcMpllCfg.PllrDiv = 2ul;
    CLK_SetPllSource(ClkPllSrcHRC);
    CLK_MpllConfig(&stcMpllCfg);

    /* Enable MPLL. */
    CLK_MpllCmd(Enable);
    /* Wait MPLL ready. */
    while(Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
    {
        ;
    }
    /* Switch driver ability */
    PWC_HS2HP();
    /* Switch system clock source to MPLL. */
    CLK_SetSysClkSource(CLKSysSrcMPLL);               
}

使用特权

评论回复
板凳
18078550376|  楼主 | 2025-3-26 13:53 | 只看该作者
问题解决了,淘宝上买的最小系统配的芯片可能是假的;另外买了芯片换上去就好了

使用特权

评论回复
地板
wang6623| | 2025-3-31 13:42 | 只看该作者
如果你要倍频到200MHz,需要合理配置PLL倍频器。

使用特权

评论回复
5
Amazingxixixi| | 2025-4-24 15:50 | 只看该作者
学习一下啊!感觉有点知识慌了

使用特权

评论回复
6
classroom| | 2025-5-27 12:28 | 只看该作者
HRC频率稳定性差点。

使用特权

评论回复
7
flycamelaaa| | 2025-5-27 15:20 | 只看该作者
PLL的倍频和分频系数计算错误,或者PLL的输入时钟源选择不正确?

使用特权

评论回复
8
powerantone| | 2025-5-27 15:56 | 只看该作者
系统时钟分频器或外设时钟分频器的配置不正确?

使用特权

评论回复
9
stormwind123| | 2025-5-27 19:00 | 只看该作者
内部时钟源的启动可能需要一定时间,若在时钟未稳定时就进行配置或验证,可能导致频率不准确。

使用特权

评论回复
10
probedog| | 2025-5-27 20:00 | 只看该作者
尽管Debug查看相关寄存器配置未发现问题,但仍可能存在某些关键寄存器配置不当或遗漏的情况。

使用特权

评论回复
11
classroom| | 2025-5-27 21:00 | 只看该作者
若对时钟精度要求较高,建议用外部晶振作为时钟源。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝