首页 > 解决方案 > 给出指针的正确语法

问题描述

我想将指向内存空间的指针分配给另一个寄存器,例如

DMA1_Channel4->CPAR = (uint32_t*)I2C2->TXDR;

例如,我在我的代码中使用过的其他地方

DMA1_Channel4->CMAR  = (uint8_t*)DACdata;

这有效,但给出了警告 - 赋值使指针从整数而不进行强制转换。但是我不知道第一个实例的正确语法

标签: embeddedstm32

解决方案


DMA1_Channel4 结构的 CPAR 字段很可能需要一个 type 的值uint32_t,但您提供了一个“pointer to uint32_t”类型的值。您的意思很可能是:

DMA1_Channel4->CPAR = (uint32_t)(&(I2C2->TXDR));

请注意,我在这里添加了一个“&”,因为您很可能希望将第二个 I2C 总线的 TXDR 寄存器的地址放入 CPAR 字段,而不是当前值本身。


推荐阅读