发 帖  
原厂入驻New

请问STM8主时钟如何切换?

61 STM8 主时钟
分享
2020-11-16 06:28:16   评论 分享淘帖 邀请回答
1个回答
时钟切换功能为STM8用户提供了一种易用、快速、安全的从一个时钟源切换到另一个时钟源的途径。
系统启动
为使STM8系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。一旦主时钟源稳定,用户程序可将主时钟切换到另外的时钟源。
主时钟切换的过程
用户可选择下面两种方式切换时钟源:
自动切换
自动切换使用户可使用最少的指令完成时钟源的切换。应用软件可继续其它操作而不用考虑切换事件所占的确切时间。如图15所示。

(图15:STM8 时钟切换流程图(自动切换))
1.设置切换控制寄存器(CLK_SWCR)中的位SWEN,使能切换机制。
2.向主时钟切换寄存器(CLK_SWR)写入一个8位的值,用以选择目标时钟源。寄存器CLK_SWCR中的SWBSY被硬件置位,目标源振荡器启动。原时钟源依然被用于驱动内核和外设。
一旦目标时钟源稳定,寄存器CLK_SWR中的值将被复制到主时钟状态寄存器(CLK_CMSR)中去。
此时,SWBSY位被清除,新时钟源替代旧时钟源。寄存器CLK_SWCR中的标志位SWIF被置位,如果SWIEN为1,则会产生一个中断。
手动切换
手动切换与自动切换不同,不能够立即切换,但它允许用户精确地控制切换事件发生的时间,如图16所示。

(图14:STM8 时钟切换流程图(手动切换))
1.向主时钟切换寄存器(CLK_SWR)写入一个8位的值,用以选择目标时钟源。寄存器CLK_SWCR中的SWBSY被硬件置位,目标源振荡器启动。原时钟源依然被用于驱动内核和外设。
2.用户软件需等待至目标时钟源稳定。寄存器CLK_SWCR中的标志位SWIF用以指示目标时钟源是否已稳定,如果SWIEN为1,则会产生一个中断。
3.最后,由用户软件在所选的时间点,设置寄存器CLK_SWCR中的位SWEN,执行切换。无论是手动切换还是自动切换,如果原时钟源仍然在被其他模块使用(如LSI在被独立看门狗使用),则原时钟源将不会被自动关闭。配置内部时钟寄存器CLK_ICKR和外部时钟寄存器
CLK_ECKR中的相应位,可关闭原时钟源。如果由于某种原因时钟切换没有成功,软件可通过清除标志位SWBSY以复位当前的切换操作,使寄存器CLK_SWR恢复原值(原时钟源)。
2020-11-16 09:44:13 评论

举报

只有小组成员才能发言,加入小组>>

329个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表