大家好, 我初学stm32,,现在是用两个stm32使用蓝牙芯片做数据传输,通过串口输数据,直接传输到另一个蓝牙,通过另一个蓝牙的串口显示出来, 现在在做压力测试,不过有时候跑了几天就会死掉,发送的那个就是死掉的那个,死了以后再在PC的串口工具上上输什么都不会传输过去了,直接死了 请问是不是可以用看门狗复位(请问是不是用独立看门狗?)或者有什么其他方式可以检测到串口死吗? 串口的中断回调是这样的 void USART1_IRQHandler(void) { portBASE_TYPE TaskWoken = pdFALSE; vTaskSuspendAll(); if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET) { unsigned char RxChar; unsigned char Event = DEMO_EVENT_UART_RX; RxChar = USART_ReceiveData(USART1); xQueueSendFromISR(gattdQueueHandleUartRx, &RxChar, &TaskWoken); xQueueSendFromISR(gattdQueueHandleEvent, &Event, &TaskWoken); /* signal event to GATTDEMO task */ } xTaskResumeAll(); portEND_SWITCHING_ISR(TaskWoken); } |
2、然后从控制板去捕获这个IO反转,一旦超出固定时间仍然接收不到新的反转,就视为主控制板故障了。
3、这时从控制板向PC的串口助手上发送ERROR信息。
-------------------------------------------------------------------------------
以上只是治标不治本,你关键是要找出死机的原因。