pkeuus 发表于 2022-1-23 15:43:15

RTC如何设置使用外部32.768晶振

RTC时间相差太大,如何设置为外部晶振?
void MF_RCC_XTLF_IO_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;

    GPIO_InitStruct.pin = FL_GPIO_PIN_9;
    GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_DISABLE;
    FL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    GPIO_InitStruct.pin = FL_GPIO_PIN_10;
    GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_DISABLE;
    FL_GPIO_Init(GPIOD, &GPIO_InitStruct);
}

void MF_Clock_Init(void)
{
    /* Initial XTLF */
    MF_RCC_XTLF_IO_Init();
    FL_RCC_XTLF_SetWorkCurrent(FL_RCC_XTLF_WORK_CURRENT_450NA);    /* 设置工作电流为最大以便快速起振 */
    FL_RCC_XTLF_Enable();

    /* Initial Low Speed Clock */
    FL_RCC_SetLSCLKClockSource(FL_RCC_LSCLK_CLK_SOURCE_LPOSC);

    /* Initial RCHF */
    FL_RCC_RCHF_SetFrequency(FL_RCC_RCHF_FREQUENCY_8MHZ);
    FL_RCC_RCHF_Enable();

    /* Initial System Clock */
    FL_FLASH_SetReadWait(FLASH, FL_FLASH_READ_WAIT_0CYCLE);    /* 设置FLASH读等待为 0 个周期 */
    FL_RCC_SetSystemClockSource(FL_RCC_SYSTEM_CLK_SOURCE_RCHF);    /* 设置系统主时钟为 RCHF */
    FL_RCC_SetAHBPrescaler(FL_RCC_AHBCLK_PSC_DIV1);
    FL_RCC_SetAPB1Prescaler(FL_RCC_APB1CLK_PSC_DIV1);
    FL_RCC_SetAPB2Prescaler(FL_RCC_APB2CLK_PSC_DIV1);

    SystemCoreClockUpdate();

}
这样设置有问题吗?

顾博文 发表于 2022-1-25 08:45:04

我们的例程默认是使用XTLF的
你自己写的话
1、首先操作XTLFCR寄存器将XTLF打开
2、FL_RCC_SetLSCLKClockSource(FL_RCC_LSCLK_CLK_SOURCE_LPOSC); 这个改下

pkeuus 发表于 2022-2-17 16:37:41

上面是魔方里面设置外部晶振XTLF的源码,我没有动过,可是时间根本不对,想不通你们就没有一个RTC使用外部32.768khz的例程吗?内部使用RCHF的? 难道你们都在使用内部RCLF给RTC?这样做出来的时钟是准确的?这些基本的例程竟然一个也没有?搞这芯片花的时间比用ST的时间十倍有余了,你说的第一步,难道没看到代码里面已经操作了吗?FL_RCC_SetLSCLKClockSource(FL_RCC_LSCLK_CLK_SOURCE_XTLF);这里改了一样不对

顾博文 发表于 2022-2-23 08:53:20

pkeuus 发表于 2022-2-17 16:37
上面是魔方里面设置外部晶振XTLF的源码,我没有动过,可是时间根本不对,想不通你们就没有一个RTC使用外部3 ...

RTC 你可以不设置时钟源。 只要将XTLF打开,LSCLK自动使用XTLF,如果XTLF停振,会自动切换到LPOSC 。RTC不准要么就是XTLF停振了。可以用fout0 引脚输出LSCLK时钟,看看当前的LSCLK时钟时XTLF还是LPOSC
页: [1]
查看完整版本: RTC如何设置使用外部32.768晶振