本文讲解的是存储器到USART串口上的传输内容为字符串,设置长度为所发字符串的整数倍,这样就连续在串口发送对应整数次的字符串。
DMA编程实现
在文章的开头,我先列出实现DMA传输的步骤:
这里要注意的一个地方是我们有使能对应外设的DMA请求,在DMA的传输中,我们要时刻检测剩余的数据量,当数据传输完毕后,及时反馈提示信息。在该实验中我们要借助串口调试助手和正点原子的电容触摸屏进行显示。
在实现的外设文件dma.c和dma.h中,与DMA相关的功能函数只有两个,那自然不难想到一个用于DMA的配置,一个用于传输。
void MYDMA_Config(DMA_Stream_TypeDef *DMA_Streamx,u32 chx,u32 par,u32 mar,u16 ndtr)
void MYDMA_Enable(DMA_Stream_TypeDef *DMA_Streamx,u16 ndtr); //使能一次DMA传输
取消初始化
在MYDMA_Config函数里面我们对之前设置过的DMA配置信息进行了清除,见代码
if((u32)DMA_Streamx>(u32)DMA2)//得到当前stream是属于DMA2还是DMA1
{
RCC_AHB1Perip