hygbeyond 发表于 2019-10-31 10:54:42

TK499配置完外部LSE,晶振不起振

int8_t RTCx_config(void)
{
    uint8_t errCnt = 200;
        GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO初始化结构体变量

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 ;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
        GPIO_Init(GPIOB, &GPIO_InitStructure);


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推免输出
        GPIO_Init(GPIOB, &GPIO_InitStructure);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|BIT(9) /*| RCC_APB1Periph_BKP*/, ENABLE);// 使能 PWR 和 BKP 时钟
    PWR_BackupAccessCmd(ENABLE);                                          // 使能 BKP Domain 的访问

        RCC->BDCR |= RCC_LSE_ON; //使能外部时钟 LSE (32.768KHz)

        errCnt = 200;
        while(errCnt--){
                if( RCC->BDCR & BIT(1))// 等待外部时钟 LSE 就绪
                        break;
                OS_TimeDly(1);
        }

        if (errCnt == 0) {
                pr_debug("LSE error\n");
                return 1;
        }

        RCC->BDCR &= ~(3<<8);
        RCC->BDCR |= (1<<8);// 选择外部时钟 LSE 为 RTC 时钟
        RCC->BDCR |= BIT(15);// 使能 RTC 时钟

        pr_debug("LSE clk enable:BDCR %x\n", RCC->BDCR);

        pr_debug("RTC CRL:%02x\n", RTC->CRL);

        if(RTC_WaitForLastTask())
                return 1;

    RTC->CRL |= RTC_CRL_CNF;
//    RTC_WaitForSynchro();                                                   // 等待 RTC 寄存器同步
//    RTC_WaitForLastTask();                                                // 等待上次写入 RTC 寄存器完成
    RTC_SetPrescaler(32767);                                                // 设置 RTC 间隔为1秒 计算公式为 RTC period = RTCCLK / RTC_PR = (32.768 KHz) / (32767 + 1)
    RTC->CRL &= ~RTC_CRL_CNF;

    return RTC_WaitForLastTask();
}

hygbeyond 发表于 2019-11-1 10:46:07

是引脚配置错误了吗?还是别的原因?在资料中没有说明

阿豪博士 发表于 2019-11-1 13:52:04

打开官方的 demo 试试看?

tiky 发表于 2019-11-1 17:06:57

RTC慎用,跟ST的一样,难起振的,下一版看看做个好用一点的RTC吧,这一版看看就行{:lol:}
页: [1]
查看完整版本: TK499配置完外部LSE,晶振不起振