是没人需用到外部震荡还是都能切换成功呢?就我运气差?
我使用clk_switch例程修改的,始终都切换失败,总是卡死在Clk_SwitchTo(ClkXTH),用内部震荡是能工作的,但项目要求较高,需用外部晶振。int32_t main(void)
{ volatile uint32_t u32Val = 0;
LED_init();
//RCH 22.12MHz
Clk_SwitchTo(ClkRCL);
Clk_SetRCHFreq(ClkFreq22_12Mhz);
Clk_SwitchTo(ClkRCH);
u32Val = Clk_GetHClkFreq();
LED_enable; //点灯
delay1ms(200);
LED_disable; //熄灯
delay1ms(1200);
//XTH
Clk_SwitchTo(ClkXTH);
u32Val = Clk_GetHClkFreq();
LED_enable; //点灯
delay1ms(1200);
LED_disable; //熄灯
while (1);
}
按照楼主的这段代码,我下载到芯片上是可以直接跑到底的
跟编译系统会否有关系,我用的是MDK,而且还发现使用printf函数里带用中文会出现乱码的现象 lacha 发表于 2019-10-15 09:12
跟编译系统会否有关系,我用的是MDK,而且还发现使用printf函数里带用中文会出现乱码的现象 ...
和编译系统应该没关系,你外部晶振用的是多少M?驱动库是按照32M配置的,如果不是32M,需要调节XTH相关寄存器的参数。 我用的是11.0592MHZ / 22.12MHZ,有根据PDF资料修改XTH参数的,怀疑例程不行,自己按照PDF的11个步骤重写切换外部震荡,结果还是不行。。。
void C_Unlock(void)
{ M0P_CLOCK->SYSCTRL2 = 0x5A5A;
M0P_CLOCK->SYSCTRL2 = 0xA5A5;
}
void Clk_TO_XT(en_clk_source_t enSource)
{ M0P_GPIO->P0ADS_f.P01 = TRUE; //1
M0P_GPIO->P0ADS_f.P02 = TRUE;
M0P_CLOCK->XTH_CR_f.DRIVER = 0x0A; //2 :22.12Mhz
Clk_SetXTH_StableTime(ClkCycle16384); //3
C_Unlock(); //4
M0P_CLOCK->SYSCTRL0_f.XTH_EN = TRUE; //5
//频率大于24MHZ还需加入FLASH等待 //6
while (FALSE == Clk_GetClkRdy(ClkXTH)) ; //7
delay1ms(10);
C_Unlock(); //8
M0P_CLOCK->SYSCTRL0_f.CLK_SW4_SEL = ClkXTH; //9
C_Unlock(); //10
M0P_CLOCK->SYSCTRL0_f.RCH_EN = FALSE; //11
} 是不是板子没弄好。。。 使用内部RC震荡可以正常工作的,外部震荡就只是增加1个晶振和配套的2个电容,晶振和电容都换过好几次了
就用例程,按要求做是可以起振的。但是晶振起振可靠性有点说不准!芯片要求比较高,比如芯片是3.3V供电如果I/O口有5V的电平那就根本不会起振! kq800 发表于 2019-11-3 00:36
就用例程,按要求做是可以起振的。但是晶振起振可靠性有点说不准!芯片要求比较高,比如芯片是3.3V供电如果 ...
L011 不支持5V-torlance 功能, IO电压不能超过VDD +0.3V,否则会损坏MCU
晶振没有问题吗 应该不是共性问题
你PCB 设计时应该注意,不要让VCAP的滤波电容靠近晶体
会相互影响
是不是楼主的晶振质量不行
页:
[1]