【问题标题】:C - Warning [pe069] integer conversion resulted in truncationC - 警告 [pe069] 整数转换导致截断
【发布时间】:2017-12-17 15:15:58
【问题描述】:

我知道这个问题已经被问过好几次了,反正我没有找到并回答我的具体案例:

IAR Embedded Workbench 在编译时返回此警告:

“警告[pe069]整数转换导致截断”就行了:

SPI2_Tx(DVC_CTR2,       0x1000);

DVC_CTR2 在哪里

#define DVC_CTR2                0x0F

而SPI2_Tx定义为

static void SPI2_Tx(uint8_t pAddress, uint8_t pData)

如何解决此警告? 提前致谢!

【问题讨论】:

  • 0x1000 不适合 uint8_t 这就是原因。
  • @Jean-FrançoisFabre 谢谢,所以我应该去 uint16_t 对吧?
  • SPI2_Tx 是你的函数还是来自库?
  • @SaeidYazdani SPI2_Tx 是我的一个函数,反正我解决了!正如 Jean-FrançoisFabre 所说,我只需将“uint8_t pData”更改为“uint16_t pData”

标签: c hex warnings iar firmware


【解决方案1】:

这是因为您无法通过传输单个字节的 SPI 例程来传输两个字节的值。

你应该可以通过两个单独的调用来做到这一点:

SPI2_Tx(DVC_CTR2, 0x10);
SPI2_Tx(DVC_CTR2, 0x00);

如果您必须一次传输 16 位,请查找另一个采用 uint16_t 的例程。

【讨论】:

  • 当然,如果数据是字节序列的话。否则,如果它取决于字节序,则发送顺序必须颠倒,如果是小字节序
猜你喜欢
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多