打印
[STM8]

STM8S003F的外部晶振需要怎么设置寄存器才可以运行

[复制链接]
2367|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
尛舞icc|  楼主 | 2015-3-20 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位:STM8S003F3P6单片机  外部晶振要怎么设置寄存器   弄了好几天了  都没成功  程序一直卡在 返回外部晶振切换的标志位上了   附上代码:
void clock_select(void)//主时钟选择
{
        CLK_SWCR |= 0X02;    //SWEN置1,使能切换
        CLK_SWR=0XB4; //目标时钟源--0XB4指HSE     这里可以选择3种 震荡         
        LED=1;//LED调试专用
        while((CLK_SWCR&0X08)==0); //等待,直到切换成功,SWIF被置1
        LED=0;
        CLK_SWCR = 0;        //消除标志位
        CLK_CSSR |= 0X01;    //打开时钟安全系统CSS
}
程序就卡在while里面    怎么都没反应  会不会是晶振坏了  ?还是需要其他什么设置  外部晶振用的32.768K,2个电容用的是15pf
沙发
小浣熊| | 2015-3-20 23:42 | 只看该作者
在循环里面加个延时和跳转试试,这样就能检验是否是while循环的问题。。

使用特权

评论回复
板凳
尛舞icc|  楼主 | 2015-3-21 22:11 | 只看该作者
小浣熊 发表于 2015-3-20 23:42
在循环里面加个延时和跳转试试,这样就能检验是否是while循环的问题。。

我那个LED 就是测试这个的   灯点亮了   没关掉

使用特权

评论回复
地板
ansifa| | 2015-3-22 10:30 | 只看该作者
void  Fosc_Init(void)
{
    CLK_SWR = 0xB4;       //设置外部时钟作为主时钟源
    while(CLK_ECKR_HSERDY==0);
    CLK_SWCR_SWEN = 1;    //切换时钟使能
    while(CLK_SWCR_SWBSY==0);    //等待切换忙标志
    while(CLK_SWCR_SWBSY==1);
    while(CLK_SWCR_SWIF==0);
    CLK_SWCR_SWIF = 0;    //清除切换标志
    CLK_SWCR_SWEN = 0;
    CLK_ICKR_HSIEN = 0;
}
试试这样

使用特权

评论回复
5
尛舞icc|  楼主 | 2015-3-22 15:49 | 只看该作者
ansifa 发表于 2015-3-22 10:30
void  Fosc_Init(void)
{
    CLK_SWR = 0xB4;       //设置外部时钟作为主时钟源

感谢  问题找出来了   全新的晶振居然坏了    换了一个晶振好了

使用特权

评论回复
6
小浣熊| | 2015-3-26 13:25 | 只看该作者
尛舞icc 发表于 2015-3-21 22:11
我那个LED 就是测试这个的   灯点亮了   没关掉

哦哦  

使用特权

评论回复
7
cowboy2014| | 2015-3-30 17:29 | 只看该作者
尛舞icc 发表于 2015-3-22 15:49
感谢  问题找出来了   全新的晶振居然坏了    换了一个晶振好了

各种问题都能遇到,不可思议

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

230

帖子

2

粉丝