打印
[STM32F1]

stm32f103的虚拟串口,掉电后程序进入异常中断。

[复制链接]
2293|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
azurysky|  楼主 | 2015-1-7 09:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
虚拟串口工作正常,不过当USB线拔下过半分钟左右死机。
因为不是了解USB的内部工作机制,只是照着例程改过来的所以不知道如何解决。
求高手指教!!!

我在主循环中加了
  if(pInformation->Current_Configuration)
  {
    bDeviceState = CONFIGURED;
  }
  else
  {
    bDeviceState == UNCONNECTED;
  }
if(bDeviceState = CONFIGURED)
{
  //发送数据

}
希望在任何时刻连接USB都可以正常工作。
但USB断开的时候
pInformation->Current_Configuration 一直是真值。之后过半分钟左右进入异常中断。


沙发
azurysky|  楼主 | 2015-1-7 10:43 | 只看该作者
刚刚又看了一些资料,都是似懂非懂的。
想知道当USB线与PC机断开连接的时候,STM32的USB接口的那个信息发生改变了,会进入中断吗?
是不是查到变化后对USB复位操作就可以了?

使用特权

评论回复
板凳
玄德| | 2015-1-7 11:48 | 只看该作者

USB 线脱开以后,CPU 陷入底层驱动、一直循环,死机只是假象。
原因是底层程序的一个 bug 。
本论坛有人发过解决方法,你先查下,印象里帖子名含有“抛砖引玉”四个字。我也得益于这个帖子,再也不死循环了。

使用特权

评论回复
地板
azurysky|  楼主 | 2015-1-7 11:53 | 只看该作者
玄德 发表于 2015-1-7 11:48
USB 线脱开以后,CPU 陷入底层驱动、一直循环,死机只是假象。
原因是底层程序的一个 bug 。
本论坛有人发 ...

没有搜到呀!

陷入底层驱动是什么意思?我DEBUG的时候看到程序进入异常中断

使用特权

评论回复
5
玄德| | 2015-1-7 11:53 | 只看该作者
6
玄德| | 2015-1-7 11:56 | 只看该作者
azurysky 发表于 2015-1-7 11:53
没有搜到呀!

陷入底层驱动是什么意思?我DEBUG的时候看到程序进入异常中断 ...


你试试吧,异常中断就不懂了。


使用特权

评论回复
7
mmuuss586| | 2015-1-7 12:14 | 只看该作者

根据楼上提供的帖子链接改改看吧;

使用特权

评论回复
8
azurysky|  楼主 | 2015-1-7 14:04 | 只看该作者
这个看不懂呀,跟我的程序完全不一样。我的是stm32f103的程序改的。
其实我想知道的USB线忽然被拔掉,MCU如何得知?查那个寄存器或能进入哪个中断?

使用特权

评论回复
9
玄德| | 2015-1-7 18:33 | 只看该作者

哦,F103和F407的库,确实相差挺大。
只能帮到这里了。。。
USB是比较复杂的东西,需要时间。

使用特权

评论回复
10
jzzhl| | 2016-10-22 14:54 | 只看该作者
玄德 发表于 2015-1-7 11:53
https://bbs.21ic.com/icview-719478-1-1.html

谢谢!看了解决了我的VCP电脑不开串口软件,stm32就假死机的问题

使用特权

评论回复
11
玄德| | 2016-10-22 19:00 | 只看该作者
jzzhl 发表于 2016-10-22 14:54
谢谢!看了解决了我的VCP电脑不开串口软件,stm32就假死机的问题


呵呵,你我都验证了,很多人也验证了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

82

帖子

2

粉丝