打印

DMA传浮点型数据

[复制链接]
1210|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2014-5-12 23:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用DMA传输浮点数据但是总是传输不了啊
volatile Uint16 DMABuf1[BUF_SIZE];
volatile Uint16 *DMADest;
volatile Uint16 *DMASource;
改成
volatile float DMABuf1[BUF_SIZE];
volatile Uint16 *DMADest;
volatile Uint16 *DMASource;
之后
DMADest = &DMABuf1[0];
DMASource = &AdcMirror.ADCRESULT0;
DMACH1AddrConfig(DMADest,DMASource);
这儿总是报错
说是a value of type "volatile float *" cannot be assigned to an entity of type "volatile Uint16 *
我知道是指针类型有问题 但是如果想用DMA传浮点型数据的话该怎么改啊?
是不是哪儿还要设置啊  



相关帖子

沙发
airwill| | 2014-5-13 12:24 | 只看该作者
浮点数据 是个 32 位的数据. 当然不能传给 16 位的数据.
DMA 系统并不关心所传的数据是整数还是浮点 (但必须是准确的位数).
所以即使当成 Uint32 传输也是可以的 (后面仍然按浮点数处理就是了).

使用特权

评论回复
板凳
tianli1980| | 2014-7-10 23:40 | 只看该作者
从编译角度来说,使用强制转换即可,代码修改如下:
DMADest = (volatile Uint16 *)(&DMABuf1[0]);
或者写成如下代码也行。
DMADest = (volatile Uint16 *)DMABuf1;

使用特权

评论回复
地板
huangfeng33| | 2014-7-10 23:41 | 只看该作者
一般情况下,这种传参函数,我们习惯设置为void *,减少编译器的错误导致的强制转换。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝