STM32 IAR UCOS CSTACK 设置问题
各位坛友,我的ucosiii跑起来之后到startup之后任务运行不了,仿真后得出以下结果,是什么原因造成的?系统部分的代码如下:
01
//main:
02
static OS_TCB start_up_TCB;
03
static CPU_STKstart_up_STK;
04
void main(void)
05
{
06
OS_ERR err;
07
08
DISABLE_INTERRUPTS(); //disable all interrupts
09
OSInit(&err);
10
if(err!=OS_ERR_NONE)
11
{
12
while(1);
13
}
14
/*创建任务*/
15
OSTaskCreate((OS_TCB *)&start_up_TCB, //任务控制块指针
16
(CPU_CHAR *)"Startup_Task", //任务名称
17
(OS_TASK_PTR )start_up, //任务代码指针
18
(void *)0, //传递给任务的参数parg
19
(OS_PRIO )start_up_prio, //任务优先级
20
(CPU_STK *)&start_up_STK, //任务堆栈基地址
21
(CPU_STK_SIZE)COMMON_STK_SIZE/10, //堆栈剩余警戒线
22
(CPU_STK_SIZE)COMMON_STK_SIZE, //堆栈大小
23
(OS_MSG_QTY)0, //可接收的最大消息队列数
24
(OS_TICK )0, //时间片轮转时间
25
(void *)0, //任务控制块扩展信息
26
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),//任务选项
27
(OS_ERR *)&err); //返回值
28
29
OSStart(&err);
30
}
31
//startup:
32
void start_up(void *p_arg)
33
{
34
OS_ERR err;
35
p_arg=p_arg;
36
37
bsp_init(); //hardware init
38
CPU_Init(); //CPU init
39
Init_SysTick(); //systick init
40
ENABLE_INTERRUPTS(); //interrupts enable
41
printf("\r\nstartup\r\n");
42
OSTaskCreate((OS_TCB *)&car_control_TCB, //任务控制块指针
43
(CPU_CHAR *)"Car_Control", //任务名称
44
(OS_TASK_PTR )car_control, //任务代码指针
45
(void *)0, //传递给任务的参数parg
46
(OS_PRIO )car_control_prio, //任务优先级
47
(CPU_STK *)&car_control_STK, //任务堆栈基地址
48
(CPU_STK_SIZE)COMMON_STK_SIZE/10, //堆栈剩余警戒线
49
(CPU_STK_SIZE)COMMON_STK_SIZE, //堆栈大小
50
(OS_MSG_QTY)0, //可接收的最大消息队列数
51
(OS_TICK )0, //时间片轮转时间
52
(void *)0, //任务控制块扩展信息
53
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),//任务选项
54
(OS_ERR *)&err); //返回值
55
//OSTaskDel(&Start_Up_TCB,&err);
56
while(1);
57
}
58
//栈空间定义:
59
#define COMMON_STK_SIZE 32
各位,我的问题解决了。应该先开中断后配置systick
页:
[1]