stm32f407 6个串口dma_调试分享:STM32F103串口UsartDMA模式,已测试

fa6c214900c7d38ad576b83be13e5835.png

编写前准备:

1,看说明书

2,看固件库中相关的固件函数

编写:把串口1设置成DMA模式,采用空闲总线中断模式

目的:在不占用CPU的前提下,实现数据的高速传递,节省大量资源,并且方便协议编写,协议统一、移植。

一、 各个部分初始化与使能

1、声明结构体

d34c289a0a5fef5aca90d9b886de3a41.png

声明

1、开启GPIOA时钟、开启串口1时钟、开启DMA1时钟

2、配置通讯串口Usart1的GPIO,举例中连接硬件位RS485芯片,片选发送和接受状态。

f6a6917798cdcdd3f750e696523b3347.png

3、配置串口发送DMA设置,选择DMA1通道4,中断优先级在NVIC_Configuration中。

a17d6adcd7f6d10f4d4c01bc7580cedd.png

4、 配置串口接受DMA设置,选择DMA1通道5

6c314d8239efb6817151504232494f64.png

5、串口USART1的初始化,举例中波特率可设,实际应用中可以固定,这一步设置最为关键,中断使能一定设置成空闲总线中断。

中断优先级在NVIC_Configuration中。

6、将串口1默认成接受模式

e1f9cd152eb2ac864fd4b9d667ce1584.png

二、中断响应

1 、DMA1通道4中断响应设置,下次接受最大长度可按照自己的情况更改。

092576731fc23cf9f965767089ea76ab.png

2、串口中断相应程序

2.1、判断空闲中断

2.2、暂时禁止DMA,便于分析命令

2.3、计算命令长度,分析命令是否正确;如正确,准备好返回的数据,发送;如不正确,复位,重启DMA接受模式。

错误代码:01功能码不对;02寄存器地址不对;03数量不对;04检验不对。

2.4、处理完成,清标志

9504e1a44c05e0f376a75480cdd05aed.png

总体实现了占用CPU资源小,接收发送均交由DMA完成。

用者当用,能者勿喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值