我能够从PC到STM32051板通过串行接收输入数据的字节,但是只要我键入2个或更多字符以发送一次,中断就会停止,直到我复位板以重复相同的过程为止。 。如何更改IRQHandler代码以接收23个字节或字符串的有效载荷?谁能帮助我提供示例代码或修改当前代码,以便我可以接收此有效载荷?谢谢,
这里是IRQHandler函数,只能接收一个字节。
void USART1_IRQHandler(void)
{
unsigned char getbuffer [200], finalbuffer, targetdata[];
if(USART_GetITStatus(USART1, USART_IT_RXNE) )
{
getbuffer [i] = USART_ReceiveData(USART1);
buffer = (getbuffer [i]);
USART_SendData(USART1, buffer);//Feedback
i++;
}
}
答案 0 :(得分:0)
您需要为USART清除中断处理程序中的RXNE
中断位。
if(USART_GetITStatus(USART1, USART_IT_RXNE) )
{
__HAL_USART_CLEAR_IT(USART1, USART_IT_RXNE);
…
}
请删除USART_SendData(USART1, buffer);
,因为这是一项阻止功能,与发送数据所花费的时间相同。因此,它将无法正常工作。请在您的主循环中创建一个传输,以便在接收到某些内容时传输缓冲区。
USART_ReceiveData
也不是HAL标准,因此我假设但:它只需要读取RDR
寄存器,而不必等待使用中断时的传入数据。