新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2019-4-6
- 在线时间
- 2 小时
|
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);
顺序反了
|