8083|13

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

RTC时钟问题 [复制链接]

                                 手里有一块板子,用以前写好的程序(RTC做万年历),在其他板子(开发板、自己设计的电路板)上,时钟都能正常使用,但是在新做的板子上,每次上电,时钟就初始化了,感觉备份区的寄存器掉电后,内容变了。不知道哪位遇到过这样的问题
此帖出自stm32/stm8论坛

最新回复

                                 找到问题了,硬件问题,电池连接的稳压器件选型有问题,电路时别的同事设计的,别的板子一直用的可以,他提的器件不小心提错了,掉电后片子一脚根本没有电压。  详情 回复 发表于 2010-8-12 13:00
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 估计电路问题比较大。
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 应该是电路问题~或者芯片和液晶显示器的问题~
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 昨天晚上太晚了,发代码和电路的时候不能操作,马上把代码跟电路图送上
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 


int main(void)
{
#ifdef DEBUG
  debug();
#endif
        
        
        /***********时钟配置************/
  RCC_Configuration();

        /***********嵌套中断配置********/
  NVIC_Configuration();

        /***********GPIO配置************/
        GPIO_Configuration();

        GPIO_WriteBit(GPIOB, GPIO_PIN_RUN_LED, Bit_SET);
        /***********实时时钟配置********/
        

        /***********系统滴答时钟配置****/
        SysTick_Config();

        /***********USART配置***********/
        USART_Configuration();
         RTC_Configuration();

        /***********看门配置************/
        IWDOG_Configuration();

        /***********存储器配置**********/
  SPI_FLASH_Init();

        /***********定时器**************/
        TIM_Configuration();

        /***********ADC配置*************/
        ADC_Configuration();
        DAC_Configuration();
        Delay(50);        
        Send_Reset();


//        GPIO_WriteBit(GPIOB, GPIO_PIN_RUN_LED, Bit_RESET);
        TR_FLAG1 = 0x80;
  TR_FLAG2 = 0x80;
        TR_FLAG3 = 0x80;
        Run_Lost = 0;
        Time_Read_Flag = 0;
        UART_Send_Flag = 0x00;



  timer0 = 0;
  Soil_Read_Flag = 1;

           
        while (1)
        {
             ....................
                }
}这个是主函数
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
/*******************************************************************************
* Function Name  : RTC_Configuration
* Description    : Configures the RTC.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void RTC_Configuration(void)
{
        char text[20];
        int j;
        u32 v;
  /* Enable PWR and BKP clocks */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);  

  /* Allow access to BKP Domain */
  PWR_BackupAccessCmd(ENABLE);
        v =  BKP_ReadBackupRegister(BKP_DR1);
        sprintf(text,"BKP_DR1 = 0x%x\n",v);
        for(j=0;text[j] != '\0';j++)
        {
                TxBuffer1[j] = text[j];
        }
         
  TxCounter1 =j;
  TxPointer1 = 0;

  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
        while(TxPointer1 < TxCounter1)
        {
                IWDG_ReloadCounter();
                __nop();
        }
  TR_FLAG1 = 0x80;
        if (BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)
                {               
                 
  /* Reset Backup Domain */
                  BKP_DeInit();
                        BKP_WriteBackupRegister(BKP_DR2,2008);
                  BKP_WriteBackupRegister(BKP_DR3,1);
                  BKP_WriteBackupRegister(BKP_DR4,1);
            BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);
                        RTC_SetCounter(0x0);       


                  /* Enable LSE */
                  RCC_LSEConfig(RCC_LSE_ON);
                  /* Wait till LSE is ready */
                  while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
                  {}
               
                  /* Select LSE as RTC Clock Source */
                  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
               
                  /* Enable RTC Clock */
                  RCC_RTCCLKCmd(ENABLE);
               
                  /* Wait for RTC registers synchronization */
                  RTC_WaitForSynchro();
               
                  /* Wait until last write operation on RTC registers has finished */
                  RTC_WaitForLastTask();
                         RTC_WaitForSynchro();
                        RTC_WaitForLastTask();
                  /* Enable the RTC Second */
                  RTC_ITConfig(RTC_IT_SEC, ENABLE);
               
                  /* Wait until last write operation on RTC registers has finished */
                  RTC_WaitForLastTask();
               
                  /* Set RTC prescaler: set RTC period to 1sec */
                        RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
                //  RTC_SetPrescaler(16383); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
                  /* Wait until last write operation on RTC registers has finished */
                  RTC_WaitForLastTask();
                       
                }
                else
                {
                        RTC_WaitForLastTask();
            /* Enable the RTC Second */
            RTC_ITConfig(RTC_IT_SEC, ENABLE);
            RTC_WaitForLastTask();
                }       
       
                CheckForDaysElapsed();
}

这个是RTC配置
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 感觉程序应该没啥问题,因为在别的板子上都能正常使用,现在主要调试时钟跟串口1.
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 现在每次上电的时候,从串口输出备份区BKP_DR1数值,同时输出时钟,发现每次备份区都是0,时钟是默认的2008-01-01 00:00:00
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

9
 

电路.jpg (739.22 KB)

电路.jpg

此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 电路跟其它板子的电路对比了一下,感觉没有啥区别
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
备份区复位只有两种可能,不知道是哪个原因引起的。

未命名.jpg (31.68 KB)

未命名.jpg

此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 其他板子上没问题的话,应该就是硬件的问题
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 TAPER注意到没?
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 找到问题了,硬件问题,电池连接的稳压器件选型有问题,电路时别的同事设计的,别的板子一直用的可以,他提的器件不小心提错了,掉电后片子一脚根本没有电压。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表