CH32V208 RTC問題

/*********************************************************************

?* @fn? ? ? RTC_Init

?*

?* @brief? ?Initializes RTC collection.

?*

?* @return? 1 - Init Fail

?*? ? ? ? ? 0 - Init Success

?*/

u8 RTC_Init(void)

{

? ? u8 temp = 0;

? ? u16 temp_16=0;

? ? /*開啟時鐘*/

? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);? ? ?//開啟PWR的時鐘

? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);? ? ?//開啟BKP的時鐘


? ? /*備份寄存器訪問使能*/

? ? PWR_BackupAccessCmd(ENABLE);? ? ? ? ? ? ? ? ? ? ? ? ? ? //使用PWR開啟對備份寄存器的訪問

? ? temp_16=BKP_ReadBackupRegister(BKP_DR1);

? ? if (temp_16 != 0xA5A5)? ? ? ? ? //通過寫入備份寄存器的標志位,判斷RTC是否是第一次配置 //if成立則執(zhí)行第一次的RTC配置

? ? {

? ? ? ? RCC_LSEConfig(RCC_LSE_ON);? ? ? ? ? ? ? ? ? ? ? ? ? //開啟LSE時鐘

? ? ? ? while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET && temp < 250)

? ? ? ? {

? ? ? ? ? ? ? ? temp++;

? ? ? ? ? ? ? ? Delay_Ms(20);

? ? ? ? }

? ? ? ? if(temp >= 250)

? ? ? ? return 1;


? ? ? ? RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);? ? ? ? ? ? ?//選擇RTCCLK來源為LSE

? ? ? ? RCC_RTCCLKCmd(ENABLE);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //RTCCLK使能


? ? ? ? RTC_WaitForSynchro();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//等待同步

? ? ? ? RTC_WaitForLastTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //等待上一次操作完成


? ? ? ? RTC_SetPrescaler(32768 - 1);? ? ? ? ? ? ? ? ? ? ? ? //設置RTC預分頻器,預分頻后的計數(shù)頻率為1Hz

? ? ? ? RTC_WaitForLastTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //等待上一次操作完成

? ? ? ? //RTC_SetCounter(100);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //將秒計數(shù)器寫入到RTC的CNT中

? ? ? ? RTC_WaitForLastTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //等待上一次操作完成

? ? ? ? BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);? ? ? ? ? ?//在備份寄存器寫入自己規(guī)定的標志位,用于判斷RTC是不是第一次執(zhí)行配置


? ? }

? ? else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //RTC不是第一次配置

? ? {

? ? ? ? RTC_WaitForSynchro();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//等待同步

? ? ? ? RTC_WaitForLastTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //等待上一次操作完成


? ? }

? ? RTC_ITConfig(RTC_IT_SEC, DISABLE);

? ? RTC_ITConfig(RTC_IT_OW, DISABLE);

? ? RTC_NVIC_Config();

? ? RTC17_Config_Standly();

? ? RTC_Get();

? ? return 0;


}

這是我初始化時鐘的程序,在程序調試的時候,發(fā)現(xiàn)復位正常,但是在調試階段,發(fā)現(xiàn)RTC_WaitForSynchro(); 函數(shù)一直過不去,不知道是什么情況

您好,您是用的內部還是外部的32K時鐘?“RTC_WaitForSynchro(); 函數(shù)一直過不去”,常見情況是32K晶振沒有起振。

如果用的外部的32K出問題,排查32K晶振的焊接、32K晶振引腳上有沒有接干擾電路、外接的負載電容是否合理??梢試L試切換到內部32K振蕩器來對比測試定位。


不是晶振問題,我是下載之后出的問題,感覺是下載之后,可能是rtc部分復位了吧


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频