前言:
此时我们对“stm32f103 dma2”可能比较注意,同学们都想要分析一些“stm32f103 dma2”的相关文章。那么小编也在网络上收集了一些对于“stm32f103 dma2””的相关知识,希望看官们能喜欢,同学们一起来了解一下吧!编写前准备:
1,看说明书
2,看固件库中相关的固件函数
编写:把串口1设置成DMA模式,采用空闲总线中断模式
目的:在不占用CPU的前提下,实现数据的高速传递,节省大量资源,并且方便协议编写,协议统一、移植。
一、 各个部分初始化与使能
1、声明结构体
1、开启GPIOA时钟、开启串口1时钟、开启DMA1时钟
2、配置通讯串口Usart1的GPIO,举例中连接硬件位RS485芯片,片选发送和接受状态。
3、配置串口发送DMA设置,选择DMA1通道4,中断优先级在NVIC_Configuration中。
4、 配置串口接受DMA设置,选择DMA1通道5
5、串口USART1的初始化,举例中波特率可设,实际应用中可以固定,这一步设置最为关键,中断使能一定设置成空闲总线中断。
中断优先级在NVIC_Configuration中。
6、将串口1默认成接受模式
二、中断响应
1 、DMA1通道4中断响应设置,下次接受最大长度可按照自己的情况更改。
2、串口中断相应程序
2.1、判断空闲中断
2.2、暂时禁止DMA,便于分析命令
2.3、计算命令长度,分析命令是否正确;如正确,准备好返回的数据,发送;如不正确,复位,重启DMA接受模式。
错误代码:01功能码不对;02寄存器地址不对;03数量不对;04检验不对。
2.4、处理完成,清标志
总体实现了占用CPU资源小,接收发送均交由DMA完成。
用者当用,能者勿喷。
标签: #stm32f103 dma2 #dma测试模式选择