gpt4 book ai didi

c - USART1中断IRQHandler如何接收字符串

转载 作者:行者123 更新时间:2023-11-30 16:12:37 33 4
gpt4 key购买 nike

我能够通过串行从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++;
}
}

最佳答案

您需要清除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 寄存器,而不是在使用中断时等待传入数据.

关于c - USART1中断IRQHandler如何接收字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296304/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com