智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2185|回复: 6
打印 上一主题 下一主题

USB程序出现问题

[复制链接]

7

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
512
威望
256
贡献
142
兑换币
163
注册时间
2012-12-10
在线时间
57 小时
毕业学校
海淀大学
跳转到指定楼层
1#
发表于 2013-4-2 13:44:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用了【拉普兰德K60底层库】的USB部分,枚举这部分运行正常,当串行口调试助手在PC机上运行时,发生异常中断(VECTOR_003)
可疑的问题程序可能是:USB 中断->USB_Handler(void)->USB_Setup_Handler(),单片机型号是:KM20DX256VLL7,希望 洋葱圈 给予关注一下。谢谢!

7

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
512
威望
256
贡献
142
兑换币
163
注册时间
2012-12-10
在线时间
57 小时
毕业学校
海淀大学
2#
 楼主| 发表于 2013-4-3 09:19:53 | 只看该作者
好像USB_Setup_Handler()没有问题。
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
3#
发表于 2013-4-3 09:30:10 | 只看该作者
本帖最后由 洋葱圈 于 2013-4-3 09:39 编辑

K20我没研究过具体和K60有什么不一样,如果用K60的话肯定没问题。
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
512
威望
256
贡献
142
兑换币
163
注册时间
2012-12-10
在线时间
57 小时
毕业学校
海淀大学
4#
 楼主| 发表于 2013-4-3 09:38:45 | 只看该作者
我再找找原因,谢谢!
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
5#
发表于 2013-4-3 09:39:33 | 只看该作者
jlyjj 发表于 2013-4-3 09:38
我再找找原因,谢谢!

003是硬件错误,建议你用断点+单步调试确定发生错误的地方。
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
512
威望
256
贡献
142
兑换币
163
注册时间
2012-12-10
在线时间
57 小时
毕业学校
海淀大学
6#
 楼主| 发表于 2013-4-3 14:14:47 | 只看该作者
是啊,我努力了半天,仍然没有结果。在003异常中断服务程序里,我仅仅做了一个死循环,从003里break后,往回追溯,有什么好办法没有?不过arm4核本身产生的中断会不会不留痕迹 ,如:在堆栈中不留地址。
回复 支持 反对

使用道具 举报

3

主题

177

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
威望
1074
贡献
636
兑换币
683
注册时间
2012-9-22
在线时间
169 小时
7#
发表于 2013-11-21 10:48:10 | 只看该作者
洋葱圈 发表于 2013-4-3 09:30
K20我没研究过具体和K60有什么不一样,如果用K60的话肯定没问题。

您好,我最近在调试usb,用的是拉普兰德的库函数,但是程序在执行了初始化函数之后就一直在等待枚举,没有产生SOF中断(蓝色文字),一直产生usb复位中断(红色文字),这是怎么回事啊 ?还有就是usb总线上必须串联33欧姆的电阻嘛?换成10欧姆的可以不啊?另外D+不需要外接1.5K的上拉电阻嘛?谢谢了
void USB_Protocol_Handler(void)
{
  uint8 err;
  FLAG_SET(1,GPIOC_PDOR);
    /*USB 程序初始化后会首先进入复位中断 */
/**/ if(FLAG_CHK(USB_ISTAT_USBRST_SHIFT,USB0_ISTAT))//产生USB复位中断
  {
    //USB0_ISTAT =USB_ISTAT_USBRST_MASK;   
    USB_Reset_Handler();                         //进入USB复位中断服务函数
    //return;
  }
if(FLAG_CHK(USB_ISTAT_SOFTOK_SHIFT,USB0_ISTAT))//产生USB SOFTOK中断
  {
    USB0_ISTAT = USB_ISTAT_SOFTOK_MASK;          //清空SOFTOK标志位
  }

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-23 02:25 , Processed in 0.041907 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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