这是程序源码:int main(void) { mainInit(); delay_ms(2000); delay_ms(2000); OSInit(); OSTaskCreate(start_task, (void *) 0,(OS_STK *) &START_TASK_STK[START_STK_SIZE - 1], START_TASK_PRIO); OSStart(); } void start_task(void *pdata) { u8 *sta; DEBUG("PC_process", " enter start_task function !!!"); OSStatInit(); while (1) { delay_ms(2000); DEBUG("PC_process", " sta = %d",*sta); } } 下面是用cmBackTrace 工具 定位出来的错误信息: E:\工作\MCU 资料\stm32 资料\cmBacktrack_project_test\cmbackTrace\online_gprs\Objects>addr2line -e charger.axf -a -f 08000352 0800252b 0800428f 080002ff 0x08000352 OSStartHighRdy E:\工作\MCU 资料\stm32 资料\cmBacktrack_project_test\cmbackTrace\online_gprs/..\src_common\ucosii\port\/os_cpu_a.asm:110 0x0800252b OSStart E:\宸ヤ綔\MCU 璧勬枡\stm32 璧勬枡\cmBacktrack_project_test\cmbackTrace\online_gprs/..\src_common\ucosii\core\/os_core.c:830 0x0800428f main E:\宸ヤ綔\MCU 璧勬枡\stm32 璧勬枡\cmBacktrack_project_test\cmbackTrace\online_gprs/src\main.c:52 0x080002ff __rt_entry_main 通过 工具定位出来的是 main.c 中 的 第 52 行有问题, 52 行对应的是 OSStart(); 但是程序的错误 应该在 DEBUG("PC_process", " sta = %d",*sta); 为什么定位的 不正确啊??? 这是什么原因??? |
评分
查看全部评分
都试了好几次了,还是这样!!
评分
查看全部评分
屏蔽了,程序是正常运行的,不会出现问题
屏蔽了 OSStart(); ucos 系统跑不起来的,这样不行
评分
查看全部评分
我不是使用这个 *sta 就没问题, 这又怎么解释呢? 好茫然啊!!
评分
查看全部评分