我的项目涉及在两个射频收发器模块(一个用作主发射器,另一个用作接收器)之间无线发送4个8位数据。在接收器的端点上使用Keil uVision5的调试器(在我观察某些变量的Watch窗口中),我注意到在模块的另一端接收到的数据是正确的,但符号出现在变量的某些(不是所有)值的末尾。
数据以以下结构的形式发送:
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;'Length of Data‘是:
#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和_xRxFrame.DataBuff1不是十六进制显示。
符号'Y‘和'e’分别出现在0xDD和233的后面,这对于代码来说实际上不是一个错误,因为一切工作正常。我只是好奇为什么会发生这样的事情。这些符号随机出现在调试窗口中是正常的吗?
谢谢!
发布于 2020-06-19 07:08:07
值的读取值是233和0xDD;并且它们被声明为uchar。如果您检查ascii表,它将匹配这些字符。
https://stackoverflow.com/questions/62460753
复制相似问题