日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

esp32 rtc 时钟设置不对_咱们RTC时钟案例的时间为什么开始的时候总是2014年,怎么改呢?...

發布時間:2023/12/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 esp32 rtc 时钟设置不对_咱们RTC时钟案例的时间为什么开始的时候总是2014年,怎么改呢?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[mw_shl_code=c,true]u8 RTC_Init(void)

{

//檢查是不是第一次配置時鐘

u8 temp=0;

RTC_NVIC_Config();

//if(BKP->DR1!=0X5050)//第一次配置

if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050)//從指定的后備寄存器中讀出數據:讀出了與寫入的指定數據不相等

{

/* Enable PWR and BKP clocks */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//使能PWR和BKP外設時鐘

/* Allow access to BKP Domain */

PWR_BackupAccessCmd(ENABLE);//使能RTC和后備寄存器訪問

/* Reset Backup Domain */

BKP_DeInit();//將外設BKP的全部寄存器重設為缺省值

/* Enable LSE */

RCC_LSEConfig(RCC_LSE_ON);//設置外部低速晶振(LSE),使用外設低速晶振

/* Wait till LSE is ready */

while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)//檢查指定的RCC標志位設置與否,等待低速晶振就緒

{

temp++;

delay_ms(10);

}

if(temp>=250)return 1;//初始化時鐘失敗,晶振有問題

/* Select LSE as RTC Clock Source */

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//設置RTC時鐘(RTCCLK),選擇LSE作為RTC時鐘

/* Enable RTC Clock */

RCC_RTCCLKCmd(ENABLE);//使能RTC時鐘

/* Wait for RTC registers synchronization */

RTC_WaitForSynchro();//等待最近一次對RTC寄存器的寫操作完成

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成

/* Enable the RTC Second */

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

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成

/* Set RTC prescaler: set RTC period to 1sec */

/* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */

RTC_SetPrescaler(32767); //設置RTC預分頻的值

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成

RTC_Set(2011,12,20,10,0,0); //設置時間

BKP_WriteBackupRegister(BKP_DR1, 0X5050);//向指定的后備寄存器中寫入用戶程序數據

}

else//系統繼續計時

{

/* Check if the Power On Reset flag is set */

if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)//檢查指定的RCC標志位設置與否

OR/PDR復位

{

//printf("\rPower On Reset occurred....");

}

/* Check if the Pin Reset flag is set */

else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET)//檢查指定的RCC標志位設置與否:管腳復位

{

//printf("\rExternal Reset occurred....");

}

//printf("\rNo need to configure RTC....");

/* Wait for RTC registers synchronization */

RTC_WaitForSynchro();//等待最近一次對RTC寄存器的寫操作完成

/* Enable the RTC Second */

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

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成

}

RTC_Get();//更新時間

/* Clear reset flags */

RCC_ClearFlag();//清除RCC的復位標志位

return 0; //ok

}[/mw_shl_code]

注意看這句,一般沒有電池的時候就是2011年了。

RTC_Set(2011,12,20,10,0,0); ?//設置時間

總結

以上是生活随笔為你收集整理的esp32 rtc 时钟设置不对_咱们RTC时钟案例的时间为什么开始的时候总是2014年,怎么改呢?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。