探索者板子开发USB虚拟串口

2019-07-20 11:45发布

用的原子个STM32F407探索者的开发板,同时参考了USB文件夹下面的"VCP"这个工程,希望使用USB的CDC类开发虚拟串口....
但是原子哥给的例程,里面没有虚拟串口的,另外,ID VBUS和SOF三个引脚没有接,而例程"VCP"里面这三个引脚都有接,所以.....第一个问题,这块板子的硬件能否实现虚拟串口的功能

这个工程是自己从零开始搭的,,主函数也很简单
int main(void)
{
        delay_init(168);
        printf("程序启动 ");
        sigui_sys_begin_1();
        printf("初始化1完毕 ");
        sigui_sys_begin_2();
        printf("初始化2完毕 ");

        USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb);//CDC类
       
        while(1)
        {
                delay_ms(20);
        }
}

两个初始化函数可以无视,,,没做和USB有关的事,printf函数是打印在Debug Viewer 里面的,没有占用串口

添加了
usbd_core.c
usbd_ioreq.c
usbd_req.c
usb_core.c
usb_dcd.c
usb_dcd_int.c
usb_cdc_core.c
没做改动

然后编写了
usb_bsp.c
usbd_usr.c
usbd_cdc_vcp.c
usbd_desc.c
这个过程是参照那个读卡器程序修改的,
相较于读卡器程序,
usb_bsp.c和读卡器程序差不多
usbd_usr.c里面除了输出调试信息其他没有做事
usbd_cdc_vcp.c里有一些程序(但实际上根本没执行到里面,所以先不说)
usbd_desc.c用的是例程"VCP"里完整复制下来的,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
最后还添加了中断函数
void OTG_FS_WKUP_IRQHandler(void)//代码先不贴
extern uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev);
void OTG_FS_IRQHandler(void)
{
        printf("USB中断");
  USBD_OTG_ISR_Handler (&USB_OTG_dev);
}       




结果, 输出调试信息 输出调试信息
里面可以看到,
先执行了usb_bsp.c 下的USB_OTG_BSP_Init函数,里面配了PA11 12 15三个引脚
然后是usbd_usr.c 下的USBD_USR_Init ,这个函数没做任何事
然后执行了usb_bsp.c 下的USB_OTG_BSP_EnableInterrupt,配置NVIC
之后马上执行了一次OTG_FS_IRQHandler中断
之后是usbd_usr.c 下的USBD_USR_DeviceConnected 以及 USBD_USR_DeviceReset
接着就是不断的中断,,,,最后进入挂起状态,,,,

电脑上能看到是一个串口,也能读出设备描述符,,,但是没用,




不知道有谁能看出哪里?出现什么问题么?或者给一点指点,我再顺着方向找找
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。