最近一具项目,软件用了UCOSII,里面用到RTC,RTC时间可以正常的读取,值也正确,但把时分秒分秒分别赋给不同的变量(USB_hour/USB_min)后,用Sprintf函数把(USB_hour/USB_min)赋值给数组System_time,此时再观察(USB_hour/USB_min),发现 hour的值被改变了, USB_min的值没有被改变。程序其它的地方没有处理(USB_hour/USB_min),这是为什么呢?
请指点!谢谢!
对下是我的RTC部分代码
RTC_TimeTypeDef RTC_TimeTypeInitStructure;
RTC_DateTypeDef RTC_DateStruct;
u8 System_time[5]={0x31,0x32,':',0x30,0x30};
volatile u8 USB_hour;
volatile u8 USB_min;
#ifdef RTCTask
__align(8) OS_STK TaskStk_RTC[RTC_STK_SIZE];
void Task_RTC(void *p_arg)
{
u8 i_flag;
(void)p_arg;
My_RTC_Init(); //初始化RTC
while (1)
{
if(CHTcal_flag==0xAA)
{
if(Hour_check<=12)
RTC_Set_Time(Hour_check,Min_check,00,RTC_H12_AM); //设置时间
else
RTC_Set_Time(Hour_check,Min_check,00,RTC_H12_PM); //设置时间
CHTcal_flag=0x55;
}
RTC_GetTime(RTC_Format_BIN,&RTC_TimeTypeInitStructure);
USB_hour=RTC_TimeTypeInitStructure.RTC_Hours;
USB_min=RTC_TimeTypeInitStructure.RTC_Minutes;
memset(System_time,0,5);
sprintf((char*)System_time,"%2d%s%2d",USB_hour,":",USB_min);
for(i_flag=0;i_flag<5;i_flag++)
{
if(System_time[i_flag]==0x20) System_time[i_flag]=0x30;
}
OSTimeDlyHMSM (0,0,1,0);
}
}
|