欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4486|回復: 0
收起左側

stm32f103 usb庫函數的一點見解

[復制鏈接]
ID:105323 發表于 2016-2-21 15:45 | 顯示全部樓層 |閱讀模式
在stm32f103 usbcdc庫函數中有這樣一段代碼:​
void SOF_Callback(void)
{
       static uint32_t FrameCount = 0;
        if(bDeviceState == CONFIGURED)
       {
              if (FrameCount++ == VCOMPORT_IN_FRAME_INTERVAL)
              {

                  FrameCount = 0;

                    EP1_IN_Callback();
                   //Handle_USBAsynchXfer();
               }
       }
}​
SOF,其實是START OFFRAME的簡寫,就是幀首的意思,全速設備,主機5ms會發送一次,當然這個5ms并不是固定的,與你的描述符有關:例如,我的描述符定義如下:​
const uint8_t Virtual_Com_Port_ConfigDescriptor[] =
{
0x09,
USB_CONFIGURATION_DESCRIPTOR_TYPE,
VIRTUAL_COM_PORT_SIZ_CONFIG_DESC,
0x00,
0x02,
0x01,
0x00,
0xC0,
0x32,
0x09,
USB_INTERFACE_DESCRIPTOR_TYPE,
0x00,
0x00,
0x01,
0x02,
0x02,
0x01,
0x00,
0x05,
0x24,
0x00,
0x10,
0x01,
0x05,
0x24,
0x01,
0x00,
0x01,
0x04,
0x24,
0x02,
0x02,
0x05,
0x24,
0x06,
0x00,
0x01,
0x07,
USB_ENDPOINT_DESCRIPTOR_TYPE,
0x82,
0x03,
VIRTUAL_COM_PORT_INT_SIZE,
0x00,
0xFF,
0x09,
USB_INTERFACE_DESCRIPTOR_TYPE,
0x01,
0x00,
0x02,
0x0A,
0x00,
0x00,
0x00,
0x07,
USB_ENDPOINT_DESCRIPTOR_TYPE,
0x03,
0x02,
VIRTUAL_COM_PORT_DATA_SIZE,
0x00,
0x00,
0x07,
USB_ENDPOINT_DESCRIPTOR_TYPE,
0x81,
0x02,
VIRTUAL_COM_PORT_DATA_SIZE,
0x00,
0x00
};​
就是配置描述符里紅色字體部分,這個確定了主機每次發送SOF幀的間隔時間,所以我們在使用usb往主機上推送數據時,可以直接調用這個函數:​
EP1_IN_Callback();在EP1_IN_Callback()函數里寫入響應的代碼,另外一種就是調用
下面這個函數直接發送
void usb_SendBuf(uint8_t *_pTxBuf, uint8_t _ucLen)
{
     UserToPMABufferCopy(_pTxBuf, ENDP1_TXADDR, _ucLen);
     SetEPTxCount(ENDP1, _ucLen);
      SetEPTxValid(ENDP1);
}​
這是開發過程中的一點見解,如果有什么問題,請及時聯系!

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表