ucos-iii+stm32f105 任务调度进入HardFault_Handler

移植ucos-iii,单个任务可以跑起来,但是创建两个任务后,两个任务无法进行调度,具体代码如下:
#define CAN1_TIMEOUT_PRIO 5
#define CAN1_TIMEOUT_STK_SIZE 2048
static OS_TCB CAN1_TIMEOUT_TCB;
static CPU_STK CAN1_TIMEOUT_Stk[CAN1_TIMEOUT_STK_SIZE];
void Task_CAN1_TimeOut(void *p_arg);
#define CAN1_SEND_PRIO 4
#define CAN1_SEND_STK_SIZE 2048
static OS_TCB CAN1_SEND_TCB;

static CPU_STK CAN1_SEND_Stk[CAN1_SEND_STK_SIZE];

void Task_CAN1_SEND(void *p_arg);

void Task_StartUp(void *p_arg)
{
    OS_ERR err;
    (void)p_arg;

    OSTaskCreate((OS_TCB        *)&CAN1_SEND_TCB,
                            (CPU_CHAR       *)"CAN1_SEND",
                            (OS_TASK_PTR        )Task_CAN1_SEND,
                            (void               *)0,
                            (OS_PRIO            )CAN1_SEND_PRIO,
                            (CPU_STK         *)&CAN1_SEND_Stk[0],
                            (CPU_STK_SIZE    )50,
                            (CPU_STK_SIZE    )CAN1_SEND_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);

                OSTaskCreate((OS_TCB                *)&CAN1_TIMEOUT_TCB,
                            (CPU_CHAR           *)"CAN1_TIMEOUT",
                            (OS_TASK_PTR         )Task_CAN1_TimeOut,
                            (void                   *)0,
                            (OS_PRIO                 )CAN1_TIMEOUT_PRIO,
                            (CPU_STK                *)&CAN1_TIMEOUT_Stk[CAN1_TIMEOUT_STK_SIZE],
                            (CPU_STK_SIZE    )50,
                            (CPU_STK_SIZE    )CAN1_TIMEOUT_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(&STARTUP_TCB, &err);
}

main函数中创建Task_StartUp()这个任务,在Task_StartUp()这个任务中再创建上面两个任务,两个子任务的代码如下:

void Task_CAN1_TimeOut(void *p_arg)
{

    OS_ERR  err;
    (void)p_arg;

    while (1)
    {
        CAN1_WriteData(CEMData, 8, CEMID);
        OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err);
    }
}

void Task_CAN1_SEND(void *p_arg)
{
    OS_ERR err;
    (void)p_arg;

    while (1)
    {
        CAN1_WriteData(CHMData, 8, CHMID);
        OSTimeDlyHMSM(0,0,0,250,OS_OPT_TIME_HMSM_STRICT,&err);
    }
}

目的是想让Task_CAN1_SEND()这个任务每隔250ms发送一次,Task_CAN1_TimeOut每隔500ms发送一次,
kei环境下j-link调试,发现程序死在HardFault_Handler(),该怎么解决?

https://www.baidu.com/link?url=t5I7PGG13ClQ45RW_sMWy3cyOIKPFFNg6-7JBlutHw1peXHYvZHdl5EUMKrteGO0MtkLra9IiemkpuAQWTa2QK&wd=&eqid=ec1c1afb00052f1a0000000558c6c0fe