chnchmhgw 发表于 2021-6-25 10:11

hc32f460外部晶振12Mhz如何配置

当前使用hc32f460,外接晶振为12Mhz;系统默认配置xtal为8MHZ;
当使用12MHz晶振,调试串口没有打印输出;
改为内部时钟HRC就有串口调试输出,需要哪里进行配置?

在system_hc32f46x.h里面,将XTAL_VALUE宏定义由8000000改为12000000仍然没有串口调试输出;还需要哪里修改?

system_hc32f46x.h修改如下:
#if !defined (LRC_VALUE)
#define LRC_VALUE ((uint32_t)32768)   /*!< Internal low speed RC freq. */
#endif

#if !defined (XTAL_VALUE)
//#define XTAL_VALUE ((uint32_t)8000000)/*!< External high speed OSC freq. */
#define XTAL_VALUE ((uint32_t)12000000)/*!< External high speed OSC freq. */
#endif

keil开发工具,已经将options for target设置Xtal为12Mhz

martinhu 发表于 2021-6-25 15:17

时钟初始化函数,关于PLL倍频的系数需要修改

chnchmhgw 发表于 2021-6-28 09:38

martinhu 发表于 2021-6-25 15:17
时钟初始化函数,关于PLL倍频的系数需要修改

你好。
我的PLL倍频和分频如下,帮忙看下哪里有问题,多谢亲。
        static void ClkInit(void)
        {
                stc_clk_xtal_cfg_t       stcXtalCfg;
                stc_clk_mpll_cfg_t       stcMpllCfg;
                en_clk_sys_source_tenSysClkSrc;
                stc_clk_sysclk_cfg_t stcSysClkCfg;
       
                MEM_ZERO_STRUCT(enSysClkSrc);
                MEM_ZERO_STRUCT(stcSysClkCfg);
                MEM_ZERO_STRUCT(stcXtalCfg);
                MEM_ZERO_STRUCT(stcMpllCfg);
       
                /* Set bus clk div. */
                stcSysClkCfg.enHclkDiv        = ClkSysclkDiv1;//100M
                stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;//50M
                stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;//100M
                stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;//50M
                stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;//25M
                stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;//25M
                stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;//50M
                CLK_SysClkConfig(&stcSysClkCfg);
       
                /* Switch system clock source to MPLL. */
                /* Use Xtal as MPLL source. */
                stcXtalCfg.enMode = ClkXtalModeOsc;
                stcXtalCfg.enDrv = ClkXtalLowDrv;
                stcXtalCfg.enFastStartup = Enable;
                CLK_XtalConfig(&stcXtalCfg);
                CLK_XtalCmd(Enable);
       
                /* MPLL config. */
                stcMpllCfg.pllmDiv = 2u; /* XTAL 12M / 2 */
                stcMpllCfg.plln = 50u;       /* 6M*50 = 300M */
                stcMpllCfg.PllpDiv = 3u; /* MLLP = 100M */
                stcMpllCfg.PllqDiv = 3u; /* MLLQ = 100M */
                stcMpllCfg.PllrDiv = 3u; /* MLLR = 100M */
                CLK_SetPllSource(ClkPllSrcXTAL);
                CLK_MpllConfig(&stcMpllCfg);
       
                /* flash read wait cycle setting */
                EFM_Unlock();
                EFM_SetLatency(EFM_LATENCY_4);
                EFM_Lock();
       
                /* Enable MPLL. */
                CLK_MpllCmd(Enable);
       
                /* Wait MPLL ready. */
                while (Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
                {
                }
       
                /* Switch system clock source to MPLL. */
                CLK_SetSysClkSource(CLKSysSrcMPLL);
        }

match007 发表于 2021-7-3 11:25

看用户手册
时钟控制器部分

asmine 发表于 2021-7-12 11:24



我觉得,需要了解是如何倍频,分频的。

carpsnow 发表于 2021-7-12 15:23

https://bbs.21ic.com/icview-3068836-1-1.html

参考这个

chnchmhgw 发表于 2021-7-15 09:21

chnchmhgw 发表于 2021-6-28 09:38
你好。
我的PLL倍频和分频如下,帮忙看下哪里有问题,多谢亲。
        static void ClkInit(void)


昨天细看了代码,定位到原因,配置12Mhz的外部有源晶振,hc32f460运行起来,串口也有了输出打印。
华大hc32f460的官方板使用8Mhz无源晶振,关键点如下:
8M无源晶振配置:stcXtalCfg.enMode = ClkXtalModeOsc;
12M有源晶振配置:stcXtalCfg.enMode = ClkXtalModeExtClk;

         /* Switch system clock source to MPLL. */
            /* Use Xtal as MPLL source. */
            /* active crystal:ClkXtalModeExtClk,passive crystal:ClkXtalModeOsc */
                stcXtalCfg.enMode = ClkXtalModeExtClk;
                stcXtalCfg.enDrv = ClkXtalLowDrv;
                stcXtalCfg.enFastStartup = Enable;
                CLK_XtalConfig(&stcXtalCfg);
                CLK_XtalCmd(Enable);

以上问题解决。

配置12MHz有源晶振,具体配置总结如下:
(1)system_hc32f460.h的宏定义, XTAL_VALUE由8Mhz改为12Mhz
(2)keil工程配置XTAL改为12Mhz
(3)时钟初始化代码,stcXtalCfg.enMode = ClkXtalModeExtClk;(重点)
(4)PLL锁相环按照手册要求配置,在频率范围内

以上就是注意细节点。欢迎交流讨论。

wakayi 发表于 2021-8-6 20:52

华大有相关的配置工具吗

aoyi 发表于 2021-8-6 20:54

时钟配置这块真的很挠头

drer 发表于 2021-8-6 20:56

按照树形一段的找就行
页: [1]
查看完整版本: hc32f460外部晶振12Mhz如何配置