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

[复制链接]
 楼主| 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的时候看到程序进入异常中断
玄德 发表于 2015-1-7 11:53 | 显示全部楼层
玄德 发表于 2015-1-7 11:56 | 显示全部楼层
azurysky 发表于 2015-1-7 11:53
没有搜到呀!

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


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


mmuuss586 发表于 2015-1-7 12:14 | 显示全部楼层

根据楼上提供的帖子链接改改看吧;
 楼主| azurysky 发表于 2015-1-7 14:04 | 显示全部楼层
这个看不懂呀,跟我的程序完全不一样。我的是stm32f103的程序改的。
其实我想知道的USB线忽然被拔掉,MCU如何得知?查那个寄存器或能进入哪个中断?
玄德 发表于 2015-1-7 18:33 | 显示全部楼层

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

jzzhl 发表于 2016-10-22 14:54 | 显示全部楼层
玄德 发表于 2015-1-7 11:53
http://bbs.21ic.com/icview-719478-1-1.html

谢谢!看了解决了我的VCP电脑不开串口软件,stm32就假死机的问题
玄德 发表于 2016-10-22 19:00 | 显示全部楼层
jzzhl 发表于 2016-10-22 14:54
谢谢!看了解决了我的VCP电脑不开串口软件,stm32就假死机的问题


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

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

本版积分规则

32

主题

82

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

32

主题

82

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部