wlx18682353162 发表于 2021-4-26 09:31:03

内存动态分配和静态分配应用


关于硬汉的程序里面这部分堆栈分配的问题 ,未使用是什么意思?
我自己也在程序里这样使用 但发现osRtxThread_t这个类型找不到,
好像这个类型在#include <cmsis_os.h>这个头文件里支持, 但是#include <cmsis_os2.h>和#include <cmsis_os.h>一起包含 又出现冲突,关于这部分希望硬汉给与答疑解惑

eric2013 发表于 2021-4-26 12:33:17

#include "rtx_os.h"

magicoctoier 发表于 2021-4-26 15:00:28

/* 任务的属性设置 */
const osThreadAttr_t ThreadStart_Attr = {
/*内存控制块,指向线程控制块对象的内存位置。这可以选择用于定制内存管理系统。
    默认值:NULL(使用内核内存管理)。*/
//    .cb_mem = &worker_thread_tcb_1,       // 内存控制块
    /* ------------------------------------- */
/*为控制块提供的内存大小。内存块的大小与 cb_mem 一起传递。
    必须是线程控制块对象的大小或更大。   */
//    .cb_size = sizeof(worker_thread_tcb_1), // 为控制块提供的内存大小
    /* ------------------------------------- */
/*内存的堆栈。指向线程堆栈的内存位置的指针必须是 64 位对齐的。这可以选择用于定制内存管理系统。
    默认值:NULL(使用内核内存管理)。*/
//    .stack_mem = &worker_thread_stk_1, // 内存的堆栈
    /* ------------------------------------- */
/*堆栈大小。由 stack_mem 指定的堆栈大小。*/
//    .stack_size = sizeof(worker_thread_stk_1),// 堆栈大小
    /* ------------------------------------- */
/*初始线程优先级(默认:osPriorityNormal)。使用 osPriority_t 中的值指定初始线程优先级。
    默认值:osPriorityNormal。*/
//    .priority = osPriorityAboveNormal,// 初始线程优先级
    /* ------------------------------------- */
/*TrustZone 模块标识符。TrustZone 线程上下文管理标识符为线程分配上下文内存。
    以非安全状态运行的 RTOS 内核调用由头文件 TZ_context.h 定义的接口函数。
    对于根本不使用安全调用的线程,可以安全地设置为零。请参阅 TrustZone RTOS 上下文管理。*/
//    .tz_module = 0                  // TrustZone 模块标识符。
    .name = "osRtxStartThread",         // 线程的名称。
    .attr_bits= osThreadDetached,   // 属性位。osThreadDetached:在分离模式下创建线程(默认)
    .priority   = osPriorityHigh4,      // 初始线程优先级。(默认:osPriorityNormal)
    .stack_size = 1024,               // 线程堆栈大小。
};

页: [1]
查看完整版本: 内存动态分配和静态分配应用