1 设计要求
利用DMA通道6将处理片内FLASH中32位数据缓冲区内的内容传送到RAM中所定义的缓冲区内。
在传输完成后会产生一个传输完成中断,最后将源缓冲区和目标缓冲区内的数据进行对比,
来核查所有的数据是否传输正确。由于是存储器到存储器之间的传送,DMA的传送通过软件
来启动。
2 硬件电路设计
由于是进行片内存储器到存储器之间的数据传送,因此无需硬件连接。
3 软件程序设计
根据设计任务要求,软件程序需要完成以下工作:
(1) 设置DMA通道6,使之实现FLASH到RAM的DMA传送;
(2) 配置评估板串行端口,用于将传输过程的状况以及传输的内容通过串口输出;
(3) 软件启动DMA传送,并对传送的源数据和目的数据进行比较。
整个工程包含3个源文件:STM32F10x.s、stm32f10x_it.c和main.c,其中STM32F10x.s为启动代码,
DMA传输结束中断服务子程序在stm32f10x_it.c中,其它函数则在main.c中。
注意,为了让源数据在Flash中,目的数据在RAM中,程序中定义源数据时进行初始化赋值,
源数据将被链接器定位于Flash中;而定义目的数据则不尽兴初始化赋值,目的数据将被定
位于RAM中。
4 运行过程
(1) 使用Keil uVision3 通过ULINK 2仿真器连接实验板,使用STM32V100评估板附带的串口线,
连接实验板上的UART0和PC机的串口,打开实验例程目录DMA_test子目录下的DMA.Uv2例程,编
译链接工程;
(2) 在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、
无硬件流控制);或者使用其它串口通信程序;
(3) 点击MDK 的Debug菜单,点击Start/Stop Debug Session;
(4) 使用内存窗口观测SRC_Const_Buffer和DST_Buffer所在的位置,可以发现SRC_Const_Buffer
地址为0x08001384,,即Flash中;DST_Buffer地址为0x20000030,即RAM中;
(5) 运行程序,通过超级终端观察串口输出,来判断DMA传输是否正确。正确结果为:首先输
出"boot success!",代表启动成功;接着输出"Complete transfer!",表示传输结束;然后
输出源数组里的值和目的数组里的值;最后通过比较两个数组的值,来判断是否传输成功,
并输出比较结果。
(6) 也可使用MDK软件仿真模式,用串行窗口来观察输出结果。
(7) 若想通过ITM Viewer来观测Printf数据,则需要加入#define DBG_ITM,并允许ITM跟踪,
详见RTX_Blinky例的说明。本例程中只要取消#define DBG_ITM前的注释符号即可。
DMA_test.rar_Cortex_dma_dma in stm32_stm32 dma_stm32 dma 例程
版权申诉
193 浏览量
2022-09-24
02:17:12
上传
评论
收藏 270KB RAR 举报
钱亚锋
- 粉丝: 88
- 资源: 1万+
最新资源
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
- c40539bc-071a-486c-9d52-9d0c18d62dac 4.html
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈