HAL_TIM_Base_Start_IT(&htim2); //打开定时器
AlarmASet();
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 59, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
if( (RCC->CSR & 0x20000000) == 0 ) //软件(Bit28)或上电(Bit27)复位 RCC_FLAG_IWDGRST(Bit29)
{
HAL_UART_Receive_IT(&huart1,RxHost,7); //允许上位机通讯
while(TimSec < 120) //2分钟定时
{
if(TimTmp != TimSec)
{
TimTmp = TimSec;
GetValue();
FlotoBCD(Value);
LcdComm(0x58);
Display();
}
if(Rx1Flag == 2) //收到上位机数据
{
Rx1Flag = 0;
TimSec = 0;
HostReve();
}
else if( (Rx1Flag == 1) && (TimSec > 1) )
{
HAL_UART_AbortReceive_IT(&huart1);
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
HAL_UART_Receive_IT(&huart1,RxHost,7);
Rx1Flag = 0;
}
}
NumId = 0;
AdNum = 0;
Bake = 0;
SendData();
if(ComErr)
HAL_Delay(6000);
else
{
TimTmp = SamNum;
SamNum = 1;
for(i=0; i<3; i++)
{
AdNum = 0;
while(Timing == 0);
Timing = 0;
RtcTime(0,0);
GetValue();
FlotoBCD(Value);
WrData();
AdNum = 1;
SendData();
if(ComErr)
{
HAL_Delay(6000);
break;
}
}
SamNum = TimTmp;
AdNum = 0;
}
}
|