[Cortex-M0技术交流] IO中断函数判断出错

[复制链接]
2567|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

粉丝
快速回复 在线客服 返回列表 返回顶部