RTC时钟与触摸功能详解(下)

2023-07-27

电脑主板的rtc是什么?

实时时钟RTC(Real_Time Clock):
1、RTC 是集成电路,通常称为时钟芯片。RTC通常为8PIN,有嫌凳肢SOP8、MSOP8、TSSOP8等多种封装。其中有6个I/O口的功能是一样的,分为:晶体接口2PIN、MCU接口2PIN、主电源1PIN、地1PIN。这样就剩下2个I/O的功能定义被区分开了。所以会有许多的RTC型号。例如 荷电科技的H1208、H8563、H1302、H1307、H1381等等。大家粗凯看到后会发现许多RTC在I/O口的定位上有明显的区别,所以PCB设计时需要多注意。
2、RTC通常情况下需要外接32.768kHz晶体,匹配电容、备份电源等元件。RTC除了I/O口的定位不同,还有功能上的区别,比如与MCU的接口,现在常用的是I2C接口(距离短,可以与其他器件共用)还有RAM的数量、静态功耗大小、中断的数量,特别是精度的区别。 RTC的精度可以说与温度有很大的关系,而温度会影响晶体的频率。所以就产生实时时钟的衍生产品:时钟模块(内置芹世晶体、电容、电池等等),其精度可保持在每天误差小于0.50秒。但时钟模块相比时钟芯片而言会高出许多。
3、 RTC最重要的功能是提供到2099年内的日历功能,对于时间来说,无论快慢都是误差,而匹配电容在RTC的外围器件上其他非常重要的作用,它可以适当修正晶体与RTC之间匹配问题。特别是像H1208 这样的RTC,把匹配电容内置,这样就可以保证RTC精度的一致性,不会出现有的RTC走得快,有些又走得慢。

请教关于RTC时钟的问题

void RCC_Configuration(void)
{
Error鲜形营部落永Status HSEStartUpStatus;

//使能外部晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待外部晶振稳定
HSEStart益尽爱棉的系UpStatus = RCC_WaitForHSEStartUp();
//如果外部晶振启动成功,则进行下一步操作
if(HSEStartUpStatus==SUCC激误命办食时末元育ESS)
{
//开启FLASH预取指功能
FLASH_PrefetchB360问答ufferCmd(FLASH_Pref级基突温艺散弱距置叶etchBuffer_Enable);

//FLASH时序培左似载西标降浓著定控制
//推荐值:SYSC接里是治委LK = 0~24M密快起凯属两积唱亲Hz Latency=0
// SYSCLK = 24~48MHz Latency=1
// SYSCL婷搞K = 48~72MHz Latency=2
FLASH_SetLatency(FLASH_Latency_2);

/设距时识商/设置HCLK(AHB时钟)=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);

//PC载溶助减亚苗LK2(APB2) = HCLK
RCC_PCLK2C孔理微乡节犯货脱型onfig(RCC_HCLK_Div1);

//P玉抗CLK1(APB1) = HCLK/2
RCC_PCLK1导计九者全与级鲜效日Config(RCC_HCLK_Div2);

//PLL设置 SYS歌没丰落联较副市亮再鸡CLK/1 * 9 = 田极点举8*1*9 = 72MHz
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

//启动PLL
RCC_PLLCmd(ENABLE);

//等待PLL稳定
while(RCC_GetFlagStatus析法(RCC_FLAG_PLLRDY) == RESET);

//系统时钟SYSCLK来自PLL输出
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

//切换时钟后等待系统时钟稳定
while(RCC端弱属宗的右龙肉没_GetSYSCLKSource()!=0x08)
{
}
}
else
{
/* If HSE fails to start-up, the application will have wrong clock configuration.
User can add here some code to deal with this error */
/* Go to infinite loop */
while (1)
{
}
}

//下面是给各模块开启时钟
//启动GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD,
ENABLE);
//启动AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
}

void RTC_Configuration(void)
{
//启用PWR和BKP的时钟(from APB1)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);

//后备域解锁
PWR_BackupAccessCmd(ENABLE);

//备份寄存器模块复位
BKP_DeInit();

//外部32.768K
RCC_LSEConfig(RCC_LSE_ON);

//等待稳定
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);

//RTC时钟源配置成LSE(外部32.768K)
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

//RTC开启
RCC_RTCCLKCmd(ENABLE);

//开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器
RTC_WaitForSynchro();

//读写寄存器前,要确定上一个操作已经结束
RTC_WaitForLastTask();

//设置RTC分频器,使RTC时钟为1Hz
//RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1)
RTC_SetPrescaler(32763);
//加快一点,设置为32767一天慢20秒 设置为32764一天慢1秒

//等待寄存器写入完成
RTC_WaitForLastTask();

//使能秒中断
RTC_ITConfig(RTC_IT_SEC,ENABLE);

//等待写入完成
RTC_WaitForLastTask();
}

实时时钟rtc部件有哪些主要功能

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片。 RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC...

文章推荐

相关推荐