RT-Thread uart2串口dma idle接收不断帧

本文档详细介绍了如何在STM32F407硬件上使用RT-Thread Studio IDE配置UART2串口的DMA接收,包括设置RX缓冲区、编写回调函数、启动接收线程,以及解决可能出现的串口接收断帧问题。同时,作者分享了自己学习RT-Thread的原因和体验,强调了国产MCU生态建设的重要性。

硬件STM32F407,IDE使用RT-Thread Studio。

uart2串口使用这两个引脚:

功能 IO端口
UART2-TX PA2
UART2-RX PA3



UART2 - DMA接收配置

  • 先使能DMA接收,RX缓冲区可以稍微调大些。
    在这里插入图片描述

  • board.h 中添加宏,来使能 RX_DMA。
    在这里插入图片描述

  • 既然都打开了 board.h,再顺便把时钟源改为外部晶振。
    在这里插入图片描述

  • 编写 UART2 DMA 接收测试代码。

  • 发生接收事件后,会触发回调。回调内记录本次接收的消息长度,并发送信号量。线程内接收到信号量后开始执行后续的任务,调试输出接收到的长度和内容。
    main.c

#include <rtthread.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#include "drivers/serial.h"
rt_device_t u2_dev = RT_NULL;
struct serial_configure u2_cfg = RT_SERIAL_CONFIG_DEFAULT;
struct rt_semaphore u2_rx_sem;
rt_thread_t u2_recv_thread;

rt_size_t u2_rx_len = 0;
rt_err_t
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值