新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2017-9-4
- 在线时间
- 1 小时
|
1金钱
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)
{
temp++;
delay_ms(10);
};
if(temp>=250)return 1;
RCC->BDCR|=1<<8;
RCC->BDCR|=1<<15;
while(!(RTC->CRL&(1<<5)));
while(!(RTC->CRL&(1<<3)));
RTC->CRH|=0X01;
while(!(RTC->CRL&(1<<5)));
RTC->CRL|=1<<4;
RTC->PRLH=0X0000;
RTC->PRLL=32767;
RTC_Set(2014,3,8,22,10,55);
RTC->CRL&=~(1<<4);
while(!(RTC->CRL&(1<<5)));
BKP->DR1=0X5050;
printf("FIRST TIME\n");
}else//Ïμí3¼ìDø¼Æê±
{
while(!(RTC->CRL&(1<<3)));
RTC->CRH|=0X01;
while(!(RTC->CRL&(1<<5)));
printf("OK\n");
}
MY_NVIC_Init(0,0,RTC_IRQn,2);
RTC_Get();
return 0;
}
这是PDF中的代码
求解else之后设置RTC->CRH寄存器为什么不用取消备份区写保护
我理解的是RTC->CRH在后备区域,复位后后备区域就会使能写保护,这个时候写寄存器RTC->CRH应该先取消写保护并且使能电源时钟和备份时钟,这里为什么不需要?
|
|