duqinglin 发表于 2013-12-17 22:32:02

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

本帖最后由 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));
         // }
哪位大神能给解释一下!

huangqi412 发表于 2013-12-18 11:35:23

ti_print = 300;
丢了这个?

gaolf_2012 发表于 2013-12-18 12:08:48

改char str[]为全局变量试试

duqinglin 发表于 2013-12-18 14:18:03

huangqi412 发表于 2013-12-18 11:35
ti_print = 300;
丢了这个?

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

duqinglin 发表于 2013-12-20 09:15:29

没有人研究过这个吗?自己顶起来!

FSL_TICS_Robin 发表于 2013-12-20 09:56:02

duqinglin 发表于 2013-12-20 09:15
没有人研究过这个吗?自己顶起来!

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

duqinglin 发表于 2013-12-20 12:24:35

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

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

FSL_TICS_LIKAN 发表于 2013-12-20 17:28:09

sizeof(str)是指str这个指针的长度吧,这里应该用strlen(str)。

yinyanqing 发表于 2014-4-3 23:35:48

楼主,你那里有没有这个usb的电脑上的驱动,我卡在这里好久了,就是找不到驱动,不能连接电脑验证,能否把这个驱动发给我,谢谢了,邮箱yinyanqing019@163.com

FSL_TICS_Robin 发表于 2014-4-4 09:52:55

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

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

yinyanqing 发表于 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
页: [1]
查看完整版本: 官方KL25例程中的关于USB CDC问题(已解决)