u8 RTC_Init(void)
{
//检查是不是第一次配置时钟
u8 temp=0;
//if(BKP->DR1!=0X5050)//第一次配置
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050) //从指定的后备寄存器中读出数据:读出了与写入的指定数据不相乎
{
/* Enable PWR and BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟
/* Allow access to BKP Domain */
  WR_BackupAccessCmd(ENABLE); //使能RTC和后备寄存器访问
/* Reset Backup Domain */
BKP_DeInit(); //将外设BKP的全部寄存器重设为缺省值
/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE),使用外设低速晶振
/* Wait till LSE is ready */
//GPIO_ResetBits(GPIOE,GPIO_Pin_5);
//GPIO_SetBits(GPIOE,GPIO_Pin_6); //指示灯,放在这里灯的亮灭是没问题的
while ((RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)&&temp<250) //检查指定的RCC标志位设置与否,等待低速晶振就绪
{
temp++;
delay_ms(10);
}
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //
GPIO_SetBits(GPIOE,GPIO_Pin_6); //指示灯,在这就不响应了,程序跳不过去啊
if(temp>=250)return 1;//初始化时钟失败,晶振有问题
/* Select LSE as RTC Clock Source */
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟
我用的自己的最小系统板,带外部低速晶振的,按道理说应该是能跳过红色的这段程序的啊,实在找不出问题啊,求助
|