STM32
直播中

王桂英

7年用户 1293经验值
私信 关注
[问答]

怎样去使用STM32F103的串口输出功能呢

怎样去使用STM32F103的串口输出功能呢?有哪些基本步骤?

回帖(1)

李韵鹤

2021-12-13 15:06:08
最近在用STM32F103的,想使用串口输出功能,导致各种坑,已开始使用了中断模式,有没有进不了中断,那就是硬故障,
网上阅读很多帖子都没有解决,果断摆脱
在本页末尾可以找到github链接(很快)。
步骤 1: 使用 CubeMX 创建您的项目并将两个 RX/TX DMA 放在串行接口上。Tx DMA 应处于正常模式,而 Rx 应处于循环模式。





第 2 步: 激活串行的 NVIC 中断。(DMA 需要它)





第 3 步: 基本上,我们要做的是让 DMA 读取 UART 并将它们放入一个数组中。通过将模式更改为循环,DMA 将无限期地继续此操作而不会中断(循环缓冲)。最重要的是,一个线程将收集数据并解析它们。出于这个原因,我们需要以下定义
#define UART_DMA_BUFFER_SIZE 2048
#define PARSER_MESSAGE_LIST_SIZE 8
#define PARSER_MESSAGE_SIZE 1024
第 4 步:使用 DMA 分配和激活 UART 接收并提供(足够大的)缓冲区。请注意,这种方法永远不会在 RX 上触发中断,并且该数组将用作循环缓冲区。


第 5 步: 创建一个 FreeRTOS 线程,该线程将监视缓冲区并将任何新数据复制到中间缓冲区以供进一步处理。


第 6 步: 现在我们将填充 UART 的解析器。正如我们之前所说,主要目的是从 DMA 缓冲区中获取所有新的可用数据并将它们放入消息列表中(每个完整的消息都应以 'rn' 字符结尾)。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分