OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4886|回复: 4

u/cos-iii+emwin移植USB U盘代码后,死机

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-5-23
在线时间
1 小时
发表于 2017-5-23 11:46:32 | 显示全部楼层 |阅读模式
1金钱


STM32F407的板子,U盘可以写,就是刷新界面后,一直在等待GUI消息,不会跑任务的while循环

最佳答案

查看完整内容[请看2#楼]

兄台,我前天在论坛上看的你的帖子,因为我也和你一样,ucosiii+emwin,但是一加上USB就死机,然后找了半天也没个答案,最后硬着头皮看了原子大哥的综合例程关于usb的那块,最后终于调试能用了,首先移植usb的U盘基础例程(USB_OTG三个文件, USB_HOST七个文件 USB_APP两个文件),然后打开USB_APP文件中的usbh_usr.c,找到“OTG_FS_IRQHandler”中断服务函数,进入后首先加上 OSIntEnter(); 出来前加 OSIntExit(); 然后用文 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-5-27
在线时间
2 小时
发表于 2017-5-23 11:46:33 | 显示全部楼层
兄台,我前天在论坛上看的你的帖子,因为我也和你一样,ucosiii+emwin,但是一加上USB就死机,然后找了半天也没个答案,最后硬着头皮看了原子大哥的综合例程关于usb的那块,最后终于调试能用了,首先移植usb的U盘基础例程(USB_OTG三个文件, USB_HOST七个文件  USB_APP两个文件),然后打开USB_APP文件中的usbh_usr.c,找到“OTG_FS_IRQHandler”中断服务函数,进入后首先加上  OSIntEnter();  出来前加   OSIntExit();  然后用文件系统读写u盘前后都加这两句话,就不死机了······(我是将U盘处理的过程放到了另一个任务中完成的)还有就是原子哥的usb基础例程中u盘只能读一个,然后读另一个的时候数据还是第一个的,比如读第一个u盘的数据是  total  7654M  free 6543M,然后拔下来插入第二个U盘,还是这个数据,看了综合例程才明白,每次插入U盘前都得重新挂载,  fs[2]->drv=2; f_mount(fs[2],"2:",1);加上这两条就好了。   本人小白一枚。。。。有什么不对的地方还请多多指教。

//USB OTG 中断服务函数
void OTG_FS_IRQHandler(void)
{
        OSIntEnter();                   
        USBH_OTG_ISR_Handler(&USB_OTG_Core);
        OSIntExit();                 
}



//USB循环扫描函数  高优先级
void usb_task(void *p_arg)
{
        OS_ERR err;
        USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_Callbacks);
        while(1)
        {
                USBH_Process(&USB_OTG_Core, &USB_Host);
                OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_PERIODIC,&err);
        }
}



//U盘读数据任务   低优先级
void morse_task(void *p_arg)
{
        OS_ERR err;
        FIL fil;
  UINT bww;
        u8 buf=0;
        while(1)
        {
                if(you_can_inter==1)////////////////全局变量,U盘读取成功,枚举完成后,在用户应用程序函数中置1,U盘拔出后置0
                {
                        OSIntEnter();                   
                        f_open (&fil,"2:abc/abc.txt", FA_READ);       
                  f_read (&fil, &buf, 1, &bww);
            f_close(&fil);
                        OSIntExit();  
                        printf("%s",buf);
                        printf("\r\n");
                while(HCD_IsDeviceConnected(&USB_OTG_Core))
        {       
                LED1=!LED1;
                delay_ms(200);
        }
                OSIntEnter();   
                 fs[2]->drv=2;
                 f_mount(fs[2],"2:",1);                //重新挂载U盘
                OSIntExit();  
}
                OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_PERIODIC,&err);
        }
}



1S_C9AZUP%IEC8K)3_72AQ1.png
(VUY7ZY_X5@QXOQOM{M3`58.png
`2WD[MVCKP(Q95%NVAJYPS3.png
回复

使用道具 举报

19

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
金钱
308
注册时间
2014-10-19
在线时间
42 小时
发表于 2017-5-27 10:29:28 | 显示全部楼层
额 你们中断里面不加这两句话吗?不是都要加的吗
回复

使用道具 举报

8

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-12-30
在线时间
37 小时
发表于 2017-5-27 14:15:32 | 显示全部楼层
mark。。。
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-5-27 14:31:40 | 显示全部楼层
一条旱鱼 发表于 2017-5-27 05:09
兄台,我前天在论坛上看的你的帖子,因为我也和你一样,ucosiii+emwin,但是一加上USB就死机,然后找了半天 ...

你好 我在移植usb实验的时候 出现了好多重定义的问题 帮忙看下我的帖子好吗
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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