STM8 HSE 时钟切换问题
本帖最后由 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.请高手指教.
你看一下切换到HSI的程序:
CLK_SWCR = CLK_SWCR | 0x02; // SWEN <- 1
CLK_SWR = 0xE1; // 选择HSI为主时钟源
while((CLK_SWCR & 0x08) == 0); // 等待切换成功
CLK_SWCR = CLK_SWCR & 0xFD; // 清除切换标志
清茶老师 按你的代码修改后还是不可以,仍然停止等待切换成功这条代码上. 还以是你外部文件的问题,工程中用到的源文件看看全不全 全的 直接从st官网下载的外设库.源文件不全就会报错啦.而且整个工程 只有时钟配置这几条和GPIO的翻转操作. 。。。IO口输出速度怎么可能达到晶振的速度??手册的2M 10M 50M是翻转速度,不是输出速度。13.56M的晶振,IO能输出个2M 3M就很不错了。
页:
[1]