STM32复位和时钟控制(RCC)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

复位

STM32F10xxx支持三种复位形式,分别为系统复位、电源复位和备份区域复位。

1、系统复位

系统复位将所有寄存器设置成复位值,除了RCC_CSR(控制状态寄存器)中的相关复位标志位,通过查看RCC_CSR寄存器,可以识别复位源。

系统复位可由以下5种方式产生:

1)外部引脚NRST复位(低电平触发);

2)窗口看门狗(WWDG)计数终止

3)独立看门狗(IDOG)计数终止

4)软件复位(SW RESET),通过将中断应用和复位控制寄存器

(Application Interrupt and Reset Control Register )中SYSRESETREQ位置1。具体参考Cortex-M3 programming manual。

5)低功耗管理复位:

①通过进入等待模式(StandBy)产生复位:

通过User Option Bytes中设置nRST_STDBY位使能这种复

位模式。这时,即使执行了进入待机模式的过程,系统将

被复位而不是进入待机模式。

②通过进入停止模式(STOP)产生复位:

通过User Option Bytes中设置nRST_STOP位使能这种复

位模式。这时,即使执行了进入停止模式的过程,系统将

被复位而不是进入停止模式。

2、电源复位

电源复位设置所有寄存器置初始值,除了备份区域。

电源复位可由以下2种方式产生:

1)上电复位和掉电复位(POR/PDR reset)

2)退出等待(StandBy)模式

这些复位源都作用在NRST引脚上,并且在复位延迟期间保持低电平。

提供给设备的系统复位信号都由NRST引脚输出,对每一个内部/外部复位源,脉冲发生器都将保证一个20us最小复位周期。对于外部复位,当NRST位置低时,将产生复位信号。

3、备份区复位

备份区复位仅仅影响被分区域,有以下两种产生方式:

1)软件复位,设置备份区域控制寄存器RCC_BDCR BDRST= 1;

2)在V DD和V BAT两者掉电的前提下,V DD或V BAT上电。

时钟

系统时钟(SYSCLK)可由3种时钟源驱动:

●内部高速震荡时钟(HSI)

●外部高速震荡时钟(HSE)

●PLL时钟

设备有如下2种二级时钟源:

●40KHz的内部低速RC震荡时钟(LSI),用来驱动独立看门狗

(IDOG)、或驱动用来从停止/等待模式中恢复的RTC时钟;

●32.768KHz的低速外部晶振时钟(LSE),用来驱动RTC时钟

以上5中时钟都可以独立的打开或关闭。

时钟树如下:

1、外部高速震荡时钟(HSE)

外部时钟信号来源:

①外部时钟信号。在这种模式下,OSC_IN 接时钟输入信号,OSC_OUT

引脚悬空,输入信号是最高25Mhz的占空比是50%的方波、正弦波、三角波信号。使能方式:RCC_CR→HSEBYP 和HSEON 置1

②外部晶体/陶瓷谐振产生信号,晶振频率范围在4~16Mhz。通过

RCC_CR→ HSEON 可以开/关外部晶振

2、内部高速震荡时钟(HSI)

内部高速时钟由一个8MHz的RC震荡电路产生,能直接用作系

统时钟(SYSCLK)或2分频后作为PLL输入端信号。

HEI比HSE有跟快的启动延迟,但时钟信号不如HSE精确。当HSE停止工作时,HSI自动为系统提供时钟。通过RCC_CR→HSION

可以开/关内部时钟。

3、PLL时钟

PLL主要用来倍频内部高速时钟(HSI)和外部高速时钟(HSE)。

在是能PLL之前,需要选择PLL输入信号(HIS/2、HSE)、配置倍

频因子。当在应用中使用USB接口时,PLL输出必须配置成48MHz

或72MHz。

4、外部低速时钟(LSE)

外部低速时钟信号由一个32.768KHz的低速外部谐振器产生,可以为RTC时钟/日历提供低功耗,高精确度的时钟信号。可以通过发(Backup domain control register)RCC_BDCR LSEON 来控制LSE 的开关。

此外,外部低速时钟也可以通过旁路(bypass)产生,时钟周期最高位1MHz,具体配置流程可参照外部高速时钟(HSE)。

5、内部低速时钟(LSI)

内部低速时钟主要用来在停止(STOP)模式和等待(StandBy)模式为独立看门狗(IWDG)和自动唤醒单元(AWU)提供提供低功耗时钟信号,时钟信号在40KHz左右(30~60KHz之间)。

内部低速时钟可以通过人工校正,具体流程参见STM32参考手册Page87~88。

系统时钟(SYSCLK)

系统复位后,内部高速时钟(HSI)作为默认的系统时钟,当时钟源直接或通过PLL倍频后作为系统时钟源后,将不能被停止。

只有当目标始终源准备就绪(经过时钟开启延迟和PLL延迟),从一个时钟源切换到另一个时钟源才可能执行。否则必须等到目标时钟准备好再执行。

在时钟控制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。

RTC时钟

RTC时钟源可由HSE/128、LSE或LSI时钟提供。通过修改备份

区控制寄存器RCC_BDCR→RTCSEL[1:0]来选择。注意:除非复位备

份区,否则时钟选择后不能被修改。

LSE时钟在备份区,HSE和LSI不在。

1)如果LSE被选择作为RTC的时钟源,则当V DD掉电时,RTC不会

停止工作,只要V BAT仍然保持。

2)如果LSI被选择作为自动唤醒单元(AWU)的时钟源,则当V DD

掉电时,AWU的状态不能够被保证。

3)如果HSE的128分频作为RTC的时钟源,取消后备区写保护位要

置位:PWR_CR→DPB = 1(允许写入RTC和后备区寄存器)。如

果VDD掉电,或者器件内部的电压调节器掉电时,RTC的状态不能被保证。

看门狗(Watchdog)时钟

如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。在LSI振荡器稳定后,时钟供应给IWDG。

时钟输出(Clock-Out)功能

时钟信号可由MCO 引脚对外输出,相应的GPIO端口寄存器必须被配置为相应功能。通过配置RCC_CFGR→MCO[2:0]来选择输出时钟信号源:

相关文档
最新文档