你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8 HSE 时钟切换问题

[复制链接]
albertjacksoon 提问时间:2014-12-11 21:57 /
本帖最后由 albertjacksoon 于 2014-12-11 22:29 编辑

    CLK->ECKCR = 0x01;
    while((CLK->ECKCR != 0x03));
    CLK->SWR = 0x04;
    CLK->CKDIVR = 0x00;
    while(!(CLK->SWCR & 0x08));
    CLK->SWCR |= 0x02;
在时钟切换过程中停止在    while(!(CLK->SWCR & 0x08)); 屏蔽改行代码后MCU能运行使用hse 输出CCO正常为晶振频率(接近考虑为器件误差).在主函数中写入  while (1)
  {
//        GPIO_ToggleBits(GPIOB, GPIO_Pin_2);
            GPIOB->ODR ^= GPIO_Pin_2;
    }
只能看到1.1M的方波(晶振是13.56M).
并且使用GPIO_ToggleBits(GPIOB, GPIO_Pin_2);与GPIOB->ODR ^= GPIO_Pin_2;比较输出的方波频率相差较大,使用寄存器操作时为1.1M,使用库函数操作时只有300多K,开发环境是COSMIC+STVD.请高手指教.

收藏 评论5 发布时间:2014-12-11 21:57

举报

5个回答
那片清茶 回答时间:2014-12-12 09:35:29
你看一下切换到HSI的程序:
    CLK_SWCR = CLK_SWCR | 0x02;    // SWEN <- 1
    CLK_SWR = 0xE1;                // 选择HSI为主时钟源
    while((CLK_SWCR & 0x08) == 0); // 等待切换成功

    CLK_SWCR = CLK_SWCR & 0xFD;    // 清除切换标志
albertjacksoon 回答时间:2014-12-12 13:50:37
清茶老师 按你的代码修改后还是不可以,仍然停止等待切换成功这条代码上.
小贾-370388 回答时间:2014-12-12 16:38:33
还以是你外部文件的问题,工程中用到的源文件看看全不全
albertjacksoon 回答时间:2014-12-13 17:12:40
全的 直接从st官网下载的外设库.源文件不全就会报错啦.而且整个工程 只有时钟配置这几条和GPIO的翻转操作.
奔跑小蜗牛 回答时间:2014-12-14 12:25:07
。。。IO口输出速度怎么可能达到晶振的速度??手册的2M 10M 50M是翻转速度,不是输出速度。13.56M的晶振,IO能输出个2M 3M就很不错了。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版