硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2431|回复: 3
收起左侧

[emWin] V6板在emWIN中利用图表开启摄像头卡机

[复制链接]

2

主题

3

回帖

9

积分

新手上路

积分
9
发表于 2017-5-20 11:06:14 | 显示全部楼层 |阅读模式
请教一下大神,按一下桌面图标,就卡机了,问题出在哪?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板的出厂例程里的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-5-20 11:24:45 | 显示全部楼层
TestCamera();函数如何测试的。

问题应该就出在测试函数上面了,默认所有的emWin例子都是将16MB SDRAM的前8MB用于显存,后8MB用于emWin动态内存。

你这里的摄像头直接DMA采集的图像到SDRAM的话,会直接出问题。你可以用emWin的动态内存申请函数,申请一块出来,用于摄像头。
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2017-5-20 20:03:50 | 显示全部楼层

回 eric2013 的帖子

eric2013:  TestCamera();函数如何测试的。

问题应该就出在测试函数上面了,默认所有的emWin例子都是将16MB SDRAM的前8MB用于显存,后8MB用于emWin动态内存。

你这里的摄像头直接DMA采集的图像到SDRAM的话,会直接出问题。你可以用emWin的动态内存申请函数,申请一块出来,用于 .. (2017-05-20 11:24) 
TestCamera()函数直接使用的出厂例程里的,没有改动。把DMA显存地址改为#define SDRAM_APP_BUF1        (SDRAM_APP_BUF + 4 * 1024 * 1024);没有改変。是不是ucosiii任务切换有问题?想在例程中“智能家居”的例程的“视频监控”的图标下加上摄像头功能。请版主指点一下迷津!!1
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-5-21 01:53:19 | 显示全部楼层

回 zzjj44 的帖子

zzjj44:TestCamera()函数直接使用的出厂例程里的,没有改动。把DMA显存地址改为#define SDRAM_APP_BUF1        (SDRAM_APP_BUF + 4 * 1024 * 1024);没有改変。是不是ucosiii任务切换有问题?想在例程中“智能家居”的例程的“视频监控”的图标 .. (2017-05-20 20:03) 
特别注意出厂程序是裸机实现的,不是用的emWin。

你可以用emWin的动态内存申请函数,申请一块出来,然后用于摄像头。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-15 10:46 , Processed in 0.270304 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表