ST意法半导体
直播中

摩托罗拉

8年用户 896经验值
私信 关注
[问答]

传递“HAL_UART_Receive”参数2的指针目标的符号不同怎么解决?

大家好,我在编写代码时看到警告;
--> HAL_UART_Receive(&huart3, &Rx_Byte[0], 1, 10);
Rx_Byte 是;
--> char Rx_Byte[1];

为什么我看到这个警告有人可以帮助我吗?

回帖(1)

刘易

2022-12-27 10:55:49
它与 STM 没有任何关系——这是标准的 C 语言:



  • 顾名思义,u int8_t 是无符号的;
  • 普通 char 是否被签名是实现定义的。


您将 char 用于普通的、可打印的 ASCII 文本是正确的——这就是它的用途。

但是,HAL_UART_Receive() 不限于纯文本;它处理任意字节值——因此它使用 uint8_t。

您可以通过转换 char 值来抑制警告;例如,


  • char my_char;

  • HAL_UART_Receive( &huart3, (uint8_t*)&my_char, 1, 10 );

或者你可以把它变成 uint8_t(尽管你可能会从 C 标准字符串函数中得到同样的警告——期望的是 char,而不是 uint8_t)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分