1. 实验设计:
Memory to Memory, FLASH to Memory, 把内部FLASH的数据传输到内部的SRAM
2. 编程要点
1)常量存储在FLASH中;
2)初始化DMA,注意也需要初始化DMA外设的时钟;
3)传输前亮黄灯,出错亮红灯,传输完成亮绿灯;
3 源码
定义相关的宏
// 当使用存储器到存储器模式时候,通道可以随便选,没有硬性的规定
#define DMA_CHANNEL DMA1_Channel6
#define DMA_CLOCK RCC_AHBPeriph_DMA1
// 传输完成标志
#define DMA_FLAG_TC DMA1_FLAG_TC6
// 要发送的数据大小
#define BUFFER_SIZE 32
配置DMA
/* 定义aSRC_Const_Buffer数组作为DMA传输数据源
* const关键字将aSRC_Const_Buffer数组变量定义为常量类型
* 表示数据存储在内部的FLASH中
*/
const uint32_t aSRC_Const_Buffer[BUFFER_SIZE]= {
0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,
0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,
0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,
0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40,

这篇博客介绍了STM32的DMA编程实践,主要涉及Memory to Memory (M2M)以及从FLASH到Memory的数据传输。实验中,通过初始化DMA并设置时钟,将内部FLASH中的数据传送到SRAM。在传输过程中,通过LED灯状态(黄灯开始,红灯错误,绿灯完成)来指示传输进度和结果。
最低0.47元/天 解锁文章
2426

被折叠的 条评论
为什么被折叠?



