USB STM32配置

STM32端点缓冲区

  1.      缓冲区描述表也存在USB_BTABLE中,所以端点缓冲区地址不是从0开始。
  2.      缓冲区地址8字节对齐

  

 

STM32 的USB中断状态寄存器 

IN端点事件

当IN端点成功执行操作后,USB_ISTR = 0x8004,

         表示端点4(EP_ID=4) 发送方向 (DIR=0)  正确传输了(CTR=1)

        及发送传输完成后的事件。

STM32的IN端点中断回调是数据上传到PC端成功的回调

 EPx_IN_Callback 表示数据发送成功了,IN数据要事先写入发送缓冲区

void EP4_IN_Callback(void)
{
    PrevXferComplete_ep4 = 1;
    pr_dbg("EP4_IN_Callback");
}

OUT端点事件

OUT成功执行后,USB_ISTR = 0x8014,

        表示端点4(EP_ID=4) 接收方向 (DIR=1)  正确传输了(CTR=1)

        及接收传输完成后的事件。

OUT端点接收数据回调 EPx_OUT_Callback

void EP4_OUT_Callback(void)
{
    uint8_t Receive_Buffer[400];
    int len = USB_SIL_Read(EP4_OUT, Receive_Buffer);
    pr_dbg("EP4_OUT_Callback %d",len);
    SetEPRxStatus(ENDP4, EP_RX_VALID);
}

取走数据后要使能端点接收EP_RX_VALID,否则就收不到数据了

总之

        IN和OUT都要事先准备好数据和状态,然后当主机取走数据或者主机发送完数据后,才会触发中断事件。不是通过中断来取走数据。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值