本帖最后由 Superusrss 于 2025-3-23 10:44 编辑
新建任务代码如下,调试进去发现创建失败,在tx_thread_create那里不是空指针却进入判断了,返回TX_THREAD_ERROR,非常奇怪
环境为MDK5.36, 关闭优化
[C] 纯文本查看 复制代码 #include "main.h"
#include "tx_api.h"
/*
*********************************************************************************************************
* 任务优先级,数值越小优先级越高
*********************************************************************************************************
*/
#define APP_CFG_TASK_START_PRIO 2u
/*
*********************************************************************************************************
* 任务栈大小,单位字节
*********************************************************************************************************
*/
#define APP_CFG_TASK_START_STK_SIZE 4096u
/*
*********************************************************************************************************
* 静态全局变量
*********************************************************************************************************
*/
static TX_THREAD AppTaskStartTCB;
static uint64_t AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE / 8];
/*
*********************************************************************************************************
* 函数声明
*********************************************************************************************************
*/
static void AppTaskStart(ULONG thread_input);
/*
*********************************************************************************************************
* 函 数 名: tx_application_define
* 功能说明: ThreadX专用的任务创建,通信组件创建函数
* 形 参: first_unused_memory 未使用的地址空间
* 返 回 值: 无
*********************************************************************************************************
*/
void tx_application_define(void *first_unused_memory)
{
tx_thread_create(&AppTaskStartTCB, /* 任务控制块地址 */
"App Task Start", /* 任务名 */
AppTaskStart, /* 启动任务函数地址 */
0, /* 传递给任务的参数 */
&AppTaskStartStk[0], /* 堆栈基地址 */
APP_CFG_TASK_START_STK_SIZE, /* 堆栈空间大小 */
APP_CFG_TASK_START_PRIO, /* 任务优先级*/
APP_CFG_TASK_START_PRIO, /* 任务抢占阀值 */
TX_NO_TIME_SLICE, /* 不开启时间片 */
TX_AUTO_START); /* 创建后立即启动 */
}
void AppTaskStart(ULONG id)
{
for (;;)
{
LL_GPIO_TogglePin(GPIOC, LL_GPIO_PIN_13);
tx_thread_sleep(1000);
}
}
|