打印
[ZLG-ARM]

关于USB编程_函数指针数组(标准设备请求)

[复制链接]
1177|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lintron|  楼主 | 2007-4-18 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    使用了d12软件包,改成前后台系统.
    由于原来的系统是采用汇编写的,调用D12软件包的时候,函数指针数组(标准设备请求)编译连接以后地址一直错误,导致程序无法运行.
    最后没办法只好用IF() ELSE () 语句完成,工作正常.
    奇怪的是用SWITCH CASE也不正常.

        req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
    if (type == USB_STANDARD_REQUEST)
        //(*StandardDeviceRequest[req])();        //标准请求处理 //使用汇编模板一直不通过,主要是函数指针数组的值一直不对,采用以下方法实现.

        {                                                            if (req==0) get_status();
    if (req==1) clear_feature();
    if (req==2) reserved();
    if (req==3) set_feature();
    if (req==4) reserved();
        if (req==5) set_address();
        if (req==6) get_descriptor();
        if (req==7) reserved();
    if (req==8) get_configuration();
    if (req==9) set_configuration();
    if (req==10) get_interface();
    if (req==11) set_interface();
        if (req==12) reserved();
    if (req==13) reserved();
    if (req==14) reserved();
    if (req==15) reserved();

/*
switch (req) {
case 0 : get_status();
case 1 : clear_feature();
case 3 : set_feature();
case 5 : set_address();
case 6 : get_descriptor();
case 8 : get_configuration();
case 9 : set_configuration();
case 10: get_interface();
case 11: set_interface();
default: reserved();
      }
*/ //采用SWITCH不通过,没发现为什么,暂时使用IF语句.

请高手有空帮我分析一下...

    

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

1

粉丝