谁能解释一下stm32f107 rtc0的RTC

STM32 RTC实时时钟 | Rming
Please click
if you are not redirected within a few seconds.
RTC简介"RTC"是Real Time Clock 的简称,意为实时时钟。stm32提供了一个秒中断源和一个闹钟中断源。RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。RTC的技术器是一个32位的计数器,使用32.768khz的外部晶振。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC ,以防止对后备区域(BKP) 的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP )写保护。RTC由两个主要部分组成第一部分(APB1 接口)用来和 APB1总线相连。此单元还包含一组16 位寄存器,可通过 APB1总线对其进行读写操作。APB1接口由APB1总线时钟驱动,用来与APB1总线接口。另一部分(RTC 核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是 RTC 的预分频模块,它可编程产生最长为1 秒的RTC 时间基准TR_CLK 。RTC 的预分频模块包含了一个20 位的可编程分频器(RTC 预分频器)。如果在RTC_CR 寄存器中设置了相应的允许位,则在每个TR_CLK 周期中 RTC 产生一个中断(秒中断)。第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间,一个32 位的时钟计数器,按秒钟计算,可以记录秒,约合136 年左右,作为一般应用,这已经是足够了的。2038年问题在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时间的程序都将受其影响,因为它们以自日经过的秒数(忽略闰秒)来表示时间。这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。
在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒数。也就是说最大可以计数的秒数为 2^31次方 可以算得:
2^31/ ≈ 68年所以依照此“time_t”标准,在此格式能被表示的最后时间是日03:14:07,星期二(UTC)。超过此一瞬间,时间将会被掩盖(wrap around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901年。
对于PC机来说,时间开始于日,并以无正负符号的32位整数的形式按秒递增,这与UNIX时间非常类似。可以算得:
2^32/ ≈ 136年到2116年,这个整数将溢出。
Windows NT使用64位整数来计时。但是,它使用100纳秒作为增量单位,且时间开始于日,所以NT将遇到2184年问题。苹果公司声明,Mac在29,940年之前不会出现时间问题!
由于RTC是一个32位计数器,同样其计时时间是有限的。库函数中使用到了C标准时间库,时间库中的计时起始时间是1900年,可以知道时间库中不是用 有符号位的32位整数来表示时间的,否则在1968年就已经溢出了。如果用32位无符号整数计时,其溢出时间为2036年左右,所以会遇到这个问题。
直接操作寄存器中,可以自由设定这个时间戳起始的年份,RTC的32位寄存器存储的只是距离这个起始年份的总秒数,所以不会遇到这个问题。而且可以用无符号32位的二进制表示时间,这意味着此类系统的时间戳可以表示更多的秒数。但是由于其使用32位寄存器表示秒数,最大只能计时到136年后。RTC还有一个闹钟寄存器RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与存储在RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。RTC相关寄存器RTC 的控制寄存器 (RTC_CR)RTC总共有2 个控制寄存器RTC_CRH 和RTC_CRL,两个都是16位的。RTC_CRH寄存器该寄存器用来控制中断的,我们这一节将要用到秒钟中断,所以在该寄存器必须设置最低位为1 ,以允许秒钟中断。RTC_CRL寄存器这一节我们用到的是该寄存器的0 、3~5 这几个位,第 0 位是秒钟标志位,我们在进入闹钟中断的时候,通过判断这位来决定是不是发生了秒钟中断。然后必须通过软件将该位清零(写0 )。第 3 位为寄存器同步标志位,我们在修改控制寄存器 TC_CRH/CRL 之前,必须先判断该位,是否已经同步了,如果没有则等待同步,在没同步的情况下修改 RTC_CRH/CRL 的值是不行的。第 4 位为配置标位,在软件修改 RTC_CNT/RTC_ALR/RTC_PRL 的值的时候,必须先软件置位该位,以允许进入配置模式。第 5 位为 RTC 操作位,该位由硬件操作,软件只读。通过该位可以判断上次对RTC 寄存器的操作是否完成,如果没有,我们必须等待上一次操作结束才能开始下一次操作。RTC 预分频装载寄存器这两个寄存器用来配置 RTC 时钟的分频数的,比如我们使用外部 32.768K 的晶振作为时钟的输入频率,那么我们要设置这两个寄存器的值为 32767,以得到一秒钟的计数频率。RTC_PRLH寄存器RTC_PRLL寄存器另: RTC 预分频器余数寄存器,该寄存器也有 2 个寄存器组成RTC_DIVH 和RTC_DIVL ,这两个寄存器的作用就是用来获得比秒钟更为准确的时钟,比如可以得到0.1 秒,或者 0.01 秒等。该寄存器的值自减的,用于保存还需要多少时钟周期获得一个秒信号。在一次秒钟更新后,由硬件重新装载。这两个寄存器和RTC 预分频装载寄存器的各位是一样的,这里我们就不列出来了。RTC 计数器寄存器(RTC_CNT)该寄存器由 2 个16 位的寄存器组成RTC_CNTH和RTC_CNTL,总共32位,用来记录秒钟值(一般情况下)。此两个计数器也比较简单,我们也不多说了。注意一点,在修改这个寄存器的时候要先进入配置模式。RTC 闹钟寄存器 (RTC_ALR)该寄存器也是由 2 个16 为的寄存器组成RTC_ALRH和RTC_ALRL。总共也是 32 位,用来标记闹钟产生的时间(以秒为单位),如果RTC_CNT 的值与RTC_ALR 的值相等,并使能了中断的话,会产生一个闹钟中断。该寄存器的修改也要进入配置模式才能进行。因为我们使用到备份寄存器来存储RTC 的相关信息(我们这里主要用来标记时钟是否已经经过了配置),我们这里顺便介绍一下STM32的备份寄存器。备份寄存器(BKP)备份寄存器是42 个16 位的寄存器(大容量产品才有,STM32F103RBT6 ,属于小容量产品,只有 10个16 位的寄存器),可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT 维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。此外,BKP 控制寄存器用来管理侵入检测和RTC 校准功能。 复位后,对备份寄存器和 RTC 的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC 的访问:1)通过设置寄存器 RCC_APB1ENR 的PWREN 和BKPEN位来打开电源和后备接口的时钟2)电源控制寄存器(PWR_CR) 的DBP 位来使能对后备寄存器和RTC 的访问。我们一般用BKP 来存储RTC 的校验值或者记录一些重要的数据,相当于一个EEPROM,不过这个EEPROM并不是真正的EPROM,而是需要电池来维持它的数据(关于 BKP 的详细介绍请看《STM32参考手册》的第 47 页,5.1一节)。备份区域控制寄存器RCC_BDCRRTC的时钟源选择及使能设置都是通过这个寄存器来实现的,所以我们在RTC 操作之前先要通过这个寄存器选择RTC 的时钟源,然后才能开始其他的操作。寄存器操作步骤1、使能电源时钟和备份区域时钟。 我们要访问 RTC 和备份区域就必须先使能电源时钟 和 备份区域时钟。这个通过RCC_APB1ENR 寄存器来设置。2、取消备份区写保护。要向备份区域写入数据,就要先取消备份区域写保护(写保护在每次硬复位之后被使能),否则是无法向备份区域写入数据的。我们需要用到向备份区域写入一个字节,来标记时钟已经配置过了,这样避免每次复位之后重新配置时钟。3、复位备份区域,开启外部低速振荡器。在取消备份区域写保护之后,我们可以先对这个区域复位,以清除前面的设置,当然这个操作不要每次都执行,因为备份区域的复位将导致之前存在的数据丢失,所以要不要复位,要看情况而定。然后我们使能外部低速振荡器,注意这里一般要先判断RCC_BDCR的LSERDY位来确定低速振荡器已经就绪了才开始下面的操作。4、选择RTC时钟,并使能。这里我们将通过RCC_BDCR的RTCSEL 来选择选择外部LSI 作为RTC 的时钟。然后通过RTCEN位使能RTC 时钟。5、设置RTC的分频,以及配置RTC时钟。在开启了RTC 时钟之后,我们要做的就是设置RTC 时钟的分频数,通过RTC_PRLH 和RTC_PRLL 来设置,然后等待RTC 寄存器操作完成,并同步之后,设置秒钟中断。然后设置RTC 的允许配置位(RTC_CRH 的CNF 位),设置时间(其实就是设置RTC_CNTH和RTC_CNTL两个寄存器)。6、更新配置,设置RTC中断。在设置完时钟之后,我们将配置更新,这里还是通过RTC_CRH 的CNF 来实现。在这之后我们在备份区域BKP_DR1中写入0X5050代表我们已经初始化过时钟了,下次开机(或复位)的时候,先读取BKP_DR1 的值,然后判断是否是0X5050 来决定是不是要配置。接着我们配置RTC 的秒钟中断,并进行分组。7、编写中断服务函数。最后,我们要编写中断服务函数,在秒钟中断产生的时候,读取当前的时间值,并显示到TFTLCD 模块上。程序设计//MAIN.C#include &stm32f10x_lib.h&
#include &sys.h&
#include &usart.h&
#include &delay.h&
#include &led.h&
#include &key.h&
#include &exti.h&
#include &wdg.h&
#include &timer.h&
#include &lcd.h&
#include &rtc.h&
//RTC实时时钟 实验
const u8 *COMPILED_DATE=__DATE__;//获得编译日期
const u8 *COMPILED_TIME=__TIME__;//获得编译时间
const u8* Week[7]={&Sunday&,&Monday&,&Tuesday&,&Wednesday&,&Thursday&,&Friday&,&Saturday&};
int main(void)
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);
//延时初始化
uart_init(72,9600); //串口1初始化
led_init();
LCD_Init();
RTC_Init();
//RTC_Set(,23,59,55);
//设置时间
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,90,&RTC TEST&);
LCD_ShowString(60,110,&&);
//显示时间
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,130,&
LCD_ShowString(60,162,&
if(t!=timer.sec)
LCD_ShowNum(60,130,timer.w_year,4,16);
LCD_ShowNum(100,130,timer.w_month,2,16);
LCD_ShowNum(124,130,timer.w_date,2,16);
switch(timer.week)
LCD_ShowString(60,148,&Sunday
LCD_ShowString(60,148,&Monday
LCD_ShowString(60,148,&Tuesday
LCD_ShowString(60,148,&Wednesday&);
LCD_ShowString(60,148,&Thursday &);
LCD_ShowString(60,148,&Friday
LCD_ShowString(60,148,&Saturday &);
LCD_ShowNum(60,162,timer.hour,2,16);
LCD_ShowNum(84,162,timer.min,2,16);
LCD_ShowNum(108,162,timer.sec,2,16);
LED0=!LED0;
delay_ms(10);
}//RTC.C#include &sys.h&
#include &rtc.h&
#include &delay.h&
#include &usart.h&
//////////////////////////////////////////////////////////////////////////////////
//RTC实时时钟 驱动代码
//********************************************************************************
//V1.1修改说明
//修改了RTC_Init函数分频设置无效的bug
//修改了RTC_Get函数的一个bug
//////////////////////////////////////////////////////////////////////////////////
//RTC实时时钟 驱动代码
//时钟结构体
//实时时钟配置
//初始化RTC时钟,同时检测时钟是否工作正常
//BKP-&DR1用于保存是否第一次配置的设置
//返回0:正常
//其他:错误代码
u8 RTC_Init(void)
//检查是不是第一次配置时钟
u8 temp=0;
if(BKP-&DR1!=0X5050)//第一次配置
RCC-&APB1ENR|=1&&28;
//使能电源时钟
RCC-&APB1ENR|=1&&27;
//使能备份时钟
PWR-&CR|=1&&8;
//取消备份区写保护
RCC-&BDCR|=1&&16;
//备份区域软复位
RCC-&BDCR&=~(1&&16);
//备份区域软复位结束
RCC-&BDCR|=1&&0;
//开启外部低速振荡器
while((!(RCC-&BDCR&0X02))&&temp&250)//等待外部时钟就绪
delay_ms(10);
if(temp&=250)return 1;//初始化时钟失败,晶振有问题
RCC-&BDCR|=1&&8; //LSI作为RTC时钟
RCC-&BDCR|=1&&15;//RTC时钟使能
while(!(RTC-&CRL&(1&&5)));//等待RTC寄存器操作完成
while(!(RTC-&CRL&(1&&3)));//等待RTC寄存器同步
RTC-&CRH|=0X01;
//允许秒中断
while(!(RTC-&CRL&(1&&5)));//等待RTC寄存器操作完成
RTC-&CRL|=1&&4;
//允许配置
RTC-&PRLH=0X0000;
RTC-&PRLL=32767;
//时钟周期设置(有待观察,看是否跑慢了?)理论值:32767
Auto_Time_Set();
//RTC_Set(,10,0,55);
//设置时间
RTC-&CRL&=~(1&&4);
//配置更新
while(!(RTC-&CRL&(1&&5)));
//等待RTC寄存器操作完成
BKP-&DR1=0X5050;
//BKP_Write(1,0X5050);;//在寄存器1标记已经开启了
//printf(&FIRST TIME
}else//系统继续计时
while(!(RTC-&CRL&(1&&3)));//等待RTC寄存器同步
RTC-&CRH|=0X01;
//允许秒中断
while(!(RTC-&CRL&(1&&5)));//等待RTC寄存器操作完成
//printf(&OK
MY_NVIC_Init(0,0,RTC_IRQChannel,2);//RTC,G2,P2,S2.优先级最低
RTC_Get();//更新时间
return 0; //ok
//RTC中断服务函数
//const u8* Week[2][7]=
//{&Sunday&,&Monday&,&Tuesday&,&Wednesday&,&Thursday&,&Friday&,&Saturday&},
//{&日&,&一&,&二&,&三&,&四&,&五&,&六&}
//RTC时钟中断
//每秒触发一次
void RTC_IRQHandler(void)
if(RTC-&CRL&0x0001)//秒钟中断
RTC_Get();//更新时间
//printf(&CRL:%d
&,RTC-&CRL);
if(RTC-&CRL&0x0002)//闹钟中断
//printf(&Alarm!
RTC-&CRL&=~(0x0002);//清闹钟中断
//闹钟处理
RTC-&CRL&=0X0FFA;
//清除溢出,秒钟中断标志
while(!(RTC-&CRL&(1&&5)));//等待RTC寄存器操作完成
//判断是否是闰年函数
31 29 31 30 31 30 31 31 30 31 30 31
//非闰年 31 28 31 30 31 30 31 31 30 31 30 31
//输入:年份
//输出:该年份是不是闰年.1,是.0,不是
u8 Is_Leap_Year(u16 year)
if(year%4==0) //必须能被4整除
if(year%100==0)
if(year%400==0)return 1;//如果以00结尾,还要能被400整除
else return 0;
}else return 1;
}else return 0;
//设置时钟
//把输入的时钟转换为秒钟
//以日为基准
//年为合法年份
//返回值:0,成功;其他:错误代码.
//月份数据表
u8 const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表
//平年的月份日期表
const u8 mon_table[12]={31,28,31,30,31,30,31,31,30,31,30,31};
u8 RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)
u32 seccount=0;
if(syear&1970||syear&2099)return 1;
for(t=1970;t&t++) //把所有年份的秒钟相加
if(Is_Leap_Year(t))seccount+=;//闰年的秒钟数
else seccount+=;
//平年的秒钟数
for(t=0;t&t++)
//把前面月份的秒钟数相加
seccount+=(u32)mon_table[t]*86400;//月份秒钟数相加
if(Is_Leap_Year(syear)&&t==1)seccount+=86400;//闰年2月份增加一天的秒钟数
seccount+=(u32)(sday-1)*86400;//把前面日期的秒钟数相加
seccount+=(u32)hour*3600;//小时秒钟数
seccount+=(u32)min*60;
//分钟秒钟数
seccount+=//最后的秒钟加上去
//设置时钟
RCC-&APB1ENR|=1&&28;//使能电源时钟
RCC-&APB1ENR|=1&&27;//使能备份时钟
PWR-&CR|=1&&8;
//取消备份区写保护
//上面三步是必须的!
RTC-&CRL|=1&&4;
//允许配置
RTC-&CNTL=seccount&0
RTC-&CNTH=seccount&&16;
RTC-&CRL&=~(1&&4);//配置更新
while(!(RTC-&CRL&(1&&5)));//等待RTC寄存器操作完成
//得到当前的时间
//返回值:0,成功;其他:错误代码.
u8 RTC_Get(void)
static u16 daycnt=0;
u32 timecount=0;
u32 temp=0;
u16 temp1=0;
timecount=RTC-&CNTH;//得到计数器中的值(秒钟数)
timecount&&=16;
timecount+=RTC-&CNTL;
temp=timecount/86400;
//得到天数(秒钟数对应的)
if(daycnt!=temp)//超过一天了
temp1=1970; //从1970年开始
while(temp&=365)
if(Is_Leap_Year(temp1))//是闰年
if(temp&=366)temp-=366;//闰年的秒钟数
else temp-=365;
timer.w_year=temp1;//得到年份
while(temp&=28)//超过了一个月
if(Is_Leap_Year(timer.w_year)&&temp1==1)//当年是不是闰年/2月份
if(temp&=29)temp-=29;//闰年的秒钟数
if(temp&=mon_table[temp1])temp-=mon_table[temp1];//平年
timer.w_month=temp1+1;//得到月份
timer.w_date=temp+1;
//得到日期
temp=timecount%86400;
//得到秒钟数
timer.hour=temp/3600;
timer.min=(temp%3600)/60; //分钟
timer.sec=(temp%3600)%60; //秒钟
timer.week=RTC_Get_Week(timer.w_year,timer.w_month,timer.w_date);//获取星期
//获得现在是星期几
//功能描述:输入公历日期得到星期(只允许年)
//输入参数:公历年月日
//返回值:星期号
u8 RTC_Get_Week(u16 year,u8 month,u8 day)
u16 temp2;
u8 yearH,yearL;
yearH=year/100; yearL=year%100;
// 如果为21世纪,年份数加100
if (yearH&19)yearL+=100;
// 所过闰年数只算1900年之后的
temp2=yearL+yearL/4;
temp2=temp2%7;
temp2=temp2+day+table_week[month-1];
if (yearL%4==0&&month&3)temp2--;
return(temp2%7);
//比较两个字符串指定长度的内容是否相等
//参数:s1,s2要比较的两个字符串;len,比较长度
//返回值:1,相等;0,不相等
u8 str_cmpx(u8*s1,u8*s2,u8 len)
for(i=0;i&i++)if((*s1++)!=*s2++)return 0;
extern const u8 *COMPILED_DATE;//获得编译日期
extern const u8 *COMPILED_TIME;//获得编译时间
const u8 Month_Tab[12][3]={&Jan&,&Feb&,&Mar&,&Apr&,&May&,&Jun&,&Jul&,&Aug&,&Sep&,&Oct&,&Nov&,&Dec&};
//自动设置时间为编译器时间
void Auto_Time_Set(void)
u8 temp[3];
u8 sec,min,
for(i=0;i&3;i++)temp[i]=COMPILED_DATE[i];
for(i=0;i&12;i++)if(str_cmpx((u8*)Month_Tab[i],temp,3))
mon=i+1;//得到月份
if(COMPILED_DATE[4]==' ')date=COMPILED_DATE[5]-'0';
else date=10*(COMPILED_DATE[4]-'0')+COMPILED_DATE[5]-'0';
year=1000*(COMPILED_DATE[7]-'0')+100*(COMPILED_DATE[8]-'0')+10*(COMPILED_DATE[9]-'0')+COMPILED_DATE[10]-'0';
hour=10*(COMPILED_TIME[0]-'0')+COMPILED_TIME[1]-'0';
min=10*(COMPILED_TIME[3]-'0')+COMPILED_TIME[4]-'0';
sec=10*(COMPILED_TIME[6]-'0')+COMPILED_TIME[7]-'0';
RTC_Set(year,mon,date,hour,min,sec) ;
}//RTC.H#ifndef __RTC_H
#define __RTC_H
//////////////////////////////////////////////////////////////////////////////////
//RTC实时时钟 驱动代码
//********************************************************************************
//V1.1修改说明
//修改了RTC_Init函数分频设置无效的bug
//修改了RTC_Get函数的一个bug
//////////////////////////////////////////////////////////////////////////////////
//时间结构体
typedef struct
//公历日月年周
extern u8 const mon_table[12];//月份日期数据表
void Disp_Time(u8 x,u8 y,u8 size);//在制定位置开始显示时间
void Disp_Week(u8 x,u8 y,u8 size,u8 lang);//在指定位置显示星期
u8 RTC_Init(void);
//初始化RTC,返回0,失败;1,成功;
u8 Is_Leap_Year(u16 year);//平年,闰年判断
u8 RTC_Get(void);
//更新时间
u8 RTC_Get_Week(u16 year,u8 month,u8 day);
u8 RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec);//设置时间
void Auto_Time_Set(void);//设置时间为编译时间谁能解释一下STM32F0的RTC_百度知道
谁能解释一下STM32F0的RTC
即需要136年时间……所以你需要自己编程。
STM32你的是STM32F10X系列的吧:如果大于86399(1天等于86400秒)就将计数器清零,因此如果你不干扰,在RTC秒中断中加入判断语句,这计数器会在累加到0xFFFFFFFF后才会清零?这RTC只是简单的32位计数器。
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
其他类似问题
为您推荐:
rtc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁STM32F单片机的RTC校准功能是什么?
> STM32F单片机的RTC校准功能是什么?
STM32F单片机的RTC校准功能是什么?
在STM32里面有备份寄存器(BKP),它的之一就是用来存储校验值的校验寄存器,即具有。在PC13引脚上输出
时钟,RTC闹钟或者秒脉冲。在程序中有#define RTCClockOutput_Enable /*RTC Clock/64 is output on
tamper pin(PC.13)*/本文引用地址:BKP可以用来存储84个字节的用户应用程序数据,他们处在备份域里,当Vdd电源被切断时,他们仍然由Vbat维持供电。判断RTC后备寄存器1的值是否为事先写入的某个值,如果不是,则说明RTC是第一次上电,需要配置RTC。针对BKP也有相应的库函数。u16 BKP_ReadBackupRegister(u16 BKP_DR) 从指定的后备寄存器中读出数据如果不是之前写入的某个值,需要配置RTC,函数RTC_Configuration(void)执行以下操作将使能对后备寄存器和RTC的访问:● 设置寄存器RCC_APB1ENR的PWREN 和BKPEN位,使能电源和后备接口时钟● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。RTC模块用外部LSE时钟--32.768的晶振作为时钟,由寄存器控制启动和关闭,然后等待状态稳定后,寄存器指示LSE晶振振荡器是否稳定。待LSE状态稳定后,使用外部32.768KHz晶振作为RTC时钟,由库函数RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE)实现RTC_WaitForLastTask( )的作用:软件通过APB1接口访问RTC的预分频值、计数器值等,但是,相关的可读寄存器只在与RTC
APB1时钟进行重新同步的RTC时钟的上升沿被更新。RTC标志也是如此。这意味着如果APB1接口曾经被关闭,而读操作又是在刚刚重新开启APB1之
后,则在第一次的内部寄存器更新之前,从APB1上读出的RTC寄存器数值可能已经被破坏了。因此,若在读取RTC寄存器时,RTC的APB1接口曾经处
于禁止状态,则软件必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置&1&。在RTC读取的数据是之前写入到BKP中的数据,那么会调用函数RCC_GetFlagStatus()读取状态/控制寄存器RCC_CSR中的某些位来判断启动后的状态,判断掉电/上电复位标志或者复位标志,如果相应的标志位为1,则不需要从新配置RTC。最后清除RCC的复位标志位,void RCC_ClearFlag(void)在设置了秒中断后,在stm32f10x_it.c中设置了中断处理函数,中断函数中首先需要判断是否发生了秒中断,如果是,需要清除相应的中断标志位。还有一个重要的情况是在时间达到23:59:59时,则下一时刻时间为00:00:00。通过读取RTC计数器的值,可以将其转化为时:分:秒的形式打印出来。 同时,如果RTC是第一次被配置,用户需要输入时间,然后调用Time_Adjust(
)将用户输入的时间转化到RTC计数值写到相应的寄存器中。
单片机相关文章:
单片机相关文章:
单片机相关文章:
尘埃粒子计数器相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一世界上第一款智能健康打火机
小型机器人为什么可以自由地展现多种姿态与动作呢?其中舵机扮演关键角色,透过小型马达的定位控制,让机器人展现维妙维肖的精巧动作。新唐科技凭借多年优异的Cortex&-M MCU与永磁无刷马达驱控经验,最新力推支持小型永磁无刷电机应用的新产品- Cortex&-M0 NM1120系列。机器人关键组件-“舵机”,透过高速的NM1120M0计算核心,让传统的模拟舵机升级成数字舵机,同时支持三相无刷与有刷电机,具备电流回路与速度回路,让定位更快速。透过新唐科技提供的参考设计,可以精准进行定位控制,与高速舵机控制...... 新唐科技 &&&&日&&&&>> stm32f0xx_rtc.c
stm32f0xx_rtc.c ( File view )
******************************************************************************
stm32f0xx_rtc.c
MCD Application Team
* @version V1.3.0
16-January-2014
This file provides firmware functions to manage the following
functionalities of the Real-Time Clock (RTC) peripheral:
+ Initialization
+ Calendar (Time and Date) configuration
+ Alarms (Alarm A) configuration
+ Daylight Saving configuration
+ Output pin Configuration
+ Digital Calibration configuration
+ TimeStamp configuration
+ Tampers configuration
+ Backup Data Registers configuration
+ Output Type Config configuration
+ Shift control synchronisation
+ Interrupts and flags management
===============================================================================
##### Backup Domain Operating Condition #####
===============================================================================
[..] The real-time clock (RTC) and the RTC backup registers can be powered
from the VBAT voltage when the main VDD supply is powered off.
To retain the content of the RTC backup registers and supply the RTC
when VDD is turned off, VBAT pin can be connected to an optional
standby voltage supplied by a battery or by another source.
[..] To allow the RTC to operate even when the main digital supply (VDD)
is turned off, the VBAT pin powers the following blocks:
(#) The RTC
(#) The LSE oscillator
(#) PC13 to PC15 I/Os I/Os (when available)
[..] When the backup domain is supplied by VDD (analog switch connected
to VDD), the following functions are available:
(#) PC14 and PC15 can be used as either GPIO or LSE pins
(#) PC13 can be used as a GPIO or as the RTC_AF1 pin
[..] When the backup domain is supplied by VBAT (analog switch connected
to VBAT because VDD is not present), the following functions are available:
(#) PC14 and PC15 can be used as LSE pins only
(#) PC13 can be used as the RTC_AF1 pin
##### Backup Domain Reset #####
===============================================================================
[..] The backup domain reset sets all RTC registers and the RCC_BDCR
register to their reset values.
A backup domain reset is generated when one of the following events
(#) Software reset, triggered by setting the BDRST bit in the
RCC Backup domain control register (RCC_BDCR). You can use the
RCC_BackupResetCmd().
(#) VDD or VBAT power on, if both supplies have previously been
powered off.
##### Backup Domain Access #####
===============================================================================
[..] After reset, the backup domain (RTC registers and RTC backup data
registers) is protected against possible unwanted write accesses.
[..] To enable access to the Backup Domain and RTC registers, proceed as follows:
(#) Enable the Power Controller (PWR) APB1 interface clock using the
RCC_APB1PeriphClockCmd() function.
(#) Enable access to Backup domain using the PWR_BackupAccessCmd() function.
(#) Select the RTC clock source using the RCC_RTCCLKConfig() function.
(#) Enable RTC Clock using the RCC_RTCCLKCmd() function.
##### How to use this driver #####
===============================================================================
(+) Enable the backup domain access (see description in the section above)
(+) Configure the RTC Prescaler (Asynchronous and Synchronous) and
RTC hour format using the RTC_Init() function.
***Time and Date configuration ***
==================================
(+) To configure the RTC Calendar (Time and Date) use the RTC_SetTime()
and RTC_SetDate() functions.
(+) To read the RTC Calendar, use the RTC_GetTime() and RTC_GetDate()
functions.
(+) To read the RTC subsecond, use the RTC_GetSubSecond() function.
(+) Use the RTC_DayLightSavingConfig() function to add or sub one
hour to the RTC Calendar.
***Alarm configuration ***
==========================
(+) To configure the RTC Alarm use the RTC_SetAlarm() function.
(+) Enable the selected RTC Alarm using the RTC_AlarmCmd() function
(+) To read the RTC Alarm, use the RTC_GetAlarm() function.
(+) To read the RTC alarm SubSecond, use the RTC_GetAlarmSubSecond() function.
***RTC Wakeup configuration***
==========================
(+) Configure the RTC Wakeup Clock source use the RTC_WakeUpClockConfig()
(+) Configure the RTC WakeUp Counter using the RTC_SetWakeUpCounter()
(+) Enable the RTC WakeUp using the RTC_WakeUpCmd() function
(+) To read the RTC WakeUp Counter register, use the RTC_GetWakeUpCounter()
***Outputs configuration ***
============================
[..] The RTC has 2 different outputs:
(+) AFO_ALARM: this output is used to manage the RTC Alarm A.
To output the selected RTC signal on RTC_AF1 pin, use the
RTC_OutputConfig() function.
(+) AFO_CALIB: this output is 512Hz signal or 1Hz .
To output the RTC Clock on RTC_AF1 pin, use the RTC_CalibOutputCmd()
***Original Digital Calibration configuration ***
=================================
[..] Configure the RTC Original Digital Calibration Value and the corresponding
calibration cycle period (32s,16s and 8s) using the RTC_SmoothCalibConfig()
***TimeStamp configuration ***
==============================
(+) Configure the RTC_AF1 trigger and enables the RTC TimeStamp
using the RTC_TimeStampCmd() function.
(+) To read the RTC TimeStamp Time and Date register, use the
RTC_GetTimeStamp() function.
(+) To read the RTC TimeStamp SubSecond register, use the
RTC_GetTimeStampSubSecond() function.
***Tamper configuration ***
===========================
(+) Configure the Tamper filter count using RTC_TamperFilterConfig()
(+) Configure the RTC Tamper trigger Edge or Level according to the Tamper
filter (if equal to 0 Edge else Level) value using the RTC_TamperConfig() function
(+) Configure the Tamper sampling frequency using RTC_TamperSamplingFreqConfig()
(+) Configure the Tamper precharge or discharge duration using
RTC_TamperPinsPrechargeDuration() function.
(+) Enable the Tamper Pull-UP using RTC_TamperPullUpDisableCmd() function.
(+) Enable the RTC Tamper using the RTC_TamperCmd() function.
(+) Enable the Time stamp on Tamper detection event using
RTC_TSOnTamperDetecCmd() function.
***Backup Data Registers configuration ***
==========================================
(+) To write to the RTC Backup Data registers, use the RTC_WriteBackupRegister()
(+) To read the RTC Backup Data registers, use the RTC_ReadBackupRegister()
##### RTC and low power modes #####
===============================================================================
[..] The MCU can be woken up from a low power mode by an RTC alternate
[..] The RTC alternate functions are the RTC alarm (Alarm A), RTC tamper
event detection and RTC time stamp event detection.
These RTC alternate functions can wake up the system from the Stop
and Standby lowpower modes.
The system can also wake up from low power modes without depending
on an external interrupt (Auto-wakeup mode), by using the RTC alarm events.
[..] The RTC provides a programmable time base for waking up from the
Stop or Standby mode at regular intervals.
Wakeup from STOP and Standby modes is possible only when the RTC
clock source is LSE or LSI.
##### Selection of RTC_AF1 alternate functions #####
===============================================================================
[..] The RTC_AF1 pin (PC13) can be used for the following purposes:
(+) AFO_ALARM output
(+) AFO_CALIB output
(+) AFI_TAMPER
(+) AFI_TIMESTAMP
+------------------------------------------------------------------------------------------+
|AFO_ALARM |AFO_CALIB |AFI_TAMPER |AFI_TIMESTAMP | WKUP2
|ALARMOUTTYPE
configuration
|ENABLED |
and function
|Configuration |
|-----------------|----------|----------|-----------|--------------|--------|--------------|
|Don't care | Don't care
|-----------------|----------|----------|-----------|--------------|--------|--------------|
|Don't care | Don't care
(Not finished, please download and read the complete file)
Expand> <Close
Want complete source code? Download it here
0 lines left, continue to read ▼
Sponsored links
Tips: You can preview the content of files by clicking file names^_^
299.00 B 08:55
HardwareI2C.hex6.77 kB 15:12
HardwareI2C.out79.28 kB 15:12
HardwareI2C.sim2.41 kB 15:09
APP.o7.36 kB 15:12
APP.pbi646.10 kB 15:11
APP.pbi.cout10.06 kB 15:11
HardwareI2C.pbd772.54 kB 16:56
HardwareI2C.pbd.browse772.54 kB 16:56
I2C.o18.23 kB 15:12
I2C.pbi653.08 kB 15:44
I2C.pbi.cout10.06 kB 15:44
startup_stm32f072.o24.65 kB 15:54
stm32f0xx_crc.o26.29 kB 15:26
stm32f0xx_crc.pbi648.34 kB 15:26
stm32f0xx_crc.pbi.cout10.07 kB 15:26
stm32f0xx_dma.o23.72 kB 15:26
stm32f0xx_dma.pbi651.40 kB 15:26
stm32f0xx_dma.pbi.cout10.07 kB 15:26
stm32f0xx_flash.o60.75 kB 15:26
stm32f0xx_flash.pbi669.48 kB 15:26
stm32f0xx_flash.pbi.cout10.07 kB 15:26
stm32f0xx_gpio.o27.80 kB 15:26
stm32f0xx_gpio.pbi652.95 kB 15:26
stm32f0xx_gpio.pbi.cout10.07 kB 15:26
stm32f0xx_i2c.o76.58 kB 18:03
stm32f0xx_i2c.pbi670.03 kB 18:03
stm32f0xx_i2c.pbi.cout10.07 kB 18:03
stm32f0xx_it.o13.33 kB 14:51
stm32f0xx_it.pbi644.41 kB 14:51
stm32f0xx_it.pbi.cout10.08 kB 14:51
stm32f0xx_misc.o10.22 kB 15:26
stm32f0xx_misc.pbi645.19 kB 15:26
stm32f0xx_misc.pbi.cout10.07 kB 15:26
stm32f0xx_rcc.o77.20 kB 15:26
stm32f0xx_rcc.pbi671.66 kB 15:26
stm32f0xx_rcc.pbi.cout10.07 kB 15:26
system.o11.94 kB 15:09
system.pbi645.89 kB 15:09
system.pbi.cout10.06 kB 15:09
system_stm32f0xx.o12.61 kB 15:26
system_stm32f0xx.pbi647.81 kB 15:26
system_stm32f0xx.pbi.cout10.08 kB 15:26
HardwareI2C.dep15.28 kB 17:58
HardwareI2C.ewd71.80 kB 09:16
HardwareI2C.ewp51.63 kB 15:26
HardwareI2C.ewt6.01 kB 11:56
HardwareI2C.eww165.00 B 15:54
HardwareI2C.crun351.00 B 17:58
HardwareI2C.dbgdt8.08 kB 17:58
1.91 kB 16:56
HardwareI2C.dni1.86 kB 17:58
HardwareI2C.wsdt6.16 kB 17:58
HardwareI2C.wspos52.00 B 17:58
HardwareI2C_Debug.jlink671.00 B 16:17
stm32f0xx_flash.icf1.39 kB 23:23
stm32f0xx_ram.icf1.32 kB 23:23
476.00 B 15:11
5.71 kB 15:44
2.03 kB 15:09
495.00 B 15:11
3.29 kB 23:23
3.84 kB 14:51
2.02 kB 17:31
13.95 kB 23:23
185.00 B 15:08
CMSIS24.33 kB 23:23
400.34 kB 23:27
2.17 kB 23:27
37.72 kB 23:43
startup_stm32f030.s9.83 kB 23:27
startup_stm32f031.s9.63 kB 23:27
startup_stm32f042.s10.45 kB 23:27
startup_stm32f051.s10.45 kB 23:27
startup_stm32f072.s10.90 kB 23:27
startup_stm32f0xx.s10.45 kB 23:27
startup_stm32f0xx_ld.s9.64 kB 23:27
startup_stm32f030.s8.04 kB 23:27
startup_stm32f031.s7.87 kB 23:27
startup_stm32f042.s8.38 kB 23:27
startup_stm32f051.s8.47 kB 23:27
startup_stm32f072.s8.80 kB 23:27
startup_stm32f0xx.s8.47 kB 23:27
startup_stm32f030.s10.09 kB 23:27
startup_stm32f031.s9.83 kB 23:27
startup_stm32f042.s10.65 kB 23:27
startup_stm32f051.s11.07 kB 23:27
startup_stm32f072.s11.41 kB 23:27
startup_stm32f0xx.s11.07 kB 23:27
startup_stm32f0xx_ld.s9.84 kB 23:27
12.35 kB 23:27
startup_stm32f030.s7.64 kB 23:27
startup_stm32f031.s7.47 kB 23:27
startup_stm32f042.s7.93 kB 23:27
startup_stm32f051.s8.08 kB 23:27
startup_stm32f072.s8.40 kB 23:27
startup_stm32f0xx.s8.07 kB 23:27
startup_stm32f0xx_ld.s7.44 kB 23:27
10.86 kB 23:23
1.06 kB 23:23
bc_s.png671.00 B 23:23
bdwn.png147.00 B 23:23
check.png922.00 B 23:23
10.84 kB 23:23
closed.png132.00 B 23:23
20.05 kB 23:23
CMSIS_CORE_Files.png20.43 kB 23:23
CMSIS_CORE_Files_user.png9.82 kB 23:23
CMSIS_Logo_Final.png12.11 kB 23:23
37.72 kB 23:23
doxygen.png3.75 kB 23:23
2.91 kB 23:23
ftv2blank.png86.00 B 23:23
ftv2cl.png449.00 B 23:23
ftv2doc.png761.00 B 23:23
ftv2folderclosed.png579.00 B 23:23
ftv2folderopen.png602.00 B 23:23
ftv2lastnode.png86.00 B 23:23
ftv2link.png761.00 B 23:23
ftv2mlastnode.png242.00 B 23:23
ftv2mnode.png242.00 B 23:23
ftv2mo.png403.00 B 23:23
ftv2node.png86.00 B 23:23
ftv2ns.png385.00 B 23:23
ftv2plastnode.png228.00 B 23:23
ftv2pnode.png228.00 B 23:23
ftv2splitbar.png315.00 B 23:23
ftv2vertline.png86.00 B 23:23
24.69 kB 23:23
24.59 kB 23:23
26.25 kB 23:23
6.44 kB 23:23
8.04 kB 23:23
23.25 kB 23:23
6.59 kB 23:23
40.92 kB 23:23
2.20 kB 23:23
168.26 kB 23:23
6.07 kB 23:23
14.71 kB 23:23
13.96 kB 23:23
334.00 B 23:23
61.69 kB 23:23
2.11 kB 23:23
15.30 kB 23:23
435.00 B 23:23
61.62 kB 23:23
2.79 kB 23:23
10.80 kB 23:23
126.00 B 23:23
13.37 kB 23:23
122.72 kB 23:23
8.16 kB 23:23
816.00 B 23:23
1.99 kB 23:23
14.74 kB 23:23
17.47 kB 23:23
5.80 kB 23:23
nav_f.png154.00 B 23:23
nav_g.png95.00 B 23:23
nav_h.png98.00 B 23:23
open.png122.00 B 23:23
8.44 kB 23:23
2.63 kB 23:23
3.91 kB 23:23
1,014.00 B 23:23
14.03 kB 23:23
1,014.00 B 23:23
601.00 B 23:23
1,014.00 B 23:23
646.00 B 23:23
1,014.00 B 23:23
2.16 kB 23:23
1,014.00 B 23:23
1.29 kB 23:23
1,014.00 B 23:23
124.00 B 23:23
1,014.00 B 23:23
1.52 kB 23:23
1,014.00 B 23:23
281.00 B 23:23
1,014.00 B 23:23
2.74 kB 23:23
1,014.00 B 23:23
231.00 B 23:23
1,014.00 B 23:23
1.25 kB 23:23
1,014.00 B 23:23
2.26 kB 23:23
1,014.00 B 23:23
143.00 B 23:23
1,014.00 B 23:23
720.00 B 23:23
1,014.00 B 23:23
206.00 B 23:23
1,014.00 B 23:23
4.13 kB 23:23
1,014.00 B 23:23
2.46 kB 23:23
1,014.00 B 23:23
828.00 B 23:23
1,014.00 B 23:23
800.00 B 23:23
1,014.00 B 23:23
411.00 B 23:23
1,014.00 B 23:23
548.00 B 23:23
1,014.00 B 23:23
90.00 B 23:23
1,014.00 B 23:23
206.00 B 23:23
1,018.00 B 23:23
91.00 B 23:23
1,018.00 B 23:23
188.00 B 23:23
1,018.00 B 23:23
88.00 B 23:23
1,018.00 B 23:23
88.00 B 23:23
1,018.00 B 23:23
159.00 B 23:23
1,018.00 B 23:23
88.00 B 23:23
1,018.00 B 23:23
92.00 B 23:23
1,018.00 B 23:23
246.00 B 23:23
1,018.00 B 23:23
88.00 B 23:23
1,018.00 B 23:23
90.00 B 23:23
close.png273.00 B 23:23
1,016.00 B 23:23
137.00 B 23:23
1,021.00 B 23:23
179.00 B 23:23
1,021.00 B 23:23
187.00 B 23:23
1,021.00 B 23:23
181.00 B 23:23
1,021.00 B 23:23
195.00 B 23:23
1,021.00 B 23:23
191.00 B 23:23
1,021.00 B 23:23
334.00 B 23:23
1,021.00 B 23:23
332.00 B 23:23
1,021.00 B 23:23
183.00 B 23:23
1,021.00 B 23:23
181.00 B 23:23
1,016.00 B 23:23
86.00 B 23:23
1,016.00 B 23:23
91.00 B 23:23
1,016.00 B 23:23
938.00 B 23:23
1,016.00 B 23:23
91.00 B 23:23
1,016.00 B 23:23
82.00 B 23:23
1,020.00 B 23:23
13.62 kB 23:23
1,020.00 B 23:23
418.00 B 23:23
1,020.00 B 23:23
1.73 kB 23:23
1,020.00 B 23:23
435.00 B 23:23
1,017.00 B 23:23
122.00 B 23:23
1,017.00 B 23:23
102.00 B 23:23
1,017.00 B 23:23
486.00 B 23:23
1,017.00 B 23:23
108.00 B 23:23
1,017.00 B 23:23
245.00 B 23:23
mag_sel.png563.00 B 23:23
461.00 B 23:23
1,016.00 B 23:23
150.00 B 23:23
1,016.00 B 23:23
161.00 B 23:23
1,016.00 B 23:23
72.00 B 23:23
1,016.00 B 23:23
96.00 B 23:23
1,016.00 B 23:23
379.00 B 23:23
1,016.00 B 23:23
94.00 B 23:23
1,016.00 B 23:23
283.00 B 23:23
3.91 kB 23:23
23.83 kB 23:23
search_l.png604.00 B 23:23
search_m.png158.00 B 23:23
search_r.png612.00 B 23:23
1,020.00 B 23:23
443.00 B 23:23
1,020.00 B 23:23
530.00 B 23:23
1,020.00 B 23:23
487.00 B 23:23
1,020.00 B 23:23
1.89 kB 23:23
1,020.00 B 23:23
878.00 B 23:23
1,020.00 B 23:23
124.00 B 23:23
1,020.00 B 23:23
1.45 kB 23:23
1,020.00 B 23:23
120.00 B 23:23
1,020.00 B 23:23
1.65 kB 23:23
1,020.00 B 23:23
231.00 B 23:23
1,020.00 B 23:23
834.00 B 23:23
1,020.00 B 23:23
319.00 B 23:23
1,020.00 B 23:23
318.00 B 23:23
1,020.00 B 23:23
206.00 B 23:23
1,020.00 B 23:23
3.16 kB 23:23
1,020.00 B 23:23
985.00 B 23:23
1,020.00 B 23:23
615.00 B 23:23
1,020.00 B 23:23
312.00 B 23:23
1,020.00 B 23:23
411.00 B 23:23
1,020.00 B 23:23
387.00 B 23:23
1,020.00 B 23:23
206.00 B 23:23
16.10 kB 23:23
10.30 kB 23:23
394.00 B 23:23
26.67 kB 23:23
1.97 kB 23:23
11.95 kB 23:23
544.00 B 23:23
15.28 kB 23:23
877.00 B 23:23
16.42 kB 23:23
970.00 B 23:23
18.01 kB 23:23
1.15 kB 23:23
10.23 kB 23:23
380.00 B 23:23
9.33 kB 23:23
307.00 B 23:23
25.11 kB 23:23
1.75 kB 23:23
27.45 kB 23:23
2.06 kB 23:23
sync_off.png856.00 B 23:23
sync_on.png845.00 B 23:23
14.51 kB 23:23
1.28 kB 23:23
tab_a.png146.00 B 23:23
tab_b.png166.00 B 23:23
tab_h.png179.00 B 23:23
tab_s.png186.00 B 23:23
tab_topnav.png232.00 B 23:23
15.72 kB 23:23
932.00 B 23:23
13.31 kB 23:23
695.00 B 23:23
11.77 kB 23:23
584.00 B 23:23
10.07 kB 23:23
369.00 B 23:23
6.82 kB 23:23
14.77 kB 23:23
11.15 kB 23:23
1.13 kB 23:23
17.13 kB 23:23
201.00 B 23:23
11.36 kB 23:23
bc_s.png676.00 B 23:23
bdwn.png147.00 B 23:23
closed.png132.00 B 23:23
20.05 kB 23:23
CMSIS_Logo_Final.png12.11 kB 23:23
CMSIS_V3_small.png25.51 kB 23:23
doxygen.png3.69 kB 23:23
2.91 kB 23:23
ftv2blank.png86.00 B 23:23
ftv2cl.png453.00 B 23:23
ftv2doc.png746.00 B 23:23
ftv2folderclosed.png616.00 B 23:23
ftv2folderopen.png597.00 B 23:23
ftv2lastnode.png86.00 B 23:23
ftv2link.png746.00 B 23:23
ftv2mlastnode.png246.00 B 23:23
ftv2mnode.png246.00 B 23:23
ftv2mo.png403.00 B 23:23
ftv2node.png86.00 B 23:23
ftv2ns.png388.00 B 23:23
ftv2plastnode.png229.00 B 23:23
ftv2pnode.png229.00 B 23:23
ftv2splitbar.png314.00 B 23:23
ftv2vertline.png86.00 B 23:23
8.55 kB 23:23
122.72 kB 23:23
1.99 kB 23:23
14.13 kB 23:23
167.00 B 23:23
nav_f.png153.00 B 23:23
nav_g.png95.00 B 23:23
nav_h.png98.00 B 23:23
open.png123.00 B 23:23
2.63 kB 23:23
sync_off.png853.00 B 23:23
sync_on.png845.00 B 23:23
1.28 kB 23:23
tab_a.png142.00 B 23:23
tab_b.png169.00 B 23:23
tab_h.png177.00 B 23:23
tab_s.png184.00 B 23:23
tab_topnav.png232.00 B 23:23
9.62 kB 23:23
819.00 B 23:23
API_Structure.png8.98 kB 23:23
bc_s.png676.00 B 23:23
bdwn.png147.00 B 23:23
8.13 kB 23:23
closed.png132.00 B 23:23
20.05 kB 23:23
CMSIS_Logo_Final.png12.11 kB 23:23
12.41 kB 23:23
CMSIS_RTOS_Files.png15.34 kB 23:23
89.25 kB 23:23
12.19 kB 23:23
6.90 kB 23:23
6.95 kB 23:23
doxygen.png3.69 kB 23:23
2.91 kB 23:23
6.69 kB 23:23
ftv2blank.png86.00 B 23:23
ftv2cl.png453.00 B 23:23
ftv2doc.png746.00 B 23:23
ftv2folderclosed.png616.00 B 23:23
ftv2folderopen.png597.00 B 23:23
ftv2lastnode.png86.00 B 23:23
ftv2link.png746.00 B 23:23
ftv2mlastnode.png246.00 B 23:23
ftv2mnode.png246.00 B 23:23
ftv2mo.png403.00 B 23:23
ftv2node.png86.00 B 23:23
ftv2ns.png388.00 B 23:23
ftv2plastnode.png229.00 B 23:23
ftv2pnode.png229.00 B 23:23
ftv2splitbar.png314.00 B 23:23
ftv2vertline.png86.00 B 23:23
9.67 kB 23:23
9.57 kB 23:23
22.42 kB 23:23
10.55 kB 23:23
7.36 kB 23:23
10.96 kB 23:23
12.49 kB 23:23
7.65 kB 23:23
12.92 kB 23:23
1.50 kB 23:23
16.83 kB 23:23
907.00 B 23:23
37.14 kB 23:23
1.33 kB 23:23
41.52 kB 23:23
1,003.00 B 23:23
34.30 kB 23:23
721.00 B 23:23
30.50 kB 23:23
730.00 B 23:23
29.64 kB 23:23
830.00 B 23:23
31.31 kB 23:23
907.00 B 23:23
24.16 kB 23:23
516.00 B 23:23
14.52 kB 23:23
2.30 kB 23:23
47.05 kB 23:23
2.29 kB 23:23
38.75 kB 23:23
1.12 kB 23:23
19.35 kB 23:23
359.00 B 23:23
13.33 kB 23:23
122.72 kB 23:23
MailQueue.png14.39 kB 23:23
MessageQueue.png11.62 kB 23:23
10.96 kB 23:23
110.00 B 23:23
Mutex.png7.85 kB 23:23
1.99 kB 23:23
14.48 kB 23:23
12.77 kB 23:23
nav_f.png153.00 B 23:23
nav_g.png95.00 B 23:23
nav_h.png98.00 B 23:23
open.png123.00 B 23:23
7.12 kB 23:23
2.63 kB 23:23
1,014.00 B 23:23
250.00 B 23:23
1,014.00 B 23:23
358.00 B 23:23
1,014.00 B 23:23
105.00 B 23:23
1,014.00 B 23:23
281.00 B 23:23
1,014.00 B 23:23
137.00 B 23:23
1,014.00 B 23:23
461.00 B 23:23
1,014.00 B 23:23
158.00 B 23:23
1,014.00 B 23:23
738.00 B 23:23
1,014.00 B 23:23
16.18 kB 23:23
1,014.00 B 23:23
777.00 B 23:23
1,014.00 B 23:23
253.00 B 23:23
1,014.00 B 23:23
732.00 B 23:23
1,014.00 B 23:23
351.00 B 23:23
1,014.00 B 23:23
135.00 B 23:23
1,014.00 B 23:23
258.00 B 23:23
1,018.00 B 23:23
797.00 B 23:23
close.png273.00 B 23:23
1,018.00 B 23:23
133.00 B 23:23
1,016.00 B 23:23
775.00 B 23:23
1,021.00 B 23:23
4.32 kB 23:23
1,016.00 B 23:23
160.00 B 23:23
1,020.00 B 23:23
5.53 kB 23:23
1,017.00 B 23:23
110.00 B 23:23
1,017.00 B 23:23
281.00 B 23:23
1,017.00 B 23:23
158.00 B 23:23
1,017.00 B 23:23
474.00 B 23:23
1,017.00 B 23:23
362.00 B 23:23
1,017.00 B 23:23
233.00 B 23:23
mag_sel.png563.00 B 23:23
461.00 B 23:23
1,016.00 B 23:23
105.00 B 23:23
1,016.00 B 23:23
137.00 B 23:23
1,016.00 B 23:23
72.00 B 23:23
1,016.00 B 23:23
135.00 B 23:23
3.91 kB 23:23
24.38 kB 23:23
search_l.png604.00 B 23:23
search_m.png158.00 B 23:23
search_r.png612.00 B 23:23
1,019.00 B 23:23
985.00 B 23:23
1,020.00 B 23:23
358.00 B 23:23
1,020.00 B 23:23
461.00 B 23:23
1,020.00 B 23:23
284.00 B 23:23
1,020.00 B 23:23
777.00 B 23:23
1,020.00 B 23:23
253.00 B 23:23
1,020.00 B 23:23
390.00 B 23:23
1,020.00 B 23:23
138.00 B 23:23
1,020.00 B 23:23
258.00 B 23:23
Semaphore.png16.56 kB 23:23
9.84 kB 23:23
300.00 B 23:23
9.88 kB 23:23
312.00 B 23:23
8.19 kB 23:23
118.00 B 23:23
9.85 kB 23:23
291.00 B 23:23
8.23 kB 23:23
126.00 B 23:23
11.18 kB 23:23
398.00 B 23:23
8.35 kB 23:23
119.00 B 23:23
sync_off.png853.00 B 23:23
sync_on.png845.00 B 23:23
1.28 kB 23:23
tab_a.png142.00 B 23:23
tab_b.png169.00 B 23:23
tab_h.png177.00 B 23:23
tab_s.png184.00 B 23:23
tab_topnav.png232.00 B 23:23
ThreadStatus.png20.04 kB 23:23
Timer.png13.11 kB 23:23
14.80 kB 23:23
13.56 kB 23:23
Access_SVD_DD_Manage.png7.30 kB 23:23
Access_SVD_Vendor.png16.48 kB 23:23
bc_s.png676.00 B 23:23
bdwn.png147.00 B 23:23
closed.png132.00 B 23:23
CMSIS-SVD_Schema_1_0.xsd14.17 kB 23:23
20.05 kB 23:23
CMSIS_Logo_Final.png12.11 kB 23:23
CMSIS_SVD_Schema_Gen.png9.39 kB 23:23
CMSIS_SVD_Vendor_DD.png10.75 kB 23:23
CMSIS_SVD_WEB_DATABASE.png30.91 kB 23:23
doxygen.png3.69 kB 23:23
2.91 kB 23:23
ftv2blank.png86.00 B 23:23
ftv2cl.png453.00 B 23:23
ftv2doc.png746.00 B 23:23
ftv2folderclosed.png616.00 B 23:23
ftv2folderopen.png597.00 B 23:23
ftv2lastnode.png86.00 B 23:23
ftv2link.png746.00 B 23:23
ftv2mlastnode.png246.00 B 23:23
ftv2mnode.png246.00 B 23:23
ftv2mo.png403.00 B 23:23
ftv2node.png86.00 B 23:23
ftv2ns.png388.00 B 23:23
ftv2plastnode.png229.00 B 23:23
ftv2pnode.png229.00 B 23:23
ftv2splitbar.png314.00 B 23:23
ftv2vertline.png86.00 B 23:23
9.65 kB 23:23
8.72 kB 23:23
8.93 kB 23:23
5.79 kB 23:23
4.10 kB 23:23
187.00 B 23:23
5.85 kB 23:23
5.87 kB 23:23
8.37 kB 23:23
34.70 kB 23:23
18.56 kB 23:23
10.28 kB 23:23
9.83 kB 23:23
12.57 kB 23:23
12.96 kB 23:23
15.08 kB 23:23
5.53 kB 23:23
472.00 B 23:23
7.22 kB 23:23
388.00 B 23:23
8.15 kB 23:23
156.00 B 23:23
122.72 kB 23:23
Manage_SVD_DD.png12.69 kB 23:23
8.12 kB 23:23
464.00 B 23:23
1.99 kB 23:23
14.23 kB 23:23
1.48 kB 23:23
nav_f.png153.00 B 23:23
nav_g.png95.00 B 23:23
nav_h.png98.00 B 23:23
open.png123.00 B 23:23
3.98 kB 23:23
2.63 kB 23:23
5.11 kB 23:23
3.96 kB 23:23
904.00 B 23:23
5.54 kB 23:23
7.72 kB 23:23
40.46 kB 23:23
8.48 kB 23:23
4.87 kB 23:23
sync_off.png853.00 B 23:23
sync_on.png845.00 B 23:23
1.28 kB 23:23
tab_a.png142.00 B 23:23
tab_b.png169.00 B 23:23
tab_h.png177.00 B 23:23
tab_s.png184.00 B 23:23
tab_topnav.png232.00 B 23:23
4.57 kB 23:23
3.58 kB 23:23
236.76 kB 23:23
32.27 kB 23:23
39.48 kB 23:23
97.49 kB 23:23
106.58 kB 23:23
22.20 kB 23:23
16.74 kB 23:23
20.03 kB 23:23
40.77 kB 23:23
95.91 kB 23:23
550.00 B 23:23
1.48 kB 23:23
39.92 kB 23:23
ARM_Sample.svd31.53 kB 23:23
ARM_Sample_1_1.svd33.02 kB 23:23
CMSIS-SVD_Schema_1_0.xsd14.17 kB 23:23
CMSIS-SVD_Schema_1_1_draft.xsd29.35 kB 23:23
SVDConv.exe314.00 kB 23:23
20.62 kB 23:24
26.66 kB 23:24
12.13 kB 23:24
10.46 kB 23:24
4.84 kB 23:24
7.58 kB 23:24
15.20 kB 23:24
4.08 kB 23:24
16.32 kB 23:24
10.46 kB 23:24
16.44 kB 23:24
13.46 kB 23:24
17.73 kB 23:24
4.43 kB 23:24
4.31 kB 23:24
6.99 kB 23:24
25.88 kB 23:24
36.51 kB 23:24
22.07 kB 23:24
12.92 kB 23:24
50.71 kB 23:24
26.06 kB 23:24
3.46 kB 23:24
46.95 kB 23:24
57.17 kB 23:24
24.16 kB 23:24
15.30 kB 23:24
10.52 kB 23:24
13.76 kB 23:24
25.78 kB 23:24
7.26 kB 23:24
32.94 kB 23:24
10.59 kB 23:24
41.62 kB 23:24
20.34 kB 23:24
55.37 kB 18:03
10.76 kB 23:24
5.92 kB 23:24
20.39 kB 23:24
66.71 kB 11:53
92.63 kB 23:24
52.04 kB 23:24
12.99 kB 23:24
130.37 kB 23:24
87.19 kB 23:24
9.88 kB 23:24
Sponsored links
23 Source Codes 21 Source Codes 18 Source Codes 13 Source Codes 9 Source Codes
285 Source Codes 173 Source Codes 48 Source Codes 42 Source Codes 36 Source Codes
Sent successfully!
HardwareI2C.zip
Your Point(s)
Your Point isn't enough.
Get point immediately by PayPal
10 Points / $20
22 Points / $40
55 Points / $100
120 Points / $200
point will be added to your account automatically after the transaction.
Don't have an account?
Need any help?
切换到中文版?
^_^"Oops ...
Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
Favorite by

我要回帖

更多关于 stm32f0 rtc 的文章

 

随机推荐