搜索
bottom↓
回复: 10

官方KL25例程中的关于USB CDC问题(已解决)

[复制链接]

出0入0汤圆

发表于 2013-12-17 22:32:02 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 15:11 编辑

在官方提供的KL25的例程中,有一个函数
void usb_service(void)
{
      // If data transfer arrives
        if(FLAG_CHK(EP_OUT,gu8USB_Flags))
        {
            (void)USB_EP_OUT_SizeCheck(EP_OUT);         
            usbEP_Reset(EP_OUT);
            usbSIE_CONTROL(EP_OUT);
            FLAG_CLR(EP_OUT,gu8USB_Flags);

            // Send it back to the PC
            EP_IN_Transfer(EP2,CDC_OUTPointer,1);
            
        }
//        
          if (!ti_print)
            {
             ti_print = 300;
             sprintf((char *)gu8USB_Buffer,"\r RTC = %5i s", RTC_TSR);
             EP_IN_Transfer(EP2,gu8USB_Buffer,strlen((char *)gu8USB_Buffer));
            }
            
        
}   
红色代码部分是正常的,但是我改成下面的样子,就不好用,始终没弄明白它的触发机制!
                //if (!ti_print)
           // {
                char str[] = "test\r\n";
                     EP_IN_Transfer(EP2,str,sizeof(str));
           // }
哪位大神能给解释一下!

出0入0汤圆

发表于 2013-12-18 11:35:23 | 显示全部楼层
ti_print = 300;
丢了这个?

出20入12汤圆

发表于 2013-12-18 12:08:48 | 显示全部楼层
改char str[]为全局变量试试

出0入0汤圆

 楼主| 发表于 2013-12-18 14:18:03 | 显示全部楼层
huangqi412 发表于 2013-12-18 11:35
ti_print = 300;
丢了这个?

这个是专门屏蔽掉的,我查过了,它就是一个计时变量,在定时器的中断中更新的,因为我在程序中任何地方用EP_IN_Transfer函数传输数据都不行,所以我想搞明白倒底这个触发机制是什么。

出0入0汤圆

 楼主| 发表于 2013-12-20 09:15:29 | 显示全部楼层
没有人研究过这个吗?自己顶起来!

出0入0汤圆

发表于 2013-12-20 09:56:02 | 显示全部楼层
duqinglin 发表于 2013-12-20 09:15
没有人研究过这个吗?自己顶起来!

从这个函数声明void EP_IN_Transfer(uint8,uint8*,uint8);看你输入参数符合这种就行了。
你的str、sizeof是否满足?

出0入0汤圆

 楼主| 发表于 2013-12-20 12:24:35 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-20 09:56
从这个函数声明void EP_IN_Transfer(uint8,uint8*,uint8);看你输入参数符合这种就行了。
你的str、sizeof ...

跟这个也没关系,它好像有一个触发条件,我没有弄明白,能试的我都试过了,呵呵!

出0入0汤圆

发表于 2013-12-20 17:28:09 | 显示全部楼层
sizeof(str)是指str这个指针的长度吧,这里应该用strlen(str)。

出0入0汤圆

发表于 2014-4-3 23:35:48 | 显示全部楼层
楼主,你那里有没有这个usb的电脑上的驱动,我卡在这里好久了,就是找不到驱动,不能连接电脑验证,能否把这个驱动发给我,谢谢了,邮箱yinyanqing019@163.com

出0入0汤圆

发表于 2014-4-4 09:52:55 | 显示全部楼层
yinyanqing 发表于 2014-4-3 23:35
楼主,你那里有没有这个usb的电脑上的驱动,我卡在这里好久了,就是找不到驱动,不能连接电脑验证,能否把 ...

yinyanqing你好
其实你可以单独发一个帖子提问,并写下你的例程所在路径,以便大家帮助你。

出0入0汤圆

发表于 2014-4-9 00:36:49 | 显示全部楼层
楼主,这个问题解决了没有呢?
我也在调试这个部分程序,给你提两点你试试看吧
1.if (!ti_print)
{ti_print = 300;
这个部分我也屏蔽过,就是让usb马上相应接收程序,结果是屏蔽这个部分是不行的,具体什么原因,我也不清楚。如果你嫌相应太慢,你可以把ti_print = 300;  改成ti_print = 2;
2.就是8楼提意见 sizeof(str)是指str这个指针的长度吧,这里应该用strlen(str)。


不知道楼主是否调试成功了,我调试的时候遇到一个很大的问题,到现在都没有解决,如果楼主对usb很熟悉的话,可以帮我解决下。

网址:http://www.amobbs.com/thread-5576233-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 04:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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