我开始在我的 STM32 探索板上使用 SWD 功能。我将 openocd 跟踪输出重定向到文本文件(因为我没有为 Linux 找到任何好的 SWD 监视器)。我不知道为什么我只发送一个字符时会得到两个字符。
在我的输出文件中,每个字符前面都有不同的 ASCII 码(大部分是不可打印的)。由于端口,此前面的代码是恒定的。例如:
Port 0:
0x01 [Character] 0x01 [Character] etc.
Port 1:
0x09 [Character] 0x09 [Character] etc.
Port 2:
0x11 [Character] 0x11 [Character] etc.
Port 3:
0x19 [Character] 0x19 [Character] etc.
我在 github 代码中发现使用 [preceded code] >> 3 公式来获取端口号。其作品。
我正在使用这样的 CubeMX 和 HAL 实用程序:
ITM->PORT[portNum].u8 = (uint8_t)ch;
发送“ch”字符。
为什么我需要使用字节操作?这个前面的代码除了端口号还有其他信息吗?我尝试在 diocumentation 中为此提供资金,但每个示例都使用 ST 监视器
我会明白 SWD 中的确切代码是什么?