本来LCD显示很正常的 但是我在做RTC实验时怎么也显示不出来 我试过只要加上RTC_Init()函数LCD就显示不出来了 去掉就又正常显示 该函数如下:
u8 RTC_Init(void)
{
//检查是不是第一次配置时钟
u8 temp = 0;
if(BKP->DR1!=0X5050)//第一次配置
{
RCC->APB1ENR |=1<<28; // 使能电源时钟
RCC->APB1ENR |=1<<27; //使能备份时钟
PWR->CR |= 1<<8; //取消备份区写保护
RCC->BDCR |= 1<<16; //备份区域软复位
RCC->BDCR &= ~(1<<16); //备份区域软复位结束
RCC->BDCR |= 1<<0; //开启外部低速振荡器
while((!(RCC->BDCR&0X02))&&temp<250) //等待外部时钟就绪
{
temp++;
delay_ms(10);
}
if(temp >=250) return 1;//初始化时钟失败 晶振有问题
RCC->BDCR |= 1<<8; //LSI 作为RTC时钟
RCC->BDCR |= 1<<15; //RTC 时钟使能
RTC->  RLH = 0X0000;
RTC->  RLL =32767; //时钟周期设置
while(!(RTC->CRL&(1<<5))); //等待RTC寄存器操作完成
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH |= 0X01; //允许秒中断
while(!(RTC->CRL&(1<<5))); //等待RTC寄存器操作完成
RTC->CRL |= 1<<4; //允许配置
RTC_Set(2013,5,1,12,29,50);//设置时间
RTC->CRL &=~(1<<4); //配置更新
while(!(RTC->CRL&(1<<5))); //等待RTC寄存器操作完成
BKP->DR1 |= 0X5050;
}
else //系统继续计时
{
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH |= 0X01; //允许秒中断
while(!(RTC->CRL&(1<<5))); //等待RTC寄存器操作完成
}
MY_NVIC_Init(0,0,RTC_IRQChannel,2);
RTC_Get();//
return 0;
}
哪位大神帮忙看看是不是跟这个函数有关啊 谢谢啊
|