STM32F407使用cube空闲中断DMA串口环形缓冲区

前面的系统配置不在赘述,直接从串口配置开,我这边使用到5组串口,具体使用按照实际需求,

1.这边需要打开DMA Settings,在Mode选择Normal,后生成代码。(注意要勾起来中断)

2.现在进入代码,创建一个.H 文件专门用于串口处理(名字按照喜欢的取就行)

#ifndef __UART_TOOL_H
#define __UART_TOOL_H

#include "usart.h"

#define RXTXBUF_SIZE 1024

/*串口环形缓冲串口接收*/
typedef struct
{
    UART_HandleTypeDef dut_huart; //为串口 huart1
    unsigned char *pRxBuf;    //接收缓冲区
    unsigned int usRxBufSize; //接收大小
    unsigned int usRxWrite;    //当前位置
    unsigned int usRxRead;   //读取位置
    unsigned char rec_end_flag; //接收完成标志位
    DMA_HandleTypeDef dut_dma; //接收DMA
    unsigned char *dmaRxbuf;  //DMA接收指针
    volatile unsigned int dmaRxlen; //DMA 接收长度

}DUT_USART_FIFO;

unsigned char GetBuf(DUT_USART_FIFO *_pUart,unsigned char *p_ucBuf,unsigned int *_usBufLen);
void UartIRQ(DUT_USART_FIFO *_pUart);
void EnabledUart(DUT_USART_FIFO *_pUart);

#endif


3.在来到创建.c阶段(同样名字用自己喜欢就行)

#include "UART_tool.h"

unsigned char GetChar(DUT_USART_FIFO *_pUart, unsigned char *_pByte)
{
    unsigned int usRxWrite=_pUart->usRxWrite;
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值