关于STM8S的晶体自动切换的问题

[复制链接]
5871|4
 楼主| visionliweixin 发表于 2012-12-28 21:07 | 显示全部楼层 |阅读模式
我使用的是STM8S207R8+STVD+ST Link,上电时选择的是外部16M晶体
void CLK_Configuration(void)
{
  ErrorStatus status = ERROR;
  CLK_DeInit();
  CLK_HSECmd(ENABLE);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
  CLK_ClockSwitchCmd(ENABLE);
  status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,
                                 CLK_CURRENTCLOCKSTATE_DISABLE);
  CLK_ITConfig(CLK_IT_CSSD, ENABLE);
  CLK_ClockSecuritySystemEnable();
}
因为要省电,工作60秒后进入Auto Wakeup模式
  AWU_Cmd(ENABLE);
  AWU_Init(AWU_TIMEBASE_512MS);
  
当下了halt后,外部晶体停振,系统启用了内部的HSI/8 = 2MHz,后来唤醒退出AWU模式后,系统就一直
使用2MHz的频率,不能自动切换到外部16M,而且就算了重下
  CLK_HSECmd(ENABLE);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);   
也不行,甚至重CALL  CLK_Configuration();还是一样,再也不能切换到外部晶体,请大家帮忙分析,谢谢!
 楼主| visionliweixin 发表于 2013-1-2 14:08 | 显示全部楼层
为何没人回答呀
 楼主| visionliweixin 发表于 2013-1-3 07:18 | 显示全部楼层
还是没人回答呀,看来大家都在过元旦,只好结贴了
IJK 发表于 2013-1-3 09:06 | 显示全部楼层
首先,调用CLK_HSECmd(ENABLE)后,外部16M晶体应该能重新起振。

其次,个人觉得,应该先调用CLK_ClockSwitchConfig,然后再调用CLK_ClockSwitchCmd(ENABLE); 才对。
 楼主| visionliweixin 发表于 2013-4-17 11:47 | 显示全部楼层
终于找到问题了,要把安全时钟全能关掉就可以了
CLK_ITConfig(CLK_IT_CSSD, ENABLE);
CLK_ClockSecuritySystemEnable();
这两句不能加上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

0

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