最近在stm32H743上移植SEGGER SystemView 工具,想用它的UART recorder。
现在遇到的问题是:程序能正常运行,但是上位机 SystemView 不显示目标板的任何信息。
用串口助手读取的上传数据如图:

请教一下原因。
最近在stm32H743上移植SEGGER SystemView 工具,想用它的UART recorder。
现在遇到的问题是:程序能正常运行,但是上位机 SystemView 不显示目标板的任何信息。
用串口助手读取的上传数据如图:

请教一下原因。
关注让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!
根据您提供的信息,您在STM32H743上移植SEGGER SystemView工具时遇到了上位机无法显示数据的问题。以下是可能的原因和解决方案:
确保您的UART配置与SystemView期望的波特率一致(通常是921600 baud):
// UART初始化示例
void UART_Init(void) {
huart1.Instance = USART1;
huart1.Init.BaudRate = 921600;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK) {
Error_Handler();
}
}
确保您的SEGGER_SYSVIEW_Conf.h配置正确:
#define SEGGER_SYSVIEW_ON_EVENT_RECORDED(NumBytes) \
do { \
if (SEGGER_SYSVIEW_IsStarted()) { \
SEGGER_SYSVIEW_SendPacket(SEGGER_SYSVIEW_GetNextPacket(), NumBytes); \
} \
} while (0)
#define SEGGER_SYSVIEW_X_SendPacket(pPacket, pPayloadEnd, EventId) \
SEGGER_SYSVIEW_SendPacket(pPacket, (unsigned)((pPayloadEnd) - (pPacket)))
确保您已正确实现UART发送函数:
void SEGGER_SYSVIEW_Conf(void) {
SEGGER_SYSVIEW_Init(SystemCoreClock, SystemCoreClock,
&SYSVIEW_X_OS_TraceAPI, SEGGER_SYSVIEW_Conf_GetTimeStamp);
SEGGER_SYSVIEW_SetRAMBase(0x20000000);
}
void SEGGER_SYSVIEW_SendPacket(U8* pPacket, U32 NumBytes) {
HAL_UART_Transmit(&huart1, pPacket, NumBytes, HAL_MAX_DELAY);
}
确保在FreeRTOS调度器启动前初始化SystemView:
int main(void) {
// 硬件初始化
HAL_Init();
SystemClock_Config();
UART_Init();
// SystemView初始化
SEGGER_SYSVIEW_Conf();
SEGGER_SYSVIEW_Start();
// 创建任务和其他初始化
// ...
// 启动调度器
vTaskStartScheduler();
while (1) {
}
}
如果问题仍然存在,建议提供以下信息以便进一步诊断: