【】串口通信参数3.配置和调试方式

前言

之前因为学习了串口的基本收发函数,实现了轮询收发、中断接收等功能,但是HAL库自带的中断接收功能只能接收定长实际使用过程中的数据。比较不方便。其实接收到的数据大部分都是变长的,所以我们在HAL库的基础上做一些修改来接收变长的数据。

工程配置

我们仍然使用 MXCube 库来配置时钟、使用的串行通信参数等信息。配置完成后直接生成需要的工程,然后在工程的基础上添加我们自己的代码。具体步骤如下

配置 RCC 和调试模式

使用外部 8MHz 晶振

使用 SWD 进行调试并使用 Systick 作为基本计时器

2.配置串口通讯参数

配置串口通讯参数

3.配置DMA参数和中断

配置 DMA

DMA 参数

中断配置

生成项目并添加用户代码

生成工程后用c语言实现串口通信,我们需要添加一些代码来实现变长数据的接收。

首先在Usart.c文件中添加如下代码,开启DMA数据传输,开启串口IDLE中断。具体代码如下:

在 MX_USART2_UART_Init 函数的末尾添加上面显示的代码

第一行代码使能串口的数据接收DMA传输,第二行代码使能串口的空闲中断。

然后我们需要构建一个空闲中断回调函数来实现数据接收。详情如下

空闲中断回调函数

该函数主要是在产生空闲中断后清除空闲中断标志,然后停止串口DMA数据传输用c语言实现串口通信,记录接收数据的长度,然后重新启动串口DMA数据接收。最后在串口中断中调用这个函数。

在中断服务函数中调用空闲服务函数

完成上述代码的添加后,就实现了变长数据的接收。为了检查代码的有效性,我们将接收到的数据发送回计算机,我们将发送代码添加到主函数中。

接收到的数据在主函数中发回

实验结果

实现可变长度数据的发送和接收

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论