STM32 SWD协议-端口号
我开始在STM32探索板中使用SWD功能。我将openocd跟踪输出重定向到文本文件(因为我找不到任何适用于Linux的好的SWD监视器)。我不知道为什么我只发送了一个字符,却得到了两个字符 在我的输出文件中,每个字符前面都有不同的ASCII码(大多数情况下不可打印)。由于端口的原因,前面的代码是常量。例如:STM32 SWD协议-端口号,stm32,openocd,swd,Stm32,Openocd,Swd,我开始在STM32探索板中使用SWD功能。我将openocd跟踪输出重定向到文本文件(因为我找不到任何适用于Linux的好的SWD监视器)。我不知道为什么我只发送了一个字符,却得到了两个字符 在我的输出文件中,每个字符前面都有不同的ASCII码(大多数情况下不可打印)。由于端口的原因,前面的代码是常量。例如: Port 0: 0x01 [Character] 0x01 [Character] etc. Port 1: 0x09 [Character] 0x09 [Character] etc.
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代码中找到了使用[preferred code]>>3公式获取端口号的人。它的作品
我使用的CubeMX&HAL实用程序如下所示:
ITM->PORT[portNum].u8 = (uint8_t)ch;
发送“ch”字符
为什么我需要使用字节操作?除了端口号之外,前面的代码还有其他信息吗?我在文档中尝试了这个,但每个示例都使用ST监视器
我会明白在社会福利署,前面的代码是什么?看看我的答案: 您看到的是使来自多个ITM端口的数据能够多路复用到SWO引脚上的字节流的帧
如果您想确切了解帧是如何建立的,请阅读ARM文档DDI0314中的“仪器跟踪宏单元”一章。为什么我需要使用bite运算什么是bite运算?我指的是C中的逐位运算,如>>运算符到位移位。