官方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));
// }
哪位大神能给解释一下! ti_print = 300;
丢了这个? 改char str[]为全局变量试试 huangqi412 发表于 2013-12-18 11:35
ti_print = 300;
丢了这个?
这个是专门屏蔽掉的,我查过了,它就是一个计时变量,在定时器的中断中更新的,因为我在程序中任何地方用EP_IN_Transfer函数传输数据都不行,所以我想搞明白倒底这个触发机制是什么。 没有人研究过这个吗?自己顶起来! duqinglin 发表于 2013-12-20 09:15
没有人研究过这个吗?自己顶起来!
从这个函数声明void EP_IN_Transfer(uint8,uint8*,uint8);看你输入参数符合这种就行了。
你的str、sizeof是否满足?
FSL_TICS_Robin 发表于 2013-12-20 09:56
从这个函数声明void EP_IN_Transfer(uint8,uint8*,uint8);看你输入参数符合这种就行了。
你的str、sizeof ...
跟这个也没关系,它好像有一个触发条件,我没有弄明白,能试的我都试过了,呵呵! sizeof(str)是指str这个指针的长度吧,这里应该用strlen(str)。 楼主,你那里有没有这个usb的电脑上的驱动,我卡在这里好久了,就是找不到驱动,不能连接电脑验证,能否把这个驱动发给我,谢谢了,邮箱yinyanqing019@163.com yinyanqing 发表于 2014-4-3 23:35
楼主,你那里有没有这个usb的电脑上的驱动,我卡在这里好久了,就是找不到驱动,不能连接电脑验证,能否把 ...
yinyanqing你好
其实你可以单独发一个帖子提问,并写下你的例程所在路径,以便大家帮助你。 楼主,这个问题解决了没有呢?
我也在调试这个部分程序,给你提两点你试试看吧
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]