Y1ng 发表于 2024-2-4 11:10:34

MDK调试FreeRTOS问题请教


背景:
   下载器:stlink-v2
   MDK:V5.38
   FREERTOS:





[*]logic analyzer怎么添加引脚(若是要观测自定义的变量呢)?

https://pic.imgdb.cn/item/65befba6871b83018a270ea1.jpg
例:观测GPIOB.14
按网上查的写成PORTB.14提示错误
https://pic.imgdb.cn/item/65befcd3871b83018a2a64b5.jpg


[*]event view里是空的

https://pic.imgdb.cn/item/65befd6e871b83018a2c10d6.jpg

https://pic.imgdb.cn/item/65befdad871b83018a2d2cb8.jpg
程序里有创建了两个任务,怎么看这任务的状态之类的。

[*]延时时长,一个定义为(5),一个定义为(500),(5)的延时断点都能命中,(500)的延时断点都不能命中是什么问题,如果将(500)改成(5)也能命中?

https://pic.imgdb.cn/item/65befe2f871b83018a2e8de8.jpg

https://pic.imgdb.cn/item/65befedd871b83018a30788b.jpg
#include "sys_freertos_demo.h"
#include "sys_led_tip.h"
#define START_TASK_PRIO                        1
#define START_STK_SIZE                        120
void start_task(void * pvParameters);//任务函数
TaskHandle_t StartTask_Handler;                //任务句柄       


#define TASK1_TASK_PRIO                        2
#define TASK1_STK_SIZE                        120
void task1_task(void * pvParameters);
TaskHandle_t Task1Task_Handler;                //任务句柄       

#define TASK2_TASK_PRIO                        3
#define TASK2_STK_SIZE                        120
void task2_task(void * pvParameters);
TaskHandle_t Task2Task_Handler;                //任务句柄
       
        int _freertos_demo()是放在main中的函数中,类似
int main()
{
...
while(1)
{
_freertos_demo();
}
}
int _freertos_demo(){
//        delay_init(168);
//        uart_init(9600);
        HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);       
//        printf("Start !\r\n");

//        LED_Init();
       
        xTaskCreate((TaskFunction_t        ) start_task,
                                (char*                        ) "start_task",
                                (uint16_t                ) START_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) START_TASK_PRIO,
                                (TaskHandle_t*        ) &StartTask_Handler);
          vTaskStartScheduler();          //开启任务调度

}


        void start_task(void * pvParameters)
        {
                //创建Task1
                taskENTER_CRITICAL();               /* 进入临界区 */
                xTaskCreate((TaskFunction_t        ) task1_task,
                                (char*                        ) "task1_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) TASK1_TASK_PRIO,
                                (TaskHandle_t*        ) &Task1Task_Handler);
                               
                //创建Task2
                xTaskCreate((TaskFunction_t        ) task2_task,
                                (char*                        ) "task2_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) TASK2_TASK_PRIO,
                                (TaskHandle_t*        ) &Task2Task_Handler);
                vTaskDelete(StartTask_Handler); //NULL
                taskEXIT_CRITICAL();                /* 退出临界区 */       
        }



        void task1_task(void * pvParameters){
               
                while(1){
                       
//                        LED1(1);
                        sys_led_toggle();
                        vTaskDelay(500);//延时函数
//                        LED1(0);

                }
        }

        void task2_task(void * pvParameters){
       
                while(1){
                       
//                        LED2(1);
                        vTaskDelay(5);
//                        LED2(0);
                        //sys_led_toggle();
                }
        }


FREERTOSconfig.h
/*
* FreeRTOS V202212.01
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates.All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
* https://github.com/FreeRTOS
*
*/

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html
*----------------------------------------------------------*/

#define configUSE_PREEMPTION                1
#define configUSE_IDLE_HOOK                        0
#define configUSE_TICK_HOOK                        0
#define configCPU_CLOCK_HZ                        ( ( unsigned long ) 16000000 )
#define configTICK_RATE_HZ                        ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES                ( 5 )
#define configMINIMAL_STACK_SIZE        ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE                ( ( size_t ) ( 17 * 1024 ) )
#define configMAX_TASK_NAME_LEN                ( 16 )
#define configUSE_TRACE_FACILITY        0
#define configUSE_16_BIT_TICKS                0
#define configIDLE_SHOULD_YIELD                1


/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */

#define INCLUDE_vTaskPrioritySet                1
#define INCLUDE_uxTaskPriorityGet                1
#define INCLUDE_vTaskDelete                                1
#define INCLUDE_vTaskCleanUpResources        0
#define INCLUDE_vTaskSuspend                        1
#define INCLUDE_vTaskDelayUntil                        1
#define INCLUDE_vTaskDelay                                1

/* This is the raw value as per the Cortex-M3 NVIC.Values can be 255
(lowest) to 0 (1?) (highest). */
#define configKERNEL_INTERRUPT_PRIORITY                 255
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY         191 /* equivalent to 0xb0, or priority 11. */


/* This is the value being used as per the ST library which permits 16
priority values, 0 to 15.This must correspond to the
configKERNEL_INTERRUPT_PRIORITY setting.Here 15 corresponds to the lowest
NVIC value of 255. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY        15

#endif /* FREERTOS_CONFIG_H */




Y1ng 发表于 2024-2-4 11:17:50

本帖最后由 Y1ng 于 2024-2-4 14:46 编辑

https://pic.imgdb.cn/item/65bf018a871b83018a38483c.jpg

程序改为如下也不行。:'(
int main()
{
。。。
_freertos_demo();
while(1);
}

static/image/hrline/line2.png
是不是ST-LINK不支持event view?
https://pic.imgdb.cn/item/65bf3298871b83018acf01e3.jpg

subinha 发表于 2024-2-5 01:42:53

接SWO引脚了吗?还有要打开Trace功能。可以看下这个帖子
https://www.armbbs.cn/forum.php?mod=viewthread&tid=18097

FixJA 发表于 2024-2-20 23:05:57

使用eventerRecorder组件和mdk RTE里面的FreeRTOS就可以实时监测任务状态
页: [1]
查看完整版本: MDK调试FreeRTOS问题请教