STM32复位和时钟控制(RCC)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]来选择输出时钟信号源: