查看: 877|回复: 0

STM32L496-DISCOVERY开发板DMA1-stm32入门4

[复制链接]
  • TA的每日心情
    慵懒
    2017-12-23 11:10
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-12-13 17:17:29 | 显示全部楼层 |阅读模式
    分享到:
    DMA,字面意思就是direct memory access,直接内存访问。是现代很多CPU采取的硬件架构,与传统的数据访问不同,外设访问CPU的内存,无需通过地址总线到CPU端,而是地址总线直接连到存储区,这样可以大大提高数据读写速率。
    我们以STM32L496开发板为例,说明一下DMA 处理流程。
    打开我们SDK下面的example,找到dma 例子。

    keil 打开,编译烧录,开启debug模式。

    该例子是将flash直接copy到内存中。

    copy函数:
    if (HAL_DMA_Start_IT(&DmaHandle, (uint32_t)&aSRC_Const_Buffer, (uint32_t)&aDST_Buffer, BUFFER_SIZE) != HAL_OK)
    而aSRC_Const_Buffer,是我们flash缓冲区,value分别是:

    相应的DST_BUFFER 就是我们的内存buffer。
    我们debug 断点,watch DST_BUFFER value 的变化情况。


    这是断点前的dst_buffer 数组。

    继续step。运行到断点处,观察我们的DMA,内存区域,如下图所示:

    可以发现,现在内存区域中数组值和flash中的一样,表明我们已经完成了flash到内存的DMA访问。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 06:25 , Processed in 0.122475 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.