320 likes | 628 Views
STM32 处理器 时钟系统. STM32 共有 5 个时钟源: HSI : RC 振荡器, 8MHz ( 精度较差) HSE :谐振器或外部时钟源, 4-16MHz PLL : 锁项环倍频输出 , 最大不能超过 72MHz LSI : RC 振荡器, 30 - 60KHz LSE: 石英晶体, 32.768KHz 每个时钟源在不需要使用的时候都可以单独的打开或者关掉,以节省功耗。. STM32F103. STM32F107. HSE时钟. 高速外部时钟信号( HSE )可以通过以下 2 个可能的时钟源来产生:
E N D
STM32 共有5个时钟源: • HSI : RC振荡器, 8MHz (精度较差) • HSE :谐振器或外部时钟源,4-16MHz • PLL :锁项环倍频输出,最大不能超过72MHz • LSI:RC振荡器,30-60KHz • LSE:石英晶体,32.768KHz • 每个时钟源在不需要使用的时候都可以单独的打开或者关掉,以节省功耗。
HSE时钟 • 高速外部时钟信号(HSE)可以通过以下 2 个可能的时钟源来产生: • HSE 外部 晶体/陶瓷 共振器 • HSE 用户外部时钟 • 共振器和电容器必须尽量跟振荡器引脚靠近,以减少输出失真和启动稳定时间,电容值必须根据所选择的振荡器调整。
外部时钟源(HSE 旁路) • 在该模式下,必须提供外部的时钟源,外部时钟源可以达到 25MHz,你可以通过设置 时钟控制寄存器(RCC_CR)中的 HSEBYP 和 HSEON 位选择该模式。 • 外部 晶体/陶瓷 共振器(HSE 晶体) • 4-16MHz 的外部振荡器具有能够在主时钟上产生一个非常精确的速率的优点。 • HSE 晶体振荡器可以通过时钟控制寄存器(RCC_CR)中的 HSEON 位来打开或禁用。
HSI时钟 • HSI 时钟信号通过一个 8MHz 的内部 RC 振荡器产生,并且可以被直接用作系统时钟, 或者经过 2 分频后作为 PLL 的输入。 • HSI RC 振荡器不需任何外部组件就能提供系统时钟; 启动时间比 HSE 晶体振荡器更短;频率精度较差; • 制造工艺决定了不同芯片之间的RC振荡器频率不同。这就是为什么每个芯片HIS时钟频率在出厂前已经被ST校准到1%(25°C)。系统复位时,出厂校验值装载到时钟控制寄存器(RCC_CR)的 HSICAL[7:0]位
HSI RC 振荡器可以通过时钟控制寄存器(RCC_CR)的 HSION 位打开或者禁用。 • 当 HSE 晶体振荡器失效时,HSI 信号同样也能用作备用时钟源。
PLL • 内部的 PLL 可以被用于将 HIS RC 振荡器的输出时钟频率倍频,请参考图 3.7 和时钟控 制寄存器(RCC_CR)。 • PLL 必须在使用前被配置好(选择 HIS 振荡器 2 分频或者 HSE 振荡器作为 PLL 的输入 时钟,和其他一些倍频参数),一旦 PLL 启动,配置好的参数不能够被修改。 • 如果 USB 接口在应用中被用到,PLL 必须通过编程输出 48MHz 或者 72MHz,为了提供一个 48MHz 的 USBCLK 时钟,这一点是必要的。
LSE时钟 • LSE 振荡器是一个 32.768kHz 的低速外部晶体或者陶瓷共振器,他具有向专用于时钟/ 日历以及其他一些计时功能实时时钟(RTC)以低功耗提供高精准时钟源的优点。 • LSE 晶体振荡器通过备份区域控制寄存器(RCC_BDCR)的 LSEON 位打开或者禁用 • 在启动的时候,LSE 晶体振荡器输出时钟信号并没有被释放,直到该标志位被硬件置位。 如果在时钟中断寄存器(RCC_CIR)中打开了的话,将会产生一个中断。
外部时钟源(LSE 旁路) • 在这个模式下,必须一个外部的时钟源,其频率为 32.768kHz,你可以通过设置备份区 域控制寄存器(RCC_BDCR)中的 LSEBYP 和 LSEON 位来选择该模式。 • 占空比为50% 的外部的时钟信号驱动 OSC32_IN 引脚,同时 OSC32_OUT 引脚必须被设为高阻状态。
LSI时钟 • LSI RC 振荡器作为一个低功耗时钟源,可以为独立的看门狗(IWDG)和自动唤醒单 元(AWU)运行在停止和待机模式时提供时钟。 • LSI RC 振荡器可以通过控制/状态寄存器(RCC_CSR)的 LSION 位来打开或者禁用, 控制/状态寄存器(RCC_CSR)中的 LSIRDY 标志指示了低速内部振荡器是否是稳定的。启动 时,时钟并没有被释放,直到该标志位被硬件置位,如果在时钟中断寄存器(RCC_CIR) 中打开了的话,将会产生一个中断。
系统时钟(SYSCLK)选择 • 在系统复位之后,HIS 振荡器被选作系统时钟。当一个时钟源被直接或者通过 PLL 间 接用于系统时钟的时候,该时钟不能够被停止。 • 从一个时钟源到另外一个时钟源的切换仅当目标时钟源准备好的时候才会发生。如果一个尚未准备好的时钟源被选择了,那么切换必须等到 该时钟源准备好了后才发生。时钟控制寄存器(RCC_CR)中的状态位指示了哪些时钟源准 备好了,哪个时钟源目前正被用作系统时钟。
时钟安全系统(CSS) • 时钟安全系统可以通过软件激活,在这种情况下,时钟检测器在 HSE 振荡器启动延时 后被使能,并当振荡器停止的时候禁用,如果在 HSE 振荡器时钟上检测到一个失效,这个 振荡器被自动禁用。一个时钟失效事件被发送到打断 TIM1 高级控制定时器的暂停输入并且 产生一个中断来通知软件该次失效(时钟安全系统中断 CSSI),以使得 MCU 能够进行补救 措施。CSSI 被连接到 Cortex-M3 的 NMI(不可屏蔽中断)异常向量。 • 如果 HSE 振荡器被直接或者间接的用作系统时钟(间接意味着:它是作为 PLL 输入时 钟,而 PLL 时钟又用作系统时钟),一个被检测到的失效会导致系统时钟转换为 HIS 振荡器 并且导致外部 HSE 振荡器的禁用。如果当时钟失效时,HSE 振荡器(被分频或者未被分频)是用作系统时钟 PLL 的时钟入口,PLL 也会被禁用。
RTC时钟 • RTCCLK 时钟源可以是 HSE/128,LSE 或者 LSI 时钟,这可以通过编程备份区域控制 寄存器(RCC_BDCR)的 RTCSEL[1:0]位来选择,这个选择只有通过复位备份区域才能修 改。
看门狗时钟 如果独立的看门狗(IWDG)被硬件选项或者软件访问启动了,LSI 振荡器被强制打开, 并且不能够被禁用,在 LSI 振荡器开始工作后,它的时钟被提供给 IWDG。
时钟输出性能 • 微控制器时钟输出(MCO)性能使得时钟能够输出到外部 MCO 引脚,相关的 GPIO 端 口的配置寄存器必须被编程为复用功能模式,下面 4 个时钟信号中的 1 个可以被选作 MCO 的时钟。 • SYSCLK • HSI • HSE • 2 分频的 PLL • 通过时钟配置寄存器(RCC_CFGR)的 MCO[2:0]位进行选择。
RCC寄存器描述 • 时钟控制寄存器(RCC_CR) • 时钟配置寄存器(RCC_CFGR) • 时钟中断寄存器(RCC_CIR) • APB2 外设复位寄存器 (RCC_APB2RSTR) • APB1 外设复位寄存器 (RCC_APB1RSTR) • AHB 外设时钟使能寄存器 (RCC_AHBENR) • APB2 外设时钟使能寄存器(RCC_APB2ENR) • APB1 外设时钟使能寄存器 (RCC_APB1ENR) • 备份区域控制寄存器 (RCC_BDCR) • 控制/状态寄存器 (RCC_CSR) • RCC寄存器映射
时钟控制寄存器(RCC_CR) • 地址偏移: 00h • 复位值:0000 XX83h,X 未定义 • 访问:无等待状态,能以字,半字或字节方式访问
时钟配置寄存器(RCC_CFGR) • 地址偏移: 04h • 复位值:0000 0000h • 访问: 0 <= 等待周期 <= 2, 能以字,半字,和字节的方式访问 当且仅当在时钟源切换时进行访问的话,插入 1 或 2 个等待周期。
时钟中断寄存器(RCC_CIR) • 地址偏移: 08h • 复位值: 0000 0000h • 访问:无等待周期,能以字,半字,和字节的方式访问
APB2 外设复位寄存器(RCC_APB2RSTR) • 地址偏移: 0Ch • 复位值: 0000 0000h • 访问:没有等待周期,能以字,半字和字节的方式访问
APB1 外设复位寄存器 (RCC_APB1RSTR) • 地址偏移:10h • 复位值: 0000 0000h • 访问:无等待周期,能以字,半字和字节方式访问
AHB 外设时钟使能寄存器 (RCC_AHBENR) • 地址偏移: 14h • 复位值: 0000 0014h • 访问:无等待周期,能以字,半字和字节方式访问
APB2 外设时钟使能寄存器(RCC_APB2ENR) • 地址偏移: 18h • 复位值:0000 0000h • 访问:能以字,半字和字节方式访问 • 无等待周期,除非正在访问 APB2 区域的某个外设,在这种情况下,插入等待周期,直到对 当前的这个 APB2 外设的访问结束。
APB1 外设时钟使能寄存器 (RCC_APB1ENR) • 地址偏移: 1Ch • 复位值:0000 0000h • 访问:能以字,半字和字节访问。 • 无等待周期,除非正在访问 APB2 区域的某个外设,在这种情况下,插入等待周期,直到对 当前的这个 APB1 外设的访问结束。
备份区域控制寄存器 (RCC_BDCR) • 地址偏移: 20h • 复位值: 0000 0000h, 由备份区域复位而复位。 • 访问:0 <= 等待周期 <= 3, 能以自,半字和字节方式访问 • 等待周期在对该寄存器连续的访问之间插入
控制/状态寄存器 (RCC_CSR) • 地址偏移:24h • 复位值: 0C00 0000h, 除复位标志外都由系统复位清零,复位标志只能由电源复位清零 • 访问: 0 <=等待周期 <= 3, 能以字,半字和字节的方式访问。 • 在对该寄存器的连续访问间插入等待周期
系统滴答定时器 (SysTick) • 系统滴答校准值为9000,当系统滴答时钟为9M(HCLK/8最大值),产生1ms时间基准。
RCC寄存器映射 寄存器映射和复位值