打印
[Cortex-M0技术交流]

IO中断函数判断出错

[复制链接]
1802|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
iam80|  楼主 | 2011-10-13 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我设置了PA13、14、15,分别为上升沿、下降沿、上升沿。,只有上升沿能中断,下降沿不行。请问我该在IO中断函数里怎样判断是哪个口产生了中断,并且是上升沿中断还是下降沿中断。谢谢!(以下是我做的判断)
void GPABCallback(uint32_t GPAStatus, uint32_t GPBStatus)
{
   outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 7));
   if(0x2000 == (GPAStatus & 0x2000))//GPA13  Rising
   {
   DrvGPIO_ClrBit(E_GPB, 4);
   DrvSYS_Delayms(200);
   }
  if(0 == (GPAStatus & 0x4000))//GPA14 Falling
   {
   DrvGPIO_ClrBit(E_GPB, 4);
   DrvSYS_Delayms(200);
   }
   if(0x8000 == (GPAStatus & 0x8000)) //GPA15 Rising
   {
   DrvGPIO_ClrBit(E_GPB, 4);
   DrvSYS_Delayms(200);   
   }
}
                        
void GPCDCallback(uint32_t GPCStatus, uint32_t GPDStatus)
{
   outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 7));
}

相关帖子

沙发
lixiaoxu2meng| | 2011-10-14 08:10 | 只看该作者
if(0 == (GPAStatus & 0x4000))//GPA14 Falling
   {
   DrvGPIO_ClrBit(E_GPB, 4);
   DrvSYS_Delayms(200);
   }

改成
if(0x4000 == (GPAStatus & 0x4000))//GPA14 Falling
   {
   DrvGPIO_ClrBit(E_GPB, 4);
   DrvSYS_Delayms(200);
   }

使用特权

评论回复
板凳
iam80|  楼主 | 2011-10-14 09:03 | 只看该作者
明白了,谢谢!

使用特权

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

本版积分规则

0

主题

32

帖子

0

粉丝