打印
[C语言]

警告conversion from pointer to smaller integer,怎么修改代码好?

[复制链接]
6073|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
奔牛滚滚|  楼主 | 2016-4-15 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 奔牛滚滚 于 2016-4-15 08:59 编辑
    DMA_Cmd(DMA1_Channel3, DISABLE );
    DMA1_Channel3->CM0ARL = (uint8_t)(waveDatas);
    DMA_Cmd(DMA1_Channel3, ENABLE );
waveDatas是一个指针,指向波形数据.上面的第二句,是把指针的低字节写入DMA源地址寄存器的低位.但是收到警告
conversion from pointer to smaller integer
怎么写代码更规范,让这个警告消失?

相关帖子

沙发
dirtwillfly| | 2016-4-15 09:56 | 只看该作者
警告可以不管它

使用特权

评论回复
板凳
lxyppc| | 2016-4-15 11:47 | 只看该作者
conversion from pointer to smaller integer
转换  从  指针   到   较小的   整数
你把指针转换成了一个较小的整数,看你的代码是转成了uint8
uint8的范围是0到255
你确定这个数能表示你的waveDatas这个地址么

p.s.data是不可数名词,复数形式不用加s

使用特权

评论回复
地板
奔牛滚滚|  楼主 | 2016-4-15 15:15 | 只看该作者
lxyppc 发表于 2016-4-15 11:47
conversion from pointer to smaller integer
转换  从  指针   到   较小的   整数
你把指针转换成了一个 ...

是的,16位地址.高位一直不变的,这个在中断里面执行,所以把高位赋值省略掉了.只改写低位地址.
()英文菜,谢谢指出英文语法错误.)

使用特权

评论回复
5
cuya| | 2016-4-15 21:16 | 只看该作者
警告不能不理。
一是用 #pragma 禁止此警告。
二是想法解决。一般编译器使用强制转换不应该有警告。 可以试试先转换为等宽的整数: (uint8_t)((unsigned int) waveDatas); 或是看看编译器手册是否有专门的指针强制转换命令

使用特权

评论回复
6
ghost2| | 2016-4-16 09:32 | 只看该作者
用CM0AR寄存器可以么?

使用特权

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

本版积分规则

384

主题

1461

帖子

6

粉丝