STM32 RTC时钟的配置

1) 使能电源时钟和备份区域时钟。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能电源时钟和备份区域时钟。

2) 取消备份区写保护。

要向备份区域写入数据,就要先取消备份区域写保护 ,否则是无法向备份区域写入数据的。
PWR_BackupAccessCmd(ENABLE); //使能 RTC 和后备寄存器访问
3) 复位备份区域,开启外部低速振荡器。
BKP_DeInit();//复位备份区域
RCC_LSEConfig(RCC_LSE_ON);// 开启外部低速振荡器
4) 选择 RTC 时钟,并使能。
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择 LSE 作为 RTC 时钟
RCC_RTCCLKCmd(ENABLE); //使能 RTC 时钟
5) 设置 RTC 的分频,以及配置 RTC 时钟。
在进行 RTC 配置之前首先要打开允许配置位(CNF),库函数是:
RTC_EnterConfigMode();// 允许配置

在配置完成之后,千万别忘记更新配置同时退出配置模式,函数是:
RTC_ExitConfigMode();//退出配置模式, 更新配置

设置 RTC 时钟分频数, 库函数是:
void RTC_SetPrescaler(uint32_t PrescalerValue);

然后是设置秒中断允许, RTC 使能中断的函数是:
void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);

RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断
库函数中设置 RTC 计数值的方法是:
void RTC_SetCounter(uint32_t CounterValue)

6) 更新配置,设置 RTC 中断分组。

RTC_ExitConfigMode();//退出配置模式,更新配置

往备份区域写用户数据的函数是:
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);

例如BKP_DR1 写入 0x5050,方法是 :

BKP_WriteBackupRegister(BKP_DR1, 0X5050);
同时,有写便有读,读取备份区域指定寄存器的用户数据的函数是:
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);

7) 编写中断服务函数。

知识来源  STM32F1 开发指南(库函数版)
 

时间: 2024-11-08 04:31:51

STM32 RTC时钟的配置的相关文章

stm32——RTC实时时钟

stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间.这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件. 在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒

树莓派配置RTC时钟(DS3231,I2C接口)

1.购买基于DS3231的RTC时钟模块,并且支持3.3V的那种 2.配置树莓派 a.打开树莓派的i2c接口 sudo raspi-config -->Interfacing Options -->I2C,全部选择yes b.添加i2c模块     sudo nano /etc/modules     然后添加以下两行内容:         i2c-bcm2708         i2c-dev c.安装i2c工具,查看i2c设备b sudo apt-get install i2c-tools

[转] STM32各种时钟的区别

[原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32.     下面是从网上找的一个STM32时钟框图,比<STM32中文参考手册>里面的是中途看起来清晰一些:         重要的时钟:   PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1.HSI:高速内部时钟信号 stm3

STM32之时钟

1.时钟源 三个不同的时钟源可做系统时钟(SYSCLK): HSI 振荡器时钟 :高速内部时钟 HSE 振荡器时钟:高速外部时钟 PLL 时钟 两个二级时钟 LSI(低速内部时钟) :32kHz 低速内部 RC (LSI RC) 独立看门狗时钟源,RTC 可用于自动唤醒停止/待机模式. LSE(低速外部时钟):32.768kHz 低速外部晶振 (LSE crystal) ,可选择作为 RTC(RTCCLK) 时钟源 每一个时钟源不需要时都可以被选择性关闭,用来节省系统电源消耗 预分频器被用来设置

玩转 RTC时钟库 DS1302

1.前言 ????最近博主在弄8266编程的时候,偶然发现两个全新时钟模块压仓货: DS1302 DS3231 ????为了避免资源浪费以及重复编写代码,博主还是抱着尝试的心态去寻找能够同时兼容 DS1302.DS3231甚至其他的时钟模块的第三方库.终于,还是被我找到了 -- Rtc 时钟库. 2.RTC 2.1 简介 Arduino Real Time Clock library(Arduino平台的实时时钟库) 支持DS1302.DS1307.DS3231.DS3234 英文文档参考 wi

Cotex-M3内核LPC17xx系列时钟及其配置方法

一.背景: 最近正在接手一个项目,核心芯片既是LPC17XX系列MCU,内核为ARM的Cotex-M3内核. 想要玩转一个MCU,就一定得搞定其时钟! 时钟对MCU而言,就好比人类的心脏.由其给AHB.APB总线供给血液(时钟频率),而挂在AHB(Advance High Bus)总线上的器件就像是我们的各个器官,挂在APB(Adance Peripheral Bus)总线的外设就像是人类的四肢.各个器官和四肢只有在你的血液(时钟频率)供给恰到好处时才能正常运转. 本篇文章既是对LPC17xx系

stm32 RCC 时钟分析

stm32芯片手册上有张图表示的很清楚,一共有4个时钟源: 1.HSI(内部高速时钟 8MHz)提供可以位系统时钟提供时钟源 2.HSE(外部高速时钟)可以提供系统时钟和RTC时钟时钟源 3.LSE(低速外部时钟32.768kHz)可以为可以为RTC提供时钟源 4.LSI(低速内部时钟)可以为独立看门狗提供时钟源 首先分析一下ST公司给的库函数:我用的是3.5的库 我们看看SystemInit里是什么 void SystemInit (void) { RCC->CR |= (uint32_t)0

STM32学习笔记3-IO配置输入输出

STM32的IO配置时没什么特殊的,有个注意点就是实用IO前需要先打开其时钟线,以下是验证过oK的程序: RCC->APB2ENR|=GpioBApb2enrEn; //使能PORTB时钟 GPIOB->CRL&=GpioBitClrM5_13; // IO的模式清零 GPIOB->CRL|=GpioBit5PP;//PB.5 推挽输出 GPIOB->ODR|=1<<5; //PB.5 输出高 RCC->APB2ENR|=GpioEApb2enrEn; /

GEC2440的RTC时钟

引用:http://www.cnblogs.com/Neddy/archive/2011/12/07/2278761.html 2440的RTC时钟 移植linux到2440上发现没有时钟信息,解决方法如下: 1.在linux kernel里面用make menuconfig打开配置画面,进Device Drivers选项 找到Real Time Clock画面,按下space键选择为“*”,再进入这个选项 选中Samsung S3C series SoC RTC 在Exit退出后保存 2.修改