Случайные символы, появляющиеся в окне Keil Debug-Watch - PullRequest
0 голосов
/ 19 июня 2020

Мой проект включает в себя передачу 4 8-битных данных по беспроводной сети между двумя модулями RF Transceiver (один работает как основной передатчик, а другой как приемник). Используя отладчик 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;

А вот скриншот того, что я вижу:

Watch Window

На скриншоте выше _xRxFrame.Cmd отображается в шестнадцатеричном формате, а _xRxFrame.DataLen, _xRxFrame.DataBuff [0] и _xRxFrame.DataBuff 1 не отображается в шестнадцатеричном формате.

Символы «Y» и «e» появились позади 0xDD и 233 соответственно, что на самом деле не является ошибкой для кода, поскольку все работает нормально. Мне просто любопытно, почему это происходит. Это нормально, что эти символы случайным образом появляются в окне отладки?

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

Считанные значения - 233 и 0xDD; и они объявлены как учар. Если вы проверите таблицу ascii, она будет соответствовать этим символам

...