STM32
直播中

klysa

13年用户 1270经验值
私信 关注
[问答]

求助,关于STM8 HSE时钟切换问题求解


    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.请高手指教.


回帖(1)

李娓仑

2024-5-17 10:33:45
你看一下切换到HSI的程序:
    CLK_SWCR = CLK_SWCR | 0x02;    // SWEN <- 1
    CLK_SWR = 0xE1;                // 选择HSI为主时钟源
    while((CLK_SWCR   0x08) == 0); // 等待切换成功

    CLK_SWCR = CLK_SWCR   0xFD;    // 清除切换标志
举报

更多回帖

发帖
×
20
完善资料,
赚取积分