测试串口通信的中断接收

//在这做些笔记分享,顺便记录一些问题,希望有了解情况的人帮忙指教。


HAL_UART_Transmit(&huart1, (uint8_t *)"Hallo\r\n", 7, 4);

1 (uint8_t *)是为了去掉warnning

2 \r \n 是 0D 0A 接收的时候最好按正点原子那样检查

3 第三个参数是发送数据的数量 少了就发前半部分,多了就补00再发

HAL_UART_Receive_IT(&huart1,(uint8_t *) aRxBuffer,5);

4 这个是打开串口中断的函数,当它接收到的数据满足数量要求的时候才会进入回调函数让你处理信息

5 串口通信助手在发送消息的时候 如果你勾选了“发送新行” 它会自动给你补一个\r\n 也就是说 你以为你只发了一个字节的a 其实你发了3个字节的 a\r\n


问题

1 数组和函数接收的字节数都是5,我发了6个字节的消息,第六个字节会在下一次回调里显示,但是当我发送7个字节的时候,后面两个字节都被丢弃了。

  可是当数组和函数接收的字节数都是1,我发送a\r\n时,它不会丢弃掉\r\n 而是会帮忙保留一个\r

2 函数接收的字节数是1,我发送abcd的时候 它会自动进两次回调,一次取出a 一次取出b。

    函数接收的字节数大于1时不会有擅自多次进入回调的情况

    串口调试的时候也不会进两次中断,据说是因为串口中断的电平在调试的时候丢失了


已邀请:

要回复问题请先登录注册