简体   繁体   English

将 SEGGER SystemView 与 STM32 结合使用

[英]Using SEGGER SystemView with STM32

Currently I'm developing a project with FreeRTOS on a STM32L476VGT.目前我正在 STM32L476VGT 上使用 FreeRTOS 开发一个项目。 Until now I've been debugging with Ozone(SEGGER) and J-Link (Edu and Ultra+)到目前为止,我一直在使用 Ozone(SEGGER) 和 J-Link(Edu 和 Ultra+)进行调试

Now I would like to "debug" or record system event using SystemView (SEGGER), but it's not working.现在我想使用 SystemView (SEGGER)“调试”或记录系统事件,但它不起作用。

first of all some of the configurations I think there are important: 16Mhz HSE --> internal 80Mhz SysClk FreeRTOS V8.2.3首先是一些我认为很重要的配置:16Mhz HSE --> internal 80Mhz SysClk FreeRTOS V8.2.3

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

Project created with cubeMx so ST HAl libraries are in use(I know that for many people is bloatware but is what it was when I get the project).项目是用 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();

}

I put only the basic lines of code that I have add to the project in order to use the SystemView.为了使用 SystemView,我只将添加到项目中的基本代码行放入。

under this lines I attache a screen capture of System Viewer.在这一行下,我附上了 System Viewer 的屏幕截图。

在此处输入图片说明

EDIT 1:编辑 1:

I've created a new projet to tart from the beginning.我从一开始就创建了一个新项目。

STM32L476RG yes R is another board with 3 leds cubemx : STM32L4 lib 1.10.0 FreeRTOS V9.0.0 STM32L476RG 是的 R 是另一块带有 3 个 LED 立方体的板:STM32L4 lib 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);
    }
}

Same result:相同的结果:

在此处输入图片说明

if I click STOP I get:如果我点击停止,我会得到:

在此处输入图片说明

Also if I put as it's explain in SEGGER SystemView UM0802 pdf Manual:另外,如果我在 SEGGER SystemView UM0802 pdf 手册中解释如下:

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

for:用于:

SEGGER_SYSVIEW_Conf();

I get same output我得到相同的输出

Many thanks,非常感谢,

Guillermo吉列尔莫

Solved, RFM(UM08027_SystemView.pdf)!!解决了,RFM(UM08027_SystemView.pdf)!! I forgot to apply the freeRTOS patch file.我忘了应用 freeRTOS 补丁文件。 There are some mismatches between the line in the patch and the line in the file.补丁中的行与文件中的行之间存在一些不匹配。

Now works perfect.现在工作完美。

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM