程序不断进入USBD_OTG_ISR_Handler中断下面的 DCD_HandleOutEP_ISR(pdev); 和 DCD_HandleInEP_ISR(pdev);中,不知什么原因。 此问题偶然出现,同样的数据我发送几十次甚至几百次会出现一次死机现象。不知道是不是我的接收处理问题,由于设备接收缓冲满时我会暂缓写 DCD_EP_PrepareRx(pdev, D_OUT_EP, (uint8_t*)(USB_Rx_Buffer), D_OUT_PACKET)函数,等接收缓冲有空间时才会进行DCD_EP_PrepareRx(pdev, D_OUT_EP, (uint8_t*)(USB_Rx_Buffer), D_OUT_PACKET)。不知道是不是这个原因引起的。但除了这个方法我不知怎么向发送端提示USB_BUSY,暂不接收数据的意思。谁知道我的问题出在什么地方?谢谢 |
stm32 USB的CDC类传输掉数据
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
第一个说明只要有数据,就会进入中断
第二个算是一种方法吧,有数据的时候屏蔽掉中断,读取完成在打开,如果怕丢数据,则在通信协议上想想办法,比如上位机在接受到下位机继续的指令之前,不会继续发送数据
评分
查看全部评分
谢谢。关闭中断我试过,但会出现丢数据的现象。DCD_EP_PrepareRx是不是代表该数据已经读出?
我偶然看到这么一句, USBD_GetRxCount 通过这个函数可以获取到DCD_EP_PrepareRx 传输的数据长度 DCD_EP_PrepareRx 只是把buf地址告诉otg库 数据不是立即返回 USBD_GetRxCount 读取的是上一次DCD_EP_PrepareRx 操作后 otg库拷贝到buf里的数据长度。串口清中断后下次再接收数据会不会再次进入中断。。是否对你有个帮助?
评分
查看全部评分
USB_OTG_GetEPStatus和USB_OTG_SetEPStatus不知道能否直接对端点是否忙进行控制