STM32
直播中

张玉珍

7年用户 1041经验值
私信 关注
[问答]

STM8 CCO不能输出的原因?

在CPU的频率是上电复位的默认值,HSI/8,也就是2M的时候,CCO能够正常的输出,通过逻辑分析仪测试正好是2M。但是当在程序开始运行的时候,加上
while(bitRead(CLK_ICKR,HSIRDY_POS)==0); //wating until HSI ready
  CLK_CKDIVR=0x00;//set HSIDIV==00,fHsi==fHsi RC Output,16M
也就是将CPU设置成为16M的时候,CCO却不能输出了,通过ST LINK 查看,CCORDY=1,CCOBSY=1。
使用软件延时测试小灯泡的闪烁速度,可以看出2M和16M下的闪烁明显不同。16M的速度应该是设置成功了。但是为什么CCO不能够输出呢?求版主指教。

回帖(1)

is.milk

2024-5-17 18:13:22
STM8 CCO(Clock Configuration Output)不能输出的原因可能有以下几点:

1. 配置错误:请确保您正确配置了CCO。在STM8系列中,CCO的配置涉及到CLK_ICKR、CLK_CCOR、CLK_CCORLS、CLK_CCODIVR等寄存器。请检查这些寄存器的配置是否正确。

2. 时钟源未准备好:在更改CPU频率之前,请确保新的时钟源已经准备好。在您的代码中,您已经使用了`while(bitRead(CLK_ICKR,HSIRDY_POS)==0);`来等待HSI准备好。请确保在更改频率之前,HSI已经稳定。

3. CCO输出引脚配置:请检查CCO输出引脚是否已正确配置。在STM8系列中,CCO输出引脚通常需要配置为模拟输入或开漏输出。请检查您的引脚配置是否正确。

4. 时钟分频错误:在您的代码中,您使用了`CLK_CKDIVR=0x00;`来设置HSIDIV。请确保这个值是正确的,以便在更改频率时,CCO的输出频率不会受到影响。

5. 软件延时问题:您提到使用软件延时测试小灯泡的闪烁速度。请确保软件延时的实现是准确的,以便在不同频率下观察到正确的闪烁速度。

6. 硬件问题:如果以上步骤都无法解决问题,可能是硬件方面的问题。请检查您的STM8开发板和外部电路,确保没有短路、断路或其他硬件故障。

建议您按照以下步骤进行排查:

1. 确认CCO相关寄存器的配置是否正确。
2. 检查CCO输出引脚的配置。
3. 确保时钟分频设置正确。
4. 检查软件延时的实现。
5. 检查硬件连接和电路。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

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