中级会员
积分 283
金钱 283
注册时间 2017-4-16
在线时间 33 小时
1 金钱
如题所示:我参考原子的手册进行移植stemwin加ucosiii,我的main函数如下所示:[mw_shl_code=applescript,true]int main(void) {
OS_ERR err;
HAL_Init(); /* See Note 1. */
BSP_SystemClkCfg(); /* Initialize CPU clock frequency to 216Mhz */
CPU_Init(); /* Initialize the uC/CPU services */
Mem_Init(); /* Initialize Memory Managment Module */
Math_Init(); /* Initialize Mathematical Module */
CPU_IntDis(); /* Disable all Interrupts. */
BSP_Init(); /* Initialize BSP functions */
OSInit(&err); /* Init uC/OS-III. */
App_OS_SetAllHooks();
MessQueue_Init ();
OSTaskCreate(&AppTaskStartTCB, /* Create the start task */
"App Task Start", AppTaskStart, 0u,
APP_CFG_TASK_START_PRIO, &AppTaskStartStk[0u],
AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE / 10u],
APP_CFG_TASK_START_STK_SIZE, 0u, 0u, 0u,
(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR ), &err);
OSStart(&err); /* Start multitasking (i.e. give control to uC/OS-III). */
while (DEF_ON) { /* Should Never Get Here. */
}
}[/mw_shl_code]
在main函数中创建了一个任务AppTaskStart,该函数如下所示:
[mw_shl_code=applescript,true]static void AppTaskStart(void *p_arg) {
OS_ERR err;
(void) p_arg;
__HAL_RCC_CRC_CLK_ENABLE()
;
GUI_Init ();
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCPUUsageInit(&err); /* Compute CPU capacity with no task running */
#endif
#ifdef CPU_CFG_INT_DIS_MEAS_EN
CPU_IntDisMeasMaxCurReset();
#endif
APP_TRACE_DBG(("Creating Application Tasks\n\r"));
GUI_DispStringAt ("iysheng", 100, 200);
AppTaskCreate(); /* Create Application tasks */
while (DEF_TRUE) { /* Task body, always written as an infinite loop. */
//OSTaskDel((OS_TCB*) 0, &err);
}
}[/mw_shl_code]
在该 AppTaskStart 任务中,我执行了GUI_DispStringAt ("iysheng", 100, 200);可以正常显示。
我通过AppTaskCreate新建了一个任务AppTaskObj0:
[mw_shl_code=applescript,true]static void AppTaskCreate(void) {
OS_ERR os_err;
/* ---------- CREATE KERNEL OBJECTS TEST TASK --------- */
OSTaskCreate(&AppTaskObj0TCB, "Kernel Objects Task 0", AppTaskObj0, 0,
APP_CFG_TASK_OBJ0_PRIO, &AppTaskObj0Stk[0],
AppTaskObj0Stk[APP_CFG_TASK_OBJ_STK_SIZE / 10u],
APP_CFG_TASK_OBJ_STK_SIZE, 0u, 0u, 0,
(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR ), &os_err);
}[/mw_shl_code]
AppTaskObj0任务中也执行了一次显示的函数GUI_DispStringAt ("iysheng", 0, 0);
[mw_shl_code=applescript,true]static void AppTaskObj0(void *p_arg) {
OS_ERR os_err;
(void) p_arg;
static uint8_t uline;
static float ftemp;
static uint32_t uitemp;
static char rstr[64];
GUI_DispStringAt ("iysheng@163.com", 0, 0);
while (DEF_TRUE) {
}
}[/mw_shl_code]
现在的现象是任务可以切换到AppTaskObj0,但是执行该函数下的GUI_DispStringAt 时就出现卡死,进入Infinite_Loop
[mw_shl_code=applescript,true]Default_Handler:
Infinite_Loop:
b Infinite_Loop[/mw_shl_code]
这是什么问题呢?
我来回答