在 STM32 中使用 SEGGER SystemView

Posted

技术标签:

【中文标题】在 STM32 中使用 SEGGER SystemView【英文标题】:Using SEGGER SystemView with STM32 【发布时间】:2018-06-24 02:51:01 【问题描述】:

目前我正在 STM32L476VGT 上使用 FreeRTOS 开发一个项目。 到目前为止,我一直在使用 Ozone(SEGGER) 和 J-Link(Edu 和 Ultra+)进行调试

现在我想使用 SystemView (SEGGER) “调试”或记录系统事件,但它不起作用。

首先是我认为重要的一些配置: 16Mhz HSE --> 内部 80Mhz SysClk FreeRTOS V8.2.3

J-link(连接 SCLK、SDIO 和 SWO)

使用 cubeMx 创建的项目,因此 ST HAl 库正在使用中(我知道对于很多人来说是英国媒体报道,但当我拿到项目时它就是这样)。

main.c

#include "SEGGER_SYSVIEW.h"

//// -- includes, prototypes and definitions

void main (void)

    /// -- Hardware init

    SEGGER_SYSVIEW_Init(1000, 80000000, 0, 0);
    SEGGER_SYSVIEW_Start();

    /// - tasks creation
    osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
    defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

    /* Start scheduler */
    osKernelStart();


为了使用 SystemView,我只添加了添加到项目中的基本代码行。

在这一行下,我附上了 System Viewer 的屏幕截图。

编辑 1:

我已经创建了一个新的项目来从头开始。

STM32L476RG 是 R 是另一块带 3 个 LED 的板 cubemx:STM32L4 库 1.10.0 FreeRTOS V9.0.0

main.c

int main(void)

    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();

    SEGGER_SYSVIEW_Init(1000, 80000000, 0, 0);
    SEGGER_SYSVIEW_Start();

    osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
    defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

    osThreadDef(ledControlTask, ledcontrol, osPriorityNormal, 0, 128);
    ledControlTaskHandle = osThreadCreate(osThread(ledControlTask), NULL);

    osKernelStart();

    while (1)
    
    

void ledcontrol(void const * argument)

    for(;;)
    
        HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
        osDelay(500);
    

同样的结果:

如果我点击停止,我会得到:

如果我按照SEGGER SystemView UM0802 pdf手册中的说明进行说明:

SEGGER_SYSVIEW_Init(1000, 80000000, 0, 0);
SEGGER_SYSVIEW_Start();

为:

SEGGER_SYSVIEW_Conf();

我得到相同的输出

非常感谢,

吉列尔莫

【问题讨论】:

【参考方案1】:

已解决, RFM(UM08027_SystemView.pdf)!! 我忘了应用 freeRTOS 补丁文件。 补丁中的行与文件中的行之间存在一些不匹配。

现在完美运行。

【讨论】:

以上是关于在 STM32 中使用 SEGGER SystemView的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Segger J-link pro 和 Stm32cubeIDE 进行调试期间暂停看门狗计数器

SEGGER编译器会是一个新的“Clang”吗?

如何通过JLINK烧写文件到百为STM32开发板外部的NOR FLASH

STM32 的 System Workbench 中没有此类文件错误

关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Reset

system_stm32f10x.c文件了解