[开发工具]

hc32f460外部晶振12Mhz如何配置

[复制链接]
7483|9
手机看帖
扫描二维码
随时随地手机跟帖
chnchmhgw|  楼主 | 2021-6-25 10:11 | 显示全部楼层 |阅读模式
当前使用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_t  enSysClkSrc;
                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 | 显示全部楼层
2451160ebb5cd641ca.png

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

使用特权

评论回复
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

主题

14

帖子

0

粉丝