5939|5

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm32usb程序求助 [复制链接]

各位高手,最近在研究stm32的usb程序,virtual com port 的DEMO程序usb_endp.c中有一段程序
void SOF_Callback(void)
{
  static uint32_t FrameCount = 0;
  
  if(bDeviceState == CONFIGURED)
  {
    if (FrameCount++ == VCOMPORT_IN_FRAME_INTERVAL)
    {
      /* Reset the frame counter */
      FrameCount = 0;
      
      /* Check the data to be sent through IN pipe */
      Handle_USBAsynchXfer();
    }
  }  
}
一直不太明白是做什么用的 ,请高手帮小弟解释一下,不胜感激
此帖出自stm32/stm8论坛

最新回复

                                   经你这么一指点,我明白了不少,真是太感谢你了!  详情 回复 发表于 2010-8-16 11:09
点赞 关注(1)
 

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
SOF是帧首,对于全速设备来说,每1毫秒有1个帧首信号,因此,每1毫秒会调用1次这个帧首中断回调函数。

在这里,这个中断用做定时,每1毫秒×VCOMPORT_IN_FRAME_INTERVAL的间隔时间,判断下是否有从USART收到的数据要通过USB发到主机。
此帖出自stm32/stm8论坛
 
 

回复

17

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


哦,原来如此,usb协议里说的帧是这么用的,呵呵!不好意思再问一下EP1_IN_Callback,EP3_OUT_Callback这两个回调函数是怎么进去的,我怎么没找到程序中获得端点号的地方!!!
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
2# vigia  

哦,原来如此,usb协议里说的帧是这么用的,呵呵!不好意思再问一下EP1_IN_Callback,EP3_OUT_Callback这两个回调函数是怎么进去的,我怎么没找到程序中获得端点号的地方!!! ...
USB_LP_CAN1_RX0_IRQHandler(USB中断) -> USB_Istr(中断处理函数) -> CTR_LP(CTR正确的传输中断):
根据IN/OUT的方向分别调用:
(*pEpInt_OUT[EPindex-1])();

(*pEpInt_IN[EPindex-1])();
EPindex-1指示端点号。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
中断中调用的两个回调函数数组定义:
void (*pEpInt_IN[7])(void) =
  {
    EP1_IN_Callback,
    EP2_IN_Callback,
    EP3_IN_Callback,
    EP4_IN_Callback,
    EP5_IN_Callback,
    EP6_IN_Callback,
    EP7_IN_Callback,
  };

void (*pEpInt_OUT[7])(void) =
  {
    EP1_OUT_Callback,
    EP2_OUT_Callback,
    EP3_OUT_Callback,
    EP4_OUT_Callback,
    EP5_OUT_Callback,
    EP6_OUT_Callback,
    EP7_OUT_Callback,
  };
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 


经你这么一指点,我明白了不少,真是太感谢你了!
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表