|
请教一下大神,按一下桌面图标,就卡机了,问题出在哪?1、建立了主任务:
OSTaskCreate( (OS_TCB *)&AppTaskCameraTCB,
(CPU_CHAR *)"App Task Carema",
(OS_TASK_PTR )AppTaskCarema,
(void *)0,
(OS_PRIO )APP_CFG_TASK_CAREMA_PRIO,
(CPU_STK *)&AppTaskCameraStk[0],
(CPU_STK_SIZE )APP_CFG_TASK_CAMERA_STK_SIZE / 10,
(CPU_STK_SIZE )APP_CFG_TASK_CAMERA_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);
2、建立了信号量:
static void AppObjCreate (void)
{
OS_ERR err;
OSSemCreate( (OS_SEM *)&AppPrintfSemp,
(CPU_CHAR *)"AppPrintfSemp",
(OS_SEM_CTR )1,
(OS_ERR *)&err);
OSSemCreate( (OS_SEM *)&SEM_SYNCH,
(CPU_CHAR *)"SEM_SYNCH",
(OS_SEM_CTR )0,
(OS_ERR *)&err);
OSSemCreate( (OS_SEM *)&FLAG_carema,
(CPU_CHAR *)"FLAG_camera",
(OS_SEM_CTR )0,
(OS_ERR *)&err);
}
3、在回调函数中发送信号量:
static void _cbCallback1(WM_MESSAGE * pMsg)
{
OS_ERR err;
int NCode, Id;
WM_HWIN hWin = pMsg->hWin;
OSSemPost( (OS_SEM *)&FLAG_carema,
0,
(OS_ERR *)&err);
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG://29,此消息在对话框创建后、显示前发送到窗口。对话框程序通常使用此消息初始化小工具,并
//执行影响对话框外观的其他任何初始化任务
//
//初始化框架窗口
//
FRAMEWIN_SetFont(hWin,&GUI_FontYahei);
FRAMEWIN_SetText(hWin, _aBitmapItem[s_ucSelIconIndex].pText);//图标名称
//y轴方向对中,
FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
//在标题栏中添加一个"关闭"按钮,BUTTON将创建在右侧
FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
//在标题栏中添加一个"最小化"按钮,BUTTON将创建在左侧
FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 5);
、、、
4、摄像头任务执行函数:
static void AppTaskCarema( void *p_arg)
{
OS_ERR err;
(void)p_arg;
while(1)
{
OSSemPend( (OS_SEM *)&FLAG_carema,
(OS_TICK )0,
(OS_OPT )OS_OPT_PEND_BLOCKING,
(CPU_TS )0,
(OS_ERR *)&err);
if( err == OS_ERR_NONE)
{
TestCamera();
}
OSTimeDly(20, OS_OPT_TIME_DLY, &err);
}
}
具体的摄像头执行函数是V6板的出厂例程里的。 |
|