CH32V203 RTC读取出来的数据全部为0

CH32V203 RTC读取出来的数据全部为0


- 使用的例程:CH32F20xEVT\EVT\EXAM\RTC

修改了RTC时钟为内部时钟源:

u8?RTC_Init(void)
{
????u8?temp?=?0;
????RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR?|?RCC_APB1Periph_BKP,?ENABLE);
????PWR_BackupAccessCmd(ENABLE);

????/*?Is?it?the?first?configuration?*/

????BKP_DeInit();
????RCC_LSEConfig(RCC_LSE_ON);
????while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)?==?RESET?&&?temp?<?250)
????{
????????temp++;
????????Delay_Ms(20);
????}
????if(temp?>=?250)
????{
????????return?1;
????}
?????RCC_RTCCLKConfig(?RCC_RTCCLKSource_LSI?);//仅修改了此处
?????RCC_RTCCLKCmd(?ENABLE?);
?????RTC_WaitForLastTask();
?????RTC_WaitForSynchro();
?????//		RTC_ITConfig(RTC_IT_ALR,?ENABLE);
?????RTC_ITConfig(?RTC_IT_SEC,?ENABLE?);
?????RTC_WaitForLastTask();
?????RTC_EnterConfigMode();
		RTC_SetPrescaler(?40000?);
//?????RTC_SetPrescaler(?32767?);
?????RTC_WaitForLastTask();
?????RTC_Set(?2023,?4,?25,?16,?58,?55?);???????/*?Setup?Time?*/
?????RTC_ExitConfigMode();
?????BKP_WriteBackupRegister(?BKP_DR1,?0XA1A1?);

????RTC_NVIC_Config();
????RTC_Get();

????return?0;
}


- 使用MounRiver Studio编译的固件烧录后,连串口都无法打印。


这个论坛html页面,能不能做好一点,发个问题,贴个代码发出来就是乱码,编辑了N次。

u8?RTC_Init(void)
{
????u8?temp?=?0;
????RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR?|?RCC_APB1Periph_BKP,?ENABLE);
????PWR_BackupAccessCmd(ENABLE);

????/*?Is?it?the?first?configuration?*/

????BKP_DeInit();
????RCC_LSEConfig(RCC_LSE_ON);
????while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)?==?RESET?&&?temp?<?250)
????{
????????temp++;
????????Delay_Ms(20);
????}
????if(temp?>=?250)
????{
????????return?1;
????}
?????RCC_RTCCLKConfig(?RCC_RTCCLKSource_LSI?);//修改了此处
?????RCC_RTCCLKCmd(?ENABLE?);
?????RTC_WaitForLastTask();
?????RTC_WaitForSynchro();
?????//		RTC_ITConfig(RTC_IT_ALR,?ENABLE);
?????RTC_ITConfig(?RTC_IT_SEC,?ENABLE?);
?????RTC_WaitForLastTask();
?????RTC_EnterConfigMode();
?????RTC_SetPrescaler(?40000?);//修改了此处
?????RTC_WaitForLastTask();
?????RTC_Set(?2023,?4,?25,?16,?58,?55?);???????/*?Setup?Time?*/
?????RTC_ExitConfigMode();
?????BKP_WriteBackupRegister(?BKP_DR1,?0XA1A1?);

????RTC_NVIC_Config();
????RTC_Get();

????return?0;
}



您好,下截图标注处也需要对应修改的

image.png


谢谢可以正常打印了。

image.png

/*********************************************************************
 * @fn      RTC_Init
 *
 * @brief   Initializes RTC collection.
 *
 * @return  1 - Init Fail
 *          0 - Init Success
 */
u8 RTC_Init(void)
{
    u8 temp = 0;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
    PWR_BackupAccessCmd(ENABLE);

    /* Is it the first configuration */

    BKP_DeInit();
	RCC_LSICmd(ENABLE  );
//    RCC_LSEConfig(RCC_LSE_ON);
    while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET && temp < 250)
    {
        temp++;
        Delay_Ms(20);
    }
    if(temp >= 250)
    {
        return 1;
    }
     RCC_RTCCLKConfig( RCC_RTCCLKSource_LSI );//仅修改了此处
     RCC_RTCCLKCmd( ENABLE );
     RTC_WaitForLastTask();
     RTC_WaitForSynchro();
     //		RTC_ITConfig(RTC_IT_ALR, ENABLE);
     RTC_ITConfig( RTC_IT_SEC, ENABLE );
     RTC_WaitForLastTask();
     RTC_EnterConfigMode();
		RTC_SetPrescaler( 40000 );
//     RTC_SetPrescaler( 32767 );
     RTC_WaitForLastTask();
     RTC_Set( 2023, 4, 25, 16, 58, 55 );       /* Setup Time */
     RTC_ExitConfigMode();
     BKP_WriteBackupRegister( BKP_DR1, 0XA1A1 );

    RTC_NVIC_Config();
    RTC_Get();

    return 0;
}



为什么使用MounRiver Studio编译生成的HEX文件烧录到芯片当中,无法运行。Keil编译的Hex文件可以运行。


您好,可以确认一下打开的工程是否和开发板MCU对应,按照你的说明,你应该用的是CH32F20x系列的MCU,我们EVT提供的F系列例程也是用Keil打开的,你用MRS编译的可能是V系列的工程,所以下载进去无法运行。


只有登录才能回复,可以选择微信账号登录