F070读取ADC转换数据,两字节合为一个字节,加入异或校验。
跑一两个小时没问题。时间长了就出现死机情况。
有时能恢复,有时就死掉了。不想加看门狗。
使用内部时钟。
while (1)
{
adc_temp_value = (uint16_t) ReadConversionRegs();;
if((adc_temp_value >= 0) &&(adc_temp_value < 32768))
{
adc_value_sum += adc_temp_value;
nCount = nCount + 1 ;
if(nCount >= ADC_Get_Num)
{
nCount = 0;
dataSrc = adc_value_sum ;
dataDest = Slid_avg_filter(&slid_filter,dataSrc);//获取滤波数据
send_adc_value[0] = dataDest >> 8;
send_adc_value[1] = dataDest;
send_adc_value[2] = send_adc_value[0] ^ send_adc_value[1];
nUSART2_Rx_Flag = 0;
if(Rx_temp[0] == 0xAA)
{
Rx_temp[0] = 0;
HAL_IWDG_Refresh(&hiwdg);
HAL_UART_Transmit(&huart2,(uint8_t *)send_adc_value,3,100);
HAL_IWDG_Refresh(&hiwdg);
HAL_Delay(5);
}
}
adc_value_sum = 0;
adc_value_average = 0;
}
}
|