OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6062|回复: 22

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

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
发表于 2016-5-13 11:56:03 | 显示全部楼层 |阅读模式
1金钱
大家好!原子哥好!
按照探索者光盘下USB学习资料下面的DEVICE案例“VCP”,在“实验3 按键输入实验”在基础上添加VCP下面的文件(基本按照USB做SD卡实验的指导进行的),唯一的就是自己添加了串口3程序来作为输出。编译正常。
程序烧入后,如果不插上USB(SLAVE接口)线到PC,那么程序正常运行,一旦插上USB线,则运行指示灯不再闪烁。判定程序死机。用JTAG调试,跑到:startup_stm32f4xx.sB  .ENDP   ALIGN 死机,但我不确定是不是停在这里,反正程序无法继续。

正常来说,ST的VCP案例是通过测试的。可为什么我加入到工程中(部分还是修改了),就会死机?
之前提过问题,琢磨了一段时间,还是没解决,没办法,只能在万能的论坛再次求助。
谢谢。

最佳答案

查看完整内容[请看2#楼]

你开了中断却没有重写中断处理函数. 仔细检查一下是哪个中断处理函数没有重写
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-7-3
在线时间
3 小时
发表于 2016-5-13 11:56:04 | 显示全部楼层
你开了中断却没有重写中断处理函数.
仔细检查一下是哪个中断处理函数没有重写
在路上
回复

使用道具 举报

4

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
622
金钱
622
注册时间
2016-5-11
在线时间
40 小时
发表于 2016-5-13 13:30:07 | 显示全部楼层
本帖最后由 aisini 于 2016-5-13 13:31 编辑

怎么感觉跟对齐方式有关,你可以使用仿真调试一下,看是从那段代码跳到这里去的,首先定位出问题的代码在是么位置...
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-13 14:11:09 | 显示全部楼层
谢谢你们回复。
刚才看了下:
CRYP_IRQHandler                                                   
HASH_RNG_IRQHandler
FPU_IRQHandler
   
                B       .               
ENDP

                ALIGN

;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
                 IF      EF:__MICROLIB
               
                 EXPORT  __initial_sp
                 EXPORT  __heap_base
                 EXPORT  __heap_limit
运行到B位置
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 08:25:36 | 显示全部楼层
mark下,希望得到帮助。谢谢。
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 10:00:15 | 显示全部楼层
已经解决插入USB死机问题:
在VCP_Init中的中断优先级搞错了。和NVIC配置没对应。
谢谢大家。也希望对大家有帮助。
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-5-13
在线时间
39 小时
发表于 2016-5-16 15:38:25 | 显示全部楼层
你用的开发板是STM232F407ZGT吗,能不能把你调试好的程序发一份,我最近怎么每次移植都是编译通过,下载后开发板就没反应了,万分感谢!!!邮箱632882665@qq.com
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-5-13
在线时间
1 小时
发表于 2016-5-16 16:11:03 | 显示全部楼层
我用的开发板是STM232F407ZGT吗,能不能把你调试好的程序发一份,我最近怎么每次移植都是编译通过,下载后开发板就没反应了,但装虚拟串口驱动都不成功(WIN7环境)!!!邮箱825853186@qq.com
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 16:27:02 | 显示全部楼层
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了;

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

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

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 16:28:52 | 显示全部楼层
哦,对了,我是随便找了个简单的程序进行添加USB功能的;我当时用的案例是:实验4 串口实验;这个串口用到的是USART1;我VCP用的是USART3;
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 16:29:38 | 显示全部楼层
自己在主函数中加入一些指示灯,可以很清晰的判断程序有没有在跑;
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-16 16:29:57 | 显示全部楼层
好了,我上班了,被老板打死了。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-5-13
在线时间
1 小时
发表于 2016-5-16 19:16:36 | 显示全部楼层
VCP为什么要用到USART3?能具体说说?
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-17 07:50:01 | 显示全部楼层
可以不用的,
st自带的那个VCP案例就是PC---USB-----USART这么个过程;串口接受到的数据立马通过USB发到PC;而PC通过USB发送的数据(虚拟串口)则立马通过USART3输出;
实现的是转发功能;可以去掉USART这部分的,只在PC---USB之间数据传输就可以了。
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-5-13
在线时间
39 小时
发表于 2016-5-17 09:53:49 | 显示全部楼层
tufuyidao 发表于 2016-5-16 16:27
我们公司无法发送附件到外网;
为了便于我们这些刚学习USB功能的小新们,大概我描述一下:
按照原子哥 ...

万分感谢,我尝试了一下,发现在usbd_config.h文件下得定义有错误,不知道要怎么改才行
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-19 11:00:54 | 显示全部楼层
这个文件是不需要修改的;你有错误是啥错误?
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-4-27
在线时间
12 小时
 楼主| 发表于 2016-5-19 11:04:09 | 显示全部楼层
目前我已经把修改好的代码移植到以太网TCP SERVER案例下,目前可以实现VCP和TCP主机功能了。
详细的实现过程我也还不很清楚,接下去在这个案例基础上,去了解实现过程(USB可以参考原子哥推荐的圈圈叫你学USB,我已经看完了,以太网的,还没开始啃)
一起努力吧
回复

使用道具 举报

11

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2016-3-23
在线时间
32 小时
发表于 2016-7-14 12:00:39 | 显示全部楼层
tufuyidao 发表于 2016-5-16 16:27
我们公司无法发送附件到外网;
为了便于我们这些刚学习USB功能的小新们,大概我描述一下:
按照原子哥 ...

这个官方移植的时候没有添加 #include "stm324xg_eval.h"会出现好多COM1     EVALCOM1 未定义 怎么处理的,是需要要把#include "stm324xg_eval.h"添加进去吗
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-11-18 14:59:20 | 显示全部楼层
楼主能放上你移植的代码吗,万分感谢
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-11-18 15:09:28 | 显示全部楼层
楼主的意思是在移植的时候,必须要指定USB虚拟到哪个串口了是吗,我现在调试通了,但是没有指定是哪个串口,但是我在使用usart1的时候,发现USB虚拟串口对usart1有影响
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-11-18 15:13:01 | 显示全部楼层
tufuyidao 发表于 2016-5-17 07:50
可以不用的,
st自带的那个VCP案例就是PC---USB-----USART这么个过程;串口接受到的数据立马通过USB发到PC ...

不指定串口会不会默认到串口1上面?
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-11-18 15:13:40 | 显示全部楼层
tufuyidao 发表于 2016-5-17 07:50
可以不用的,
st自带的那个VCP案例就是PC---USB-----USART这么个过程;串口接受到的数据立马通过USB发到PC ...

不指定串口会不会默认到串口1上面?
回复

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2016-11-30 14:38:46 | 显示全部楼层
tufuyidao 发表于 2016-5-17 07:50
可以不用的,
st自带的那个VCP案例就是PC---USB-----USART这么个过程;串口接受到的数据立马通过USB发到PC ...

你好,请问一下st的那个 vcp 程序是在哪里啊,我以前貌似试过,但是那时没有使用到也就没有太在意,最近需要使用到,但是找不到在哪里了,先谢谢了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 16:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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