发帖 |
[问答] DMA开辟缓存,怎么使用动态内存?
2018-4-20 14:30:30  671 STM32F103 DMA c语言
收藏 1 收藏 推荐 0 推荐
分享
开辟20kb左右的缓存空间,如果直接用全局变量数组,在不需要用到DMA时,那这20k的内存就一直不能释放,好浪费。若使用malloc来开辟动态内存,应该是放在堆区吧?堆区不是默认只有512字节?还要修改启动文件的堆大小?
奖励10积分
2018-4-20 14:30:30   评论 邀请回答
3个回答
DMADMA直接内存存取原理是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。

  要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。

    但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。
最佳答案
2018-4-20 14:30:31 评论

举报

可以自己写个管理的程序就是了
2018-4-20 16:16:47 评论

举报

2018-4-21 22:47:40 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

提问题
关闭

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

快速回复 返回顶部 返回列表