OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3724|回复: 4

RTC问题

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-4-6
在线时间
2 小时
发表于 2019-4-6 20:22:30 | 显示全部楼层 |阅读模式
5金钱
用STM32F429阿波罗开发板移植RTC到别的项目(<<实验16 RTC实时时钟实验>>RTC目录下的两个文档rtc.c,rtc.移到别的项目),RTC时间不动(TR寄存器不动,几十秒才动一次),求帮助。
int main(void)
{        
float pitch,roll,yaw;          //欧拉角
short aacx,aacy,aacz;         //加速度传感器原始数据
short gyrox,gyroy,gyroz;        //陀螺仪原始数据
RTC_TimeTypeDef RTC_TimeStruct;
     RTC_DateTypeDef RTC_DateStruct;

HAL_Init();                     //初始化HAL库   
Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
delay_init(180);                //初始化延时函数
uart_init(115200);              //初始化USART
//LED_Init();                     //初始化LED
//TIM3_Init(8999,10000);    //  1秒的定时器

if(0 !=RTC_Init())printf("RTC_Init failed\r\n");
RTC_Set_WakeUp(RTC_WAKEUPCLOCK_CK_SPRE_16BITS,0);
W25QXX_Init();                  //初始化W25Q256
jpeg_file_init();
PwoffStoInitPara();
my_mem_init(SRAMIN);            //初始化内部内存池
my_mem_init(SRAMCCM);           //初始化内部CCM内存池

dcmi_line_buf[0]=mymalloc(SRAMIN,jpeg_line_size*4); //为jpeg dma接收申请内存
dcmi_line_buf[1]=mymalloc(SRAMIN,jpeg_line_size*4); //为jpeg dma接收申请内存
jpeg_data_buf = mymalloc(SRAMIN,jpeg_buf_size);


while(!dcmi_line_buf[0]||!dcmi_line_buf[1]||!jpeg_data_buf) //内存分配出错
{     
  printf("malloc mem failed\r\n");
  delay_ms(2000);
}   

while(vl53l1x_init(&vl53l1x_dev))
{
  printf("vl53l0x_init failed\r\n");
  LED0=!LED0;
  delay_ms(1000);
}
while(mpu_dmp_init())         
{
  printf("mpu9250_init failed\r\n");
  LED0=!LED0;
  delay_ms(500);
}



u32 count =0;
u8 bbuf[40]={0};

while(1)
{
  count++;

  if(count >=1000)
  {
   count = 0;
   printf("TR = %x\r\n",RTC_Handler.Instance->TR);
   HAL_RTC_GetDate(&RTC_Handler,&RTC_DateStruct,RTC_FORMAT_BIN);
   HAL_RTC_GetTime(&RTC_Handler,&RTC_TimeStruct,RTC_FORMAT_BIN);
   memset(bbuf,0,40);
   sprintf((char*)bbuf,"20%02d%02d%02d%02d%02d%02d",\
    RTC_DateStruct.Year,RTC_DateStruct.Month,RTC_DateStruct.Date,\
    RTC_TimeStruct.Hours,RTC_TimeStruct.Minutes,RTC_TimeStruct.Seconds);
   printf("time = %s\r\n",bbuf);
   //LED0=!LED0;
  }
  delay_ms(1);
}
}

RTC初始化都是对的。
打印信息:
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126
TR = 201126
time = 20190406201126

最佳答案

查看完整内容[请看2#楼]

问题解决了, HAL_RTC_GetDate(&RTC_Handler,&RTC_DateStruct,RTC_FORMAT_BIN); HAL_RTC_GetTime(&RTC_Handler,&RTC_TimeStruct,RTC_FORMAT_BIN); 顺序反了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-4-6
在线时间
2 小时
 楼主| 发表于 2019-4-6 20:22:31 | 显示全部楼层
问题解决了,
  HAL_RTC_GetDate(&RTC_Handler,&RTC_DateStruct,RTC_FORMAT_BIN);
    HAL_RTC_GetTime(&RTC_Handler,&RTC_TimeStruct,RTC_FORMAT_BIN);
顺序反了
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-4-6
在线时间
2 小时
 楼主| 发表于 2019-4-6 23:09:49 | 显示全部楼层
看main函数值关心RTC_Init就行,RTC_Init还要操作些什么才能用RTC吗?????
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-4-6
在线时间
2 小时
 楼主| 发表于 2019-4-7 00:34:22 | 显示全部楼层
问题解决了,我的天啊。HAL_RTC_GetDate,HAL_RTC_GetTime顺序用反了,一定先调用HAL_RTC_GetTime后调用HAL_RTC_GetDate,不然TR会几十秒甚至几分钟更新一次,那个郁闷啊。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-4-6
在线时间
2 小时
 楼主| 发表于 2019-4-7 00:37:11 | 显示全部楼层
问题解决了,
  HAL_RTC_GetDate(&RTC_Handler,&RTC_DateStruct,RTC_FORMAT_BIN);
    HAL_RTC_GetTime(&RTC_Handler,&RTC_TimeStruct,RTC_FORMAT_BIN);
顺序反了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-15 12:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表