微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC1768 CM3 移植uCOS开机之后进入HardFault_Handler\

LPC1768 CM3 移植uCOS开机之后进入HardFault_Handler\

时间:10-02 整理:3721RD 点击:
贴代码
INT32S main (void)
{
    CPU_INT08U  os_err;
os_err = os_err; /* prevent warning... */
    /* Note:  由于使用UCOS, 在OS运行之前运行,注意别使能任何中断. */
IntDisAll();                     /* Disable all ints until we are ready to accept them.  */
    OSInit();                        /* Initialize "uC/OS-II, The Real-Time Kernel".         */

os_err = OSTaskCreateExt((void (*)(void *)) App_TaskStart,  /* Create the start task.                               */
                             (void          * ) 0,
                             (OS_STK        * )&App_TaskStartStk[APP_TASK_START_STK_SIZE - 1],
                             (INT8U           ) APP_TASK_START_PRIO,
                             (INT16U          ) APP_TASK_START_PRIO,
                             (OS_STK        * )&App_TaskStartStk[0],
                             (INT32U          ) APP_TASK_START_STK_SIZE,
                             (void          * )0,
                             (INT16U          )(OS_TASK_OPT_STK_CLR | OS_TASK_OPT_STK_CHK));

#if OS_TASK_NAME_EN > 0
    OSTaskNameSet(APP_TASK_START_PRIO, (CPU_INT08U *)"Start Task", &os_err);
#endif
OSStart();                                                  /* Start multitasking (i.e. give control to uC/OS-II).  */
return (0);
}

/*
*********************************************************************************************************
*                                          App_TaskStart()
*
* Description : The startup task.  The uC/OS-II ticker should only be initialize once multitasking starts.
*
* Argument(s) : p_arg       Argument passed to 'App_TaskStart()' by 'OSTaskCreate()'.
*
* Return(s)   : none.
*
* Caller(s)   : This is a task.
*
* Note(s)     : none.
*********************************************************************************************************
*/   
static  void  App_TaskStart (void *p_arg)
{   
(void)p_arg;

/***************  Init hardware ***************/
    OS_CPU_SysTickInit(SystemCoreClock/1000);                 /* Initialize the SysTick.                              */
#if (OS_TASK_STAT_EN > 0)
    OSStatInit();                                            /* Determine CPU capacity.                              */
#endif
    App_TaskCreate();                                        /* Create application tasks.                            */
for(;;)
    {
       OSTimeDlyHMSM(0, 1, 0, 0);        /* Delay One minute */
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static  void  App_TaskCreate (void)
{
#if (OS_VIEW_MODULE == DEF_ENABLED)
App_OSViewTaskCreate();
#endif

App_UCGUI_TaskCreate();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void  App_UCGUI_TaskCreate (void)
{
    CPU_INT08U  os_err;
os_err = os_err;
os_err = OSTaskCreate((void (*)(void *)) uctsk_UCGUI,   
                          (void          * ) 0,      
                          (OS_STK        * )&App_Task_UCGUI_Stk[APP_TASK_UCGUI_STK_SIZE - 1],  
                          (INT8U           ) APP_TASK_UCGUI_PRIO  );      
#if OS_TASK_NAME_EN > 0
     OSTaskNameSet(APP_TASK_UCGUI_PRIO, "Task UCGUI", &os_err);
#endif
/*   
    os_err = OSTaskCreate((void (*)(void *)) uctsk_TouchPanel,   
                          (void          * ) 0,      
                          (OS_STK        * )&App_Task_TouchPanel_Stk[APP_TASK_TouchPanel_STK_SIZE - 1],  
                          (INT8U           ) APP_TASK_TouchPanel_PRIO  );
#if OS_TASK_NAME_EN > 0
     OSTaskNameSet(APP_TASK_TouchPanel_PRIO, "TASK TouchPanel Messages", &os_err);
#endif
*/
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void uctsk_UCGUI (void)
{   
GUI_Init();
// _ExecCalibration();   /* 触摸屏校准   */
    for(;;)
    {  
   MainTask();
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void MainTask(void) {
//  GUI_Init();
  while(1) {
    GUIDEMO_main();
  }
}

自己先顶起,绝对不能沉啊……

能力低了,没看懂

感谢您的回复……

看不懂啊。

会不会有变量越界的问题,我以前出现这种错误但不是在操作系统上的。你可以检查在这个

正需要,谢谢了

俺也能力低了,没看懂

我也出现过这个问题。怎么看是变量变量越界的问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top