RTC例程如何用內(nèi)置晶振的MCU運行?

CH32V20xEVT內(nèi)的RTC例程, 在內(nèi)置晶振的 CH32V203F8P6 開發(fā)板中運行輸出總是0, 意識到例程中使用的是外置晶振, 于是修改程序的RTC初始化函數(shù)如下, 可是還是無法得到正確的輸出, 請教高人指點, 謝謝!


u8 RTC_Init(void)

{

? ? u8 temp = 0;


? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

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

? ? BKP_DeInit();? ?//復(fù)位備份區(qū)域,將BKP寄存器清空

? ? RCC_LSICmd(ENABLE); //開啟內(nèi)部低速晶振LSI


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

? ? {

? ? ? ? ? ? temp++;

? ? ? ? ? ? Delay_Ms(20);

? ? }

? ? if(temp >= 250) {

? ? ? ? printf("failed to init.\r\n");

? ? ? ? return 1;

? ? }


? ? RCC_RTCCLKConfig (RCC_RTCCLKSource_LSI);

? ? RCC_RTCCLKCmd(ENABLE);


? ? RTC_WaitForLastTask();

? ? RTC_WaitForSynchro();


? ? RTC_ITConfig(RTC_IT_SEC, ENABLE);

? ? RTC_WaitForLastTask();

? ? RTC_EnterConfigMode();

? ? RTC_SetPrescaler(32767);

? ? RTC_WaitForLastTask();

? ? RTC_Set(2019, 10, 8, 13, 58, 55); /* Setup Time */

? ? RTC_ExitConfigMode();

? ? BKP_WriteBackupRegister(BKP_DR1, 0XA1A1);


? ? RTC_NVIC_Config();

? ? RTC_Get();


? ? return 0;

}


您好,附件例程為CH32V203F8P6 RTC例程,RTC時鐘源配置為LSI,你可以參考一下。此外需要注意,若測試板沒有外部晶振(HSE),配置系統(tǒng)主頻的時候可以選擇使用內(nèi)部晶振HSI,如下圖,可通過相關(guān)宏定義進(jìn)行配置

icon_rar.gifCH32V203 F8P6 RTC.zip

image.png



使用您的程序確實編譯成功了, 輸出結(jié)果完全正確! 非常感謝!


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

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