文件名称:应用实例-a2-漫画相对论
文件大小:6.09MB
文件格式:PDF
更新时间:2024-07-01 09:23:28
STM8 STVD IAR 寄存器 库函数
4.7应用实例 4.7.1时钟切换 HSE、HSI、LSI都可以作为系统主时钟源,STM8单片机复位以后默认 HSI的 8分频作为系统主时 钟,其原因是 HSI稳定时间短,而其 8分频又可以保证系统在较差的 VDD条件下安全启动。在系统运行 的过程中可以切换系统的主时钟源。系统时钟源的切换有 2种方式:自动切换、手动切换。 自动切换可以使用最少的指令来完成主时钟源的切换,用户程序可以处理其他事物而不用关心确切 的切换时间;手动切换在硬件准备好之后不立即切换,允许用户精确的控制切换发生的时间。 自动切换的步骤为: 1.设置切换控制寄存器 CLK_SWCR中的 SWEN位,使能时钟切换。 2.设置主时钟切换寄存器 CLK_SWR,选择目标时钟源。切换控制寄存器中的切换忙标志位 SWBSY 被硬件置位,目标时钟源启动,原时钟源依旧驱动内核和外设。一旦目标时钟源稳定,主时钟切换寄存 器 CLK_SWR中的值将被复制到主时钟状态寄存器 CLK_CMSR中。此时,SWBSY位被硬件清零,目标 时钟源替代原时钟源,CLK_SWCR寄存器中的时钟切换中断标志位 SWIF被硬件置位,如此时钟切换中 断被使能,则会产生中断。 手动切换的步骤为: 1.设置主时钟切换寄存器 CLK_SWR,选择目标时钟源。SWBSY位会被硬件置位,目标时钟源启动, 原时钟源依然驱动内核和外设。 2.用户程序通过读取 CLK_SWCR寄存器的 SWIF位来等待目标时钟源准备就绪,SWIF为 1时代表 目标时钟源准备就绪。如果时钟切换被使能,SWIF被硬件置位时将触发中断。 3.如果目标时钟源准备就绪,则用户程序在预期的时间点将 CLK_SWCR寄存器的 SWEN位置位来进 行时钟切换。 通过判断 SWIF位可以判断时钟切换是否完成,通过读取 CLK_CMSR寄存器可以得知当前的系统主 时钟源。切换完成之后要写 SWIF位为 0你来清零此标志。 不管是自动切换还是手动切换,如果原时钟源在切换后仍然被其他模块使用,则原时钟源不会被自 动关闭,需要通过配置内部时钟寄存器 CLK_ICKR或外部时钟寄存器 CLK_ECKR来关闭。 如果时钟切换没有成功,可以通过软件清零 SWBSY位来复位当前切换,使 CLK_SWR恢复原时钟 源。