USB VCP虚拟串口案例移植问题

2019-07-20 18:27发布

大家好!原子哥好!
按照探索者光盘下USB学习资料下面的DEVICE案例“VCP”,在“实验3 按键输入实验”在基础上添加VCP下面的文件(基本按照USB做SD卡实验的指导进行的),唯一的就是自己添加了串口3程序来作为输出。编译正常。
程序烧入后,如果不插上USB(SLAVE接口)线到PC,那么程序正常运行,一旦插上USB线,则运行指示灯不再闪烁。判定程序死机。用JTAG调试,跑到:startup_stm32f4xx.sB  .ENDP   ALIGN 死机,但我不确定是不是停在这里,反正程序无法继续。

正常来说,ST的VCP案例是通过测试的。可为什么我加入到工程中(部分还是修改了),就会死机?
之前提过问题,琢磨了一段时间,还是没解决,没办法,只能在万能的论坛再次求助。
谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
22条回答
tufuyidao
2019-07-21 14:23
kuugou 发表于 2016-5-16 15:38
你用的开发板是STM232F407ZGT吗,能不能把你调试好的程序发一份,我最近怎么每次移植都是编译通过,下载后 ...

我们公司无法发送附件到外网;
为了便于我们这些刚学习USB功能的小新们,大概我描述一下:
按照原子哥“实验51 USB读卡器(Slave)实验”那个教程::STM32F4开发指南-库函数版本_V1.1.pdf“,步骤基本不变:但我们添加的文件不一样:
USB_APP:添加:usb_bsp.c  usbd_cdc_vcp.c  usbd_desc.c  usbd_usr.c
USB_DEVICE添加:usbd_core.c  usbd_ioreq.c  usbd_req.c  usbd_cdc_core.c
USB_OTG添加:usb_dcd_int.c  usb_core.c  usb_dcd.c

仍按原子哥的说法:修改USB_APP;
我是通过USART3来实现转发的,由于在VCP中有一个#define EVAL_COM_IRQHandler            USART3_IRQHandler ,所以只要在VCP下配置这个中断就行了;USART3_IRQHandler 中断需要屏蔽掉,不然会报错;
EVAL_COM_IRQHandler            USART3_IRQHandler中断中只有VCP_DataTx (0,0),实现中断转发

特别注意几个地方:
1、先把USART3调试出来;USART3_IRQHandler 中做中断处理;
2、调试出来后,再把USART3_IRQHandler 屏蔽掉;
3、宏定义中一定要加入:USE_USB_OTG_FS
4、在usbd_usr.c中一定要加入USB的中断处理:
void OTG_FS_IRQHandler(void)
{
          USBD_OTG_ISR_Handler(&USB_OTG_dev);
}
不然会死机;
5、在main。c中初始化USART3和USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb);;
6、剩下的就是USB自动处理了。至于你收发的数据需要怎么处理,每个人需求不一样,自己处理就行了。
7、有些文件的头文件,需要自己根据编译结果进行添加;这个我也忘记添加哪些了。直到调试没错就OK了;

重要的事:按照原子哥上面的步骤先操作好,添加的文件就在上面;
有问题的假设我正好也碰到过的,我一定会回复的。我觉得刚开始学的应该都是一样的困惑,希望得到帮助。

谢谢那些回复过我的,给我思路的人。谢谢大家。

一周热门 更多>