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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版