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 时钟初始化函数,关于PLL倍频的系数需要修改 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);
} 看用户手册
时钟控制器部分
我觉得,需要了解是如何倍频,分频的。 https://bbs.21ic.com/icview-3068836-1-1.html
参考这个 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锁相环按照手册要求配置,在频率范围内
以上就是注意细节点。欢迎交流讨论。 华大有相关的配置工具吗 时钟配置这块真的很挠头 按照树形一段的找就行
页:
[1]