您的位置 首页 ADAS

重返STM32之—RTC运用

STM3f10x的RTC时能涉及到的寄存器有RCC,BKP和RTC这三个大类寄存器;其中RCC主要控制了实时时钟和备份区的电源使能和时钟使能;RTC模块和时…

STM3f10x的RTC时能触及到的寄存器有RCC,BKP和RTC这三个大类寄存器;其间RCC首要操控了实时时钟和备份区的电源使能和时钟使能;RTC模块和时钟装备体系的寄存器是在后备区域的(即BKP),经过BKP后备区域来存储RTC装备的数据能够让在体系复位或待机形式下唤醒后RTC里边装备的数据保持不变;为此备份区还得触及一个寄存器PWR,电源办理寄存器,备份区的写保护位在PWR->CR的第八位。
因为整个RTC都是坐落后备区,并且RTC的APB1总线和内核的APB1总线是独立的,所以在体系复位和唤醒时,RTC和BKP的那些时钟不必重新装备;他们只受Backup domain software reset这个位和体系彻底掉电的影响。所以呢;RTC只需有备用电池,它能够彻底独立作业。

如图一和图二所示

图一

图二
我们要清楚f10x系列的RTC算不上一个真实意义上的RTC,它仅仅一个计数器,精度上不免差强人意,所以规划要注意是否满意计时要求。
假如是要完结实时时刻以上一切的寄存器都要有相应设置,假如只用秒中止,那么只需要设置RCC和RTC的寄存器就能够了。

以下以完结实时时钟为例解说初始化进程。

  1. 检测后备区是否已有有用符号

BKP->DR1 != 0x5050;//(DR1 TO DR42)

  • 库函数

BKP_ReadBackupRegister(BKP_DR1) != 0x5050;

  1. 敞开电源办理和备份区时钟

(RCC->APB1ENR |=1<<28;//POWER);
(RCC->APB1ENR |=1<<27;//BACKUP);

  • 库函数

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

  1. 撤销备份去写保护

(PWR->CR |=1<<8;//WP);

  • 库函数
  • 复位后备区一切寄存器

RCC->BDCR |=1<<16;
RCC->BDCR &=~(1<<16);

  • 库函数
  • 敞开外部32k晶振

RCC->BDCR |=1<<0;

  • 库函数
  • 32k晶振是否正常作业
  • 库函数

while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);

  1. 挑选32k为RTC时钟并使能RTC
  2. 库函数
  3. 等候RTC操作和同步完结
  4. 库函数
  5. 使能秒中止
  6. 库函数

RTC_ITConfig(RTC_IT_SEC, ENABLE);

  • 装备RTC
  • 答应装备

//set time—

  • 库函数

BKP_WriteBackupRegister(BKP_DR1, 0X5050);

  1. 假如时钟已被设置过(RTC没有断电)
  2. 等候同步
  3. 开中止
  4. 等候操作完结
  5. 库函数

RTC_ITConfig(RTC_IT_SEC, ENABLE);

最终装备RTC中止优先级。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/274375.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部