[STM8] STM8时钟问题请教

[复制链接]
1491|3
 楼主| 拿起书本 发表于 2013-10-11 22:31 | 显示全部楼层 |阅读模式
原来用内部16M的串口波特率正常,切到外部16M晶振后全乱码了,一步步查下去发现 CLK_GetClockFreq();得到的居然是24M频率,但我实现接的是16M晶振,也正常起振了,示波器显示也是16M。我的切换外部时钟的代码如下:

u32 ttt;
ErrorStatus status = ERROR;
CLK_DeInit();
ttt=CLK_GetClockFreq();//这里得到的是2M
CLK_HSECmd(ENABLE);
CLK_HSICmd(ENABLE);
CLK_LSICmd(ENABLE);
while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
ttt=CLK_GetClockFreq();//这里得到的是2M
CLK_ClockSwitchCmd(ENABLE);
status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);
if (status == SUCCESS)  //SUCCESS or ERROR
{
CLK_ClockSecuritySystemEnable();
ttt=CLK_GetClockFreq();//这里得到的是24M
}

tianli1980 发表于 2013-10-12 20:17 | 显示全部楼层
你仔细阅读下pdf,然后分析每个一个函数,是不是中间被倍频啦
cjhk 发表于 2013-10-13 10:22 | 显示全部楼层
有可能是寄存器设置的问题   楼主   仔细查一查代码
xxiao6130 发表于 2013-10-13 12:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部