⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_endp.c

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 C
字号:
/******************************************************************************
* 文件名          : usb_endp.c
* 功能描述        : 端点数据交换处理程序,同步数据传输管理
*STM32F107xx处理器使用双缓存来管理同步数据传输,为了从PMA中把接收到的数据复制到
*Stream_Buffer中,需要管理两个PMA缓存(ENDP1_BUF0Addr和ENDP1_BUF1Addr)之间数据
*的交换,通过EP1_OUT_Callback()函数来实现。In_Data_Offset全局变更用来指示更新接
*收并复制到数据缓存中的字节数。
*******************************************************************************/

/* 头文件 ------------------------------------------------------------------*/
#include "usb_lib.h"
#include "usb_istr.h"

u8 Stream_Buff[24];/*数据缓存*/
u16 In_Data_Offset;/*全局变量,用于更新为接收并被复制进数据缓存的字节数*/

/*******************************************************************************
* 函数  : EP1_OUT_Callback
* 功能描述     : 端点1数据操作函数,用于PMA数据交换。
* 输入         : 无.
* 输出         : 无.
* 返回         : 无.
*******************************************************************************/
void EP1_OUT_Callback(void)
{
  u16 Data_Len;       /* 数据长度*/
  if (GetENDPOINT(ENDP1) & EP_DTOG_TX)
  {
    /*读PMA缓存1--ENDP1_BUF0Addr buffer*/
    Data_Len = GetEPDblBuf0Count(ENDP1);
    PMAToUserBufferCopy(Stream_Buff, ENDP1_BUF0Addr, Data_Len);
  }
  else
  {
    /*读PMA缓存2--ENDP1_BUF1Addr buffer*/
    Data_Len = GetEPDblBuf1Count(ENDP1);
    PMAToUserBufferCopy(Stream_Buff, ENDP1_BUF1Addr, Data_Len);
  }
  FreeUserBuffer(ENDP1, EP_DBUF_OUT);
  In_Data_Offset += Data_Len;
} 

/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -