|
楼主 |
发表于 2021-8-13 09:25:27
|
显示全部楼层
你好,我的应用如下:
方法 1
__align(8) os_thread_t AppTaskStartTCB;
__align(8) uint64_t AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t)/8];
/* 任务的属性设置 */
const osThreadAttr_t vTaskCreate_Attr =
{
/* 未使用 */
// .cb_mem = &worker_thread_tcb_1,
// .cb_size = sizeof(worker_thread_tcb_1),
// .stack_mem = &worker_thread_stk_1[0], // FreeRTOS 系统的 V2 封装层可以不使用
// .stack_size = sizeof(worker_thread_stk_1),
// .priority = osPriorityAboveNormal,
// .tz_module = 0
.name = "vTaskCreate",
.attr_bits = osThreadDetached,
.priority = (osPriority_t )APP_CFG_TASK_START_PRIO, //任务优先级设置
.stack_size = APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t), // V2 封装层必须使用
.stack_mem = &AppTaskStartStk[0], // V2 封装层必须使用
.cb_mem = &AppTaskStartTCB, // V2 封装层必须使用
.cb_size = sizeof(os_thread_t), // V2 封装层必须使用
};
xHandleTask_MainTask = osThreadNew(vTaskCreate, NULL, &vTaskCreate_Attr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方法 2.
os_thread_t * AppTaskStartTCB=0;
uint64_t *AppTaskStartStk=0; //[APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t)/8];
osThreadAttr_t vTaskCreate_Attr;
void show(void)
{
AppTaskStartTCB= (os_thread_t *)mymalloc(SRAM4, sizeof(os_thread_t));
if(AppTaskStartTCB== NULL)
{
My_Printf("AppTaskStartTCBfail ...\r\n");
while(1) {}
}
AppTaskStartStk= (void *)mymalloc(SRAM4, APP_CFG_TASK_SHOW_STK_SIZE * sizeof(uint32_t));
if(AppTaskStartStk== NULL)
{
My_Printf("AppTaskStartStk fail ...\r\n");
while(1) {}
}
vTaskCreate_Attr.name = "vTaskCreate";
vTaskCreate_Attr.attr_bits = osThreadDetached;
vTaskCreate_Attr.priority = (osPriority_t)APP_CFG_TASK_START_PRIO;
vTaskCreate_Attr.stack_size = APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t);
vTaskCreate_Attr.stack_mem = AppTaskStartStk;
vTaskCreate_Attr.cb_mem = AppTaskStartTCB;
vTaskCreate_Attr.cb_size = sizeof(os_thread_t);
xHandleTask_MainTask = osThreadNew(vTaskCreate, NULL, &vTaskCreate_Attr);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
说明
使用方法 1 是可以的,
使用方法 2 是不可以的
安装方法 2 的应用的话,是还需要配置什么吗 ???
|
|