OpenEdv-开源电子网
标题:
STM32 IAR UCOS CSTACK 设置问题
[打印本页]
作者:
iseafish
时间:
2014-12-31 09:28
标题:
STM32 IAR UCOS CSTACK 设置问题
各位坛友,我的ucosiii跑起来之后到startup之后任务运行不了,仿真后得出以下结果,是什么原因造成的?
(, 下载次数: 1)
上传
点击文件名下载附件
系统部分的代码如下:
[mw_shl_code=c,true]//main: static OS_TCB start_up_TCB; static CPU_STK start_up_STK[COMMON_STK_SIZE]; void main(void) { OS_ERR err; DISABLE_INTERRUPTS(); //disable all interrupts OSInit(&err); if(err!=OS_ERR_NONE) { while(1); } /*创建任务*/ OSTaskCreate((OS_TCB *)&start_up_TCB, //任务控制块指针 (CPU_CHAR *)"Startup_Task", //任务名称 (OS_TASK_PTR )start_up, //任务代码指针 (void *)0, //传递给任务的参数parg (OS_PRIO )start_up_prio, //任务优先级 (CPU_STK *)&start_up_STK[0], //任务堆栈基地址 (CPU_STK_SIZE)COMMON_STK_SIZE/10, //堆栈剩余警戒线 (CPU_STK_SIZE)COMMON_STK_SIZE, //堆栈大小 (OS_MSG_QTY )0, //可接收的最大消息队列数 (OS_TICK )0, //时间片轮转时间 (void *)0, //任务控制块扩展信息 (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), //任务选项 (OS_ERR *)&err); //返回值 OSStart(&err); } //startup: void start_up(void *p_arg) { OS_ERR err; p_arg=p_arg; bsp_init(); //hardware init CPU_Init(); //CPU init Init_SysTick(); //systick init ENABLE_INTERRUPTS(); //interrupts enable printf("\r\nstartup\r\n"); OSTaskCreate((OS_TCB *)&car_control_TCB, //任务控制块指针 (CPU_CHAR *)"Car_Control", //任务名称 (OS_TASK_PTR )car_control, //任务代码指针 (void *)0, //传递给任务的参数parg (OS_PRIO )car_control_prio, //任务优先级 (CPU_STK *)&car_control_STK[0], //任务堆栈基地址 (CPU_STK_SIZE)COMMON_STK_SIZE/10, //堆栈剩余警戒线 (CPU_STK_SIZE)COMMON_STK_SIZE, //堆栈大小 (OS_MSG_QTY )0, //可接收的最大消息队列数 (OS_TICK )0, //时间片轮转时间 (void *)0, //任务控制块扩展信息 (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), //任务选项 (OS_ERR *)&err); //返回值 //OSTaskDel(&Start_Up_TCB,&err); while(1); } //栈空间定义: #define COMMON_STK_SIZE 32 [/mw_shl_code]
作者:
iseafish
时间:
2014-12-31 09:28
各位,我的问题解决了。应该先开中断后配置systick。
那个警告是正常的。
作者:
styleno1
时间:
2014-12-31 11:11
看不出来,帮顶。
作者:
1572842594
时间:
2015-1-27 17:31
回复【3楼】iseafish:
---------------------------------
你调试时出现这个了吗?
OSStartHang
B OSStartHang ; Should never get here
欢迎光临 OpenEdv-开源电子网 (http://openedv.com/)
Powered by Discuz! X3.4