硬汉嵌入式论坛

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

[emWin] U盘 处理USBH_Process 在UCOS中死机

[复制链接]

9

主题

46

回帖

73

积分

初级会员

积分
73
发表于 2017-4-21 14:05:17 | 显示全部楼层 |阅读模式
小弟最近在用EMWIN做实验,建立一个对话框,有一个BUTTON,点击BUTTON后将数据存入U盘 。
思路是 开两个线程,一个是 对话框, 另一个是 USBH_Process。如下:


对话框线程
void emwindemo_task(void *p_arg)
{
    OS_ERR err;
    GUI_CURSOR_Show();
    GUI_Init();
    CreateCONSOLE();
   
    while(1)
    {
        GUI_Delay(10);
        GUI_Exec();
        OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_PERIODIC,&err);//ÑÓʱ5ms
    }
}

USB监视线程
void led0_task(void *p_arg)
{
    OS_ERR err;
    while(1)
    {
        USBH_Process(&USB_OTG_Core, &USB_Host);
        OSTimeDlyHMSM(0,0,0,50,OS_OPT_TIME_PERIODIC,&err);//ÑÓʱ50ms
    }
}

现在问题是,当U盘插入 并识别的瞬间, 另一个线程就死机了。 整个系统就死了。

我用例程中的实验测试(USB HOST),测试U盘和电路都是没问题的。区别就是,例程是裸机,没有用UCOS系统,直接死循环调用 USBH_Process。而我希望把U盘识别和操作放在EMWIN里。

另外,发现 ,若在线程中调用 USBH_Process时前后加锁/解锁,  无法进入 USH_User_App函数,不知怎么回事

请问是什么原因呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-4-22 10:08:32 | 显示全部楼层
参考我们已经发布的这个FreeRTOS的USB Host看下,大同小异,可以随时插拔的,你看看:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=17658

另外你的emWin任务里面 仅调用GUI_Delay(10);就好了。这个任务底层会调用UCOS的延迟和GUI_Exec。
回复

使用道具 举报

9

主题

46

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2017-4-22 10:57:12 | 显示全部楼层

回 eric2013 的帖子

eric2013:参考我们已经发布的这个FreeRTOS的USB Host看下,大同小异,可以随时插拔的,你看看:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=17658

另外你的emWin任务里面 仅调用GUI_Delay(10);就好了。这个任务底层会调用UCOS的延迟和GUI_Exec。 (2017-04-22 10:08) 
感谢ERIC大大,我去学习一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 12:58 , Processed in 0.037977 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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