STM32F4 LSI的配置

今天配置了一下F4的RTC使用了LSI,但是原来使用的是LSE ,这就造成了一直无法初始化

初始化代码如下

u8 My_RTC_Init(void)
{
    RTC_InitTypeDef RTC_InitStructure;
    RTC_TimeTypeDef RTC_TimeStruct2;
    u16 retry=0X1FFF; 
   char BUFF[50]={"\r\n RTC初始化失败 \r\n"};
   char BUFF2[50]={"\r\n RTC初始化成功 \r\n"};
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟
     PWR_BackupAccessCmd(ENABLE);    //使能后备寄存器访问 
    
//    if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5054)        //是否第一次配置?
//    {
        //RCC_LSEConfig(RCC_LSE_OFF);//LSE 关闭
        //RCC_LSICmd(ENABLE);
        RCC_LSICmd(ENABLE);
        while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)    //检查指定的RCC标志位设置与否,等待低速晶振就绪
        {
            retry++;
            delay_ms(10);
//            if(retry>0x25FF) 
//            { 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要打开STM32F4LSI,需要按照以下步骤: 1. 打开RCC外设时钟 在使用LSI之前,需要先打开RCC外设时钟。可以使用以下代码: ``` RCC_LSICmd(ENABLE); ``` 2. 等待LSI稳定 打开LSI后,需要等待一段时间,让LSI稳定。可以使用以下代码等待: ``` while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); ``` 3. 使用LSILSI稳定后,就可以使用LSI了。例如,可以使用LSI作为TIM5的时钟源: ``` RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); TIM_TimeBaseStructure.TIM_Prescaler = (uint16_t)(SystemCoreClock / 40000) - 1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = 4000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = 4000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); TIM_SelectOutputTrigger(TIM5, TIM_TRGOSource_Update); TIM_Cmd(TIM5, ENABLE); ``` 以上代码中,使用LSI作为TIM5的时钟源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值