通过STM32串口通讯,读取外部设备若干寄存器数据,发送固定字节后程序卡死
尝试调整各种定时发送周期,但均无效,发现每次程序都是发送固定字节数,所以想会不会是存储空间的问题,程序对比如下:
有问题的程序:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &husartx_rs485)
{
Rx_Buf[RxCount] = tmp_Rx_Buf;
RxCount++;
HAL_UART_Receive_IT(&husartx_rs485,(uint8_t*)&tmp_Rx_Buf,1);
}
}
后来,在串口接收中断回调函数中增加了Rxcount清零后,问题完美解决
正常执行的程序:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &husartx_rs485)
{
RxCount=0; //每次进入中断时,都将数组移至开始处,防止越界
Rx_Buf[RxCount] = tmp_Rx_Buf;
RxCount++;
HAL_UART_Receive_IT(&husartx_rs485,(uint8_t*)&tmp_Rx_Buf,1);
}
}
至此,程序死机的问题完美解决,程序发送,接收正常。