stm32之dma彻底研究

stm32之dma彻底研究

ID:20720256

大小:126.54 KB

页数:12页

时间:2018-10-15

stm32之dma彻底研究_第1页
stm32之dma彻底研究_第2页
stm32之dma彻底研究_第3页
stm32之dma彻底研究_第4页
stm32之dma彻底研究_第5页
资源描述:

《stm32之dma彻底研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、stm32之DMA彻底研究在做实验之前,首先必须明0什么是DMA,DMA的作用乂体现在哪里。DMA,即直接内存存储,在一些数据的传输屮,采用DMA方式,从而将CPU解放出來。让CPU宥足够的时间处理其他的事情。stm32使用DMA的相关操作:1、DMA的配置要配置的有DMA传输通道选择,传输的成员和方向、普通模式还是循环模式等等。voidDMA_Configuration(void){DMAInitTypeDefDMAInitStructure;//DMA设置://设置DMA源:内存地址&串口数据寄存器地址//方向:内存一〉外设//每次依输位:8bit//传输大小DMA_

2、BufferSize=SENDBUFF_SIZE//地址自增模式:外设地址不增,内存地址自增1//DMA模式:一次传输,非循环//优先级:中DMA_DeTnit(DMAl_Channel4);//串口1的DMA传输通道是通道4DMAInitStructure.DMAPeripheralBaseAddr=USART1DRBase;DMAInitStructure.DMA_MemoryBaseAddr=(u32)SendBuff;DMA_initStructure.DMADiR=DMA_DiR_PeripheralDST;外设作为DMA的B的端DMA_TnitStructur

3、e.DMA_BufferSize=SENDBUFF_STZE;//传输大小DMAInitStructure.DMAPeripheralInc=DMA_PeripheralInc_Disab1e;//外设地址不增加DMA_initStructure.DMA_Memoryinc=DMA_Memorylnc_Enable;//内存地址自增1DMA_InitStrueturc.DMA_PcriphcralDataSizc=DMAPeripheralDataSize_Byte;DMAInitStructure.DMAMemoryDataSize=DMAMemoryDataSizeB

4、yte;DMAInitStructure.DMAMode=DMAModeCircular;//DMA_Modc_Normal(只传送一次),DMA_Mode_Circular(不停地传送)DMAInitStructure.DMAPriority=DMAPriority_Medium;//(DMA传送优先级为中等)DMAInitStructure.DMAM2M=DMAM2MDisable;DMA_Init(DMAl_Channcl4,&DMA_InitStructurc);}注:1、传输通道:通过查表,串口1的发送对应的是DMA的通道4,所以此处选择通道4.2、DMA传输方

5、式:(1)DMA_Mode_Normal,正常模式,当一次DMA数据传输完后,停止DMA传送,对于上例而言,就是DMA_PeripheralDataSize_Byte个字节的传送完成后,就停止传送。(2)DMA_Mode_Circular循环模式,当传输完一次£;,重新接着传送,永不停息。2、外设的DMA方式设置将串U1设置成DMA模式:USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);3、待传输数据的定义和初始化#dcfineSENDBUFF_SIZE10240vu8SendBuff[SRNDBUFF_STZR];for(i=0;i

6、〈SENDBUFFSIZE;i++)SendBuff[i]=i%10+’0’;4、开始DMA传输(使能对应的DMA通道)DMA_Cmd(DMAl_Channel4,ENABLE);5、DMA传输的完成while(DMA_GctFlagStatus(DMA1_FLAG_TC4)==RESET){LEDJ_REV;//LED翻转Delay();//浪费时问}当传输完成盾,就会跳出上面的死循环。/'!、xixx!、x!、'!、xi、'!、x!、x!、'i、x!、xi、'i、xi、'!、x!、'!、'!、'!、'!、xi、x!、x!、x!、'!、xi、x!、'!、x!、'i、x!

7、、'!、'!、x!、x!、x!、x!、'i、xi、x!、'!、'!、x!、'!、'!、x!、x!、x!、'!、x!、x!、x!、'!、x!、x!、'!、x!、'!、'!、x!、'!、xA^*本文件实现串口发送功能(通过重构putchar函数,调用printf;或者USART_SendData()*这里是一个用串I」实现大量数据传输的例子,使用了DMA模块进行内存到USART的传输*每当USART的发送缓冲区空吋,USART模块产生一个DMA事件,*此时DMA模块响应该事件,自动从预先定义好的发送缓冲区中拿出下一个字节送给USA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。