打印
[Cortex-M0技术交流]

IO中断问题

[复制链接]
2755|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
iam80|  楼主 | 2011-10-11 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IO, gp, pi, GPIO, ST
我用聂子测试IO的中断时(上升沿中断)不起作用,但是只要我将示波器的探头接上相应IO口后,再用聂子测试此时中断正常。请问这是什么原因造成的啊?
以下是原代码(PA14,15中断)
#include <stdio.h>
#include "NUC122.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
void SelectClk_12M(void) //External 22MHZ
{
SYSCLK->PWRCON.XTL12M_EN=1;
/* Waiting for 12M Xtal stable */
DrvSYS_Delay(5000); //us级延时函数
DrvSYS_SelectHCLKSource (0);    //选择时钟源                  
}
void GPABCallback(uint32_t GPAStatus, uint32_t GPBStatus)
{
   if(GPAStatus & 0x4000)
   {
      DrvGPIO_ClrBit(E_GPB,4);
      DrvSYS_Delayms(200);
   }
   else if(GPAStatus & 0x8000)
   {
      DrvGPIO_ClrBit(E_GPB,4);
      DrvSYS_Delayms(200);
   }
   outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 7));
}
         
void GPCDCallback(uint32_t GPCStatus, uint32_t GPDStatus)
{
   outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 7));
}
void Init_GPAInterrupt(void)
{
DrvGPIO_Open(E_GPA, 14, E_IO_INPUT);
DrvGPIO_EnableInt(E_GPA, 14, E_IO_RISING, E_MODE_EDGE);
DrvGPIO_SetIntCallback(GPABCallback, GPCDCallback);            
// DrvGPIO_SetDebounceTime(5, E_DBCLKSRC_HCLK);    //端口消抖设置
// DrvGPIO_EnableDebounce(E_GPA, 14);   
    //DrvGPIO_DisableInt(E_GPA, 14);  
DrvGPIO_Open(E_GPA, 15, E_IO_INPUT);
DrvGPIO_EnableInt(E_GPA, 15, E_IO_RISING, E_MODE_EDGE);
DrvGPIO_SetIntCallback(GPABCallback, GPCDCallback);            
// DrvGPIO_SetDebounceTime(5, E_DBCLKSRC_HCLK);    //端口消抖设置
// DrvGPIO_EnableDebounce(E_GPA, 15);   
    //DrvGPIO_DisableInt(E_GPA, 15);
}
int main(void)
{
    UNLOCKREG();
    SelectClk_12M();
    LOCKREG();
Init_GPAInterrupt();
while(1)
{DrvGPIO_SetBit(E_GPB, 4);}
}

相关帖子

沙发
iam80|  楼主 | 2011-10-12 13:37 | 只看该作者
搞定

使用特权

评论回复
板凳
lixiaoxu2meng| | 2011-10-12 14:36 | 只看该作者
软件问题还是硬件问题?

使用特权

评论回复
地板
iam80|  楼主 | 2011-11-1 14:18 | 只看该作者
忘了加上拉

使用特权

评论回复
5
hotpower| | 2011-11-1 14:23 | 只看该作者

使用特权

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

本版积分规则

0

主题

32

帖子

0

粉丝