STM32关于RTC的一些有意思的发现
来源:互联网 发布:万方经济统计数据库 编辑:程序博客网 时间:2024/05/17 00:16
转自奔跑的博客
出现的现象:使用野火的RTC例程,在软件仿真时如果不需要配置,则程序会死在 RTC_WaitForSynchro() 函数中。而下载到硬件上时,有时候可以跑,有时候也会在该函数中死循环。
可能的原因:
首先,一定要确认是否使能了对后备寄存器和RTC的访问。
系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操
作。执行以下操作将使能对后备寄存器和RTC的访问:
● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问
PWR_BackupAccessCmd(ENABLE);
另外还要使能RTC时钟 RCC_RTCCLKCmd(ENABLE); 虽然该函数的说明中说只在RCC_RTCCLKConfig()函数调用之后才能调用,但是实际上如果不调用该函数,仿真时就会在 RTC_WaitForSynchro() 函数中死循环,等待RTC时钟同步。
也就是说,不论是否需要配置RTC寄存器,每次系统复位都需要执行如下操作:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_RTCCLKCmd(ENABLE);
其次,STM32的RTC对外部LSE要求比较高,最好使用负载电容为6pF的晶振。在芯片的DataSheet中有明确的说明,不能使用12.5pF的晶振。“ To avoid exceeding the maximum value of CL1 and CL2 (15 pF) it is strongly recommended to use a resonator with a load capacitance CL≤ 7 pF. Never use a resonator with a load
capacitance of 12.5 pF.”
- STM32关于RTC的一些有意思的发现
- 关于STM32的 LCD 和 RTC
- 关于STM32中RTC的校准方法
- 关于STM32中RTC的校准方法
- 关于STM32中RTC的校准方法
- STM32的RTC
- stm32的RTC
- stm32的RTC闹钟
- ARM学习《十》—关于STM32的RTC调试
- ARM学习《十》—关于STM32的RTC调试
- 关于STM32使用RTC唤醒停止模式的设置
- 有关Windows XP用户权限有意思的一些发现
- 一些关于Linux的有意思的文章
- STM32笔记----RTC的初始化
- STM32的RTC实时时钟
- STM32的RCC和RTC
- 关于树状数组一些有意思的东西
- 关于一些有意思的控件属性记录
- Lesson 2:作业2:打印当前时间。学习使用Date类和Calendar类。
- 使用Python统计字符串中单词数量
- Fragment中getActivity()和getContext()为空的问题
- Unity3D接入微信登录SDK安卓版
- bash之命令替换(command substitution)
- STM32关于RTC的一些有意思的发现
- I2C总线时序解析
- Java学习笔记—使用dbcp2数据库连接池方式连接测试数据库
- Windows系统让apache使用其他名称的配置文件修改配置文件名称指定自己的配置文件
- 二叉树的下一个结点
- c语言中 int *p = NULL 和 *p = NULL 有什么区别
- bash之算术扩展(arithmetic expansion)
- 设备的概念和总体框架
- 深入FFM原理与实践