2889|5

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教在PXA270中添加一个中断服务程序的方法!!! [复制链接]

我需要在BSP中加一个中断,中断引脚是GPIO36
BSP是WINCE42下的,也就是静态申请中断的那种

我的步骤:
1、在OALINTR.H中我加了#define SYSINTR_WIFI  (SYSINTR_FIRMWARE+19)

2、cfwBvd1.c中我分别在OEMInterruptEnable、OEMInterruptDisable、OEMInterruptDone
加了对应的   case SYSINTR_WIFI: ....
3、bvdisrs.c中我加了int SPI_WifiISR(unsigned int ra)函数,并return SYSINTR_WIFI;
4、ISRdefs.h中我注册了这个中断服务int SPI_WifiISR(unsigned int);
5、intbvd1.c中pFunc pIRQISR[MaxNumISRs] =
中我添加了这个中断服务函数SPI_WifiISR
6、由于多加了一个,MaxNumISRs的定义由34改为35

问题:
1、GPIO36怎么能被用做中断?
   在SPEC中:GPIO36的 IN: function1 :FFDCD       function2:sspsclk2     function3:KP_MKIN<7>
                      OUT:function1 :USB_P2_4    function2:sspsclk2     function3:NONE
   请问怎么能确定一个GPIO是否可用于中断?
2、#define SYSINTR_WIFI  (SYSINTR_FIRMWARE+19)请问这个中断号定义是否有要求需要跟芯片资料上定义一致
   我理解只要不重复、不超过64就可以
3、OEMInterruptEnable中:   
             case SYSINTR_WIFI:                          //OEMInterruptEnable
             INTC_WIFISPI_INT_EN(v_pICReg->icmr);
             break;
    OEMInterruptDisable中:
             case SYSINTR_WIFI:        //OEMInterruptDisable
             INTC_WIFISPI_INT_DIS(v_pICReg->icmr);
             break;
    OEMInterruptDone中:
             case SYSINTR_WIFI:       //OEMInterruptDone
             v_pGPIOReg->GPDR1 &= ~(0x01<<(36 % 32)) ;       //input
            v_pGPIOReg->GAFR1_L &=~(3u<<4) ;                //AF22 General I/O
             v_pGPIOReg->GFER1 |= (0x01<<(36 % 32)) ;        //enable detecting  falling edge
            v_pGPIOReg->GEDR1 |= (0x01<<(36 % 32));
            break;
4、int SPI_WifiISR(unsigned int ra)
   {
        volatile XLLP_GPIO_T        *v_pGPIOReg;
        v_pGPIOReg = (volatile XLLP_GPIO_T *)GPIO_BASE_U_VIRTUAL;
         if( v_pGPIOReg->GEDR1 & (0x01<<(36 % 32)) )                                        // GPIO36 wifi
         {   
                v_pGPIOReg->GFER1 &= ~(0x01<<(36 % 32));
           v_pGPIOReg->GRER1 &= ~(0x01<<(36 % 32));
                 //clear interrupt bit
            v_pGPIOReg->GEDR1 |= (0x01<<(36 % 32)) ;
              RETAILMSG(1,(TEXT("--------------SYSINTR_WIFI Interrupt----------\r\n")));
           return SYSINTR_WIFI;       
          }
   }  这个应该是中断服务程序吧??请问这个跟3中的OEMInterruptDone有什么关系呢?SPI_WifiISR的作用就是初始化
     中断引脚的寄存器吧?
5、MaxNumISRs的定义由34改为35,这个没有限制吧??

6、中断引脚在哪进行最早的初始化设置的呢?才能由SPI_WifiISR检测到中断?
谢谢各位!
   

最新回复

帮顶~ 看起来没什么问题阿,除非这个GPIO36不能作为中断,或者没有配置对!  详情 回复 发表于 2009-6-19 14:36
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶.
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
帮顶!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
帮顶!
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
帮顶!
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
帮顶~
看起来没什么问题阿,除非这个GPIO36不能作为中断,或者没有配置对!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表