【发布时间】:2020-10-09 03:30:48
【问题描述】:
我的项目涉及在两个射频收发器模块(一个用作主发射器,另一个用作接收器)之间以无线方式发送 4 个 8 位数据。在接收器的端点上使用 Keil uVision5 的调试器(在我观察某些变量的观察窗口中),我注意到在模块的另一端接收到的数据是正确的,但符号出现在变量的一些(不是全部)的末尾价值观。
数据以如下结构体的形式发送:
typedef struct
{
uint8_t Cmd; // Command/Operation
uint8_t DataLen; // Length of Data
uint8_t* DataBuff; // 2 Bytes of data
} RFFrame_t;
static RFFrame_t _xTxFrame; // variable that will hold the data to be transmitted
在某些情况下,“命令/操作”是:
#define SHUTTEROFF_CMD ((uint8_t)0xDD)
...
_xTxFrame.Cmd = SHUTTEROFF_CMD;
“数据长度”是:
#define TX_BUFFER_SIZE 2
uint8_t TxLength = TX_BUFFER_SIZE;
...
_xTxFrame.DataLen = TxLength;
“数据缓冲区”是:
uint8_t aTransmitBuffer[TX_BUFFER_SIZE] = {17, 233};
...
_xTxFrame.DataBuff = aTransmitBuffer;
这是我看到的截图:
在上面的截图中,_xRxFrame.Cmd 是十六进制显示,而 _xRxFrame.DataLen、_xRxFrame.DataBuff[0] 和 _xRxFrame.DataBuff1 不是十六进制显示。
符号'Y'和'e'分别出现在0xDD和233的后面,这实际上不是代码错误,因为一切正常。我只是好奇为什么会这样。这些符号在调试窗口中随机出现是否正常?
谢谢!
【问题讨论】:
-
uchar中只有 一个 字符,监视表以两种形式显示其中的一些:数字值和字符。没有什么“额外的”。不过,我无法解释为什么有些值是十六进制的,而有些是十进制的。也许是调试器配置。 -
感谢您的解释!其他值不是十六进制的,因为我将它们配置为以十进制格式显示。
-
请看:here 它显示了手表的配置方式。
标签: c embedded stm32 radio keil