写在前面的话:STM32F0项目进阶系列是硬件系统工程师星克曼以项目进阶的方式写出的入门教程,以项目开发为蓝底,快速学习进入实战。
STM32 I2C总线在上一讲 STM32F0项目进阶之I2C 中已经讲过了,已经将标准库抽象成hal_i2c.c和hal_i2c.h了,下面的就是适配不同的芯片了,这次我们适配一下DS1307。
芯片手册如下:www.maximintegrated.com/en/DS1307.pdf
电路配置
引脚图如下:
引脚描述如下:
电路配置如下:
BCD格式
注意:时间和日期的格式均是BCD格式的。
上电工作
上电即可以工作,时钟使能的话,就没有其它配置;如果没有使能就看要点二。
时钟使能
00h 地址的寄存器第7 位为器件时钟允许位(CH),此位为1则芯片未开始工作,即时钟未走时,所以在上电时单片机要先读出秒,并判断位7(CH)是否为1,如为1要把该位清零写入秒寄存器(地址为0),并把其他的时间单元设定为默认值。如果上电复位时读出的秒的最高位CH为0,说明时钟已工作(前已对CH清0,且停电后有备用电池),此时不能重写时间单元!
时间配置
直接把时间值写入0x00~0x06的时间寄存器。
时间读取
直接读取0x00~0x06的时间寄存器即可。
芯片时钟输出
控制寄存器的描述如下
要想芯片OUT脚输出一定频率的时钟,BIT4的SQWE需要被使能,输出频率是靠RS[1:0]配置。
关键字:STM32F0 实时时钟 DS1307
引用地址:
STM32F0项目进阶之实时时钟DS1307
推荐阅读最新更新时间:2024-11-13 22:40
PIC单片机上实时时钟PCF8563测试程序
..............................PCF8563测试程序主函数............................ ............................................................................... ............................................................................... #include #include pcf8563.h #include IIC.h __CONFIG(FOSC_INTOSC&WDTE_OFF&MCLRE_OFF)
[单片机]
STC8H开发(十四): I2C驱动RX8025T高精度实时时钟芯片
计时时钟芯片概览 常用的计时时钟芯片有 DS12C887, DS1302, DS1307, DS3231, RX8025, 各型号还有衍生型号. 可以看到到大部分是Dallas生产的芯片, RX8025的厂商是Epson. 其中 DS1302 和 DS1307 可以看成是同一芯片的不同协议版本(SPI和I2C), 需要外接晶振, 如果晶振不带温补, 计时误差受温度影响较大. DS12C887是内建晶振的DS12C885, 在出厂时已经经过校准, 在+25°C时误差为±1分钟/月. DS12C887使用并口, 比较浪费IO资源, 另外体积也较大, 现在大都用于DIY用途. DS3231 自带温补晶振, 精度很高, 在 范围内误差
[单片机]
STM32F10x芯片RTC实时时钟
1、介绍 系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问: l 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟(调用:RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE)); l 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问(调用:PWR_BackupAccessCmd(ENABLE))。 2、RTC注意事项 l RTC_PRL、RTC_ALR、RTC_CNT和
[单片机]
stm32实时时钟——RTC
对于单片机转ARM的同学来说,RTC可能比较少接触。提到实时时钟,更经常想到的是DS1302。当然,在STM32里,自己一个CPU已经足够,不需要DS1302。 实际上,RTC就只一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。因为它掉电后仍然可以通过纽扣电池供电,所以能时刻保存这些数据。我们在本期教程中将详细讲述RTC原理及例程,以引导大家顺利进入RTC的世界。 1.STM32的RTC模块 RTC模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。下面就来看以下它的组成结构。 1.1RTC的组成 RTC
[单片机]
s3c2440实时时钟中断
s3c2440实时时钟(RTC)中,定义了两个中断源:报警中断和时间节拍中断。前面有网友问到了这两个中断的用法,最近我抽出时间对这两个中断研究了一番,发现这两个中断都很实用。现在就给大家介绍一下它们的用法。 时间节拍中断,顾名思义,就像一个节拍器,可以等时性的控制节拍。因此它类似于定时器中断。但时间节拍中断是毫秒级的,而定时器中断可以达到微秒,甚至更小级别。时间节拍中断的周期公式为:(n+1) 128,单位是秒,即每隔这么长时间,会中断一次。其中n的值为1~127,它存储在寄存器TICNT的低6位中,当寄存器TICNT的第7位被置1时,表示开启时间节拍中断,这时n递减,当减为0时,进入时间节拍中断。 报警中断可以
[单片机]
武林教你学PIC32(十)实时时钟RTC
PIC32MX 器件上提供的实时时钟和日历(Real-Time Clock and Calendar,RTCC) 硬件模块及其操作。下面列出了该模块的部分主要特性: • 时间:时、分和秒 • 24 小时格式 (军用时间) • 可分辨半秒的时长 • 提供日历:星期、日、月和年 • 闹钟间隔可配置为 0.5 秒、1 秒、10 秒、1 分钟、10 分钟、1 小时、1 天、1 周、1 月或 1 年 • 闹钟使用递减计数器进行重复 • 可无限重复的闹钟:响铃 (chime) • 年份范围:2000 至 2099 • 闰年修正 • BCD 格式以减少固件开销 • 为长时间电池工作进行了优化 • 小数秒同步 • 用户可使用自动调节功能校准时钟晶
[单片机]
STM32学习笔记一一RTC实时时钟
1. 简述 STM32 的实时时钟(RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置系统 (RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域 (BKP) 的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。 RTC 由两个主要部分组成(参见上图), 第一部分(APB1 接口)用来和 APB1 总线相连。此单元还包含一组 16 位寄存器
[单片机]
MSP430单片机之RTC-实时时钟
RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日、时分秒,可以选择BCD码或者二进制格式,并且具有可编程的闹钟。RTC模块支持中断。相关寄存器请参阅430系列单片机user's guide(我用的是5438A)。 1.计数器模式 实时时钟控制器寄存器1 RTCMODE位被重置时,计数器模式被选择,通过软件设置可以得到一个32位的计数器。从时钟模式切换到计数器模式是通过重置计数值:RTCNT1、RTCNT2、RTCNT3、RTCNT4 和 预换算计数器:RT0PS、RT1PS。 计数器的增量计数器来
[单片机]