首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADI BF533可编程标志中断

ADI BF533可编程标志中断
EN

Stack Overflow用户
提问于 2011-10-25 06:14:18
回答 1查看 288关注 0票数 1

当我按下PF8按钮时,我想让blackfin进入ISR,计数器增加1。我应该清除或设置一个位,表示处理器已进入ISR,但我不知道如何清除它。

我的处理器是BF533。

下面是我的代码:

代码语言:javascript
复制
    // prototype
EX_INTERRUPT_HANDLER(FlagA_ISR);

volatile int count = 0;

void main(void)
{

     // Register FlagA ISR to interrupt vector group 12
     register_handler(ik_ivg12, FlagA_ISR);

     // set direction of programmable flag PF8 to input
     *pFIO_DIR &= ~PF8;
     ssync();

     // interrupt enable PF8
     *pFIO_INEN |= PF8;
     ssync();     

     // give interrupt when FIO_FLAG_D PF8 changes
     *pFIO_MASKA_D |= PF8;
     ssync();


     // Bind FlagA interrupt to IVG12
     *pSIC_IAR2 |= 0x00005000; // flag A IVG12
     ssync();


     // Enable PFA in system interrupt mask register
     *pSIC_IMASK = 0x00080000;
     ssync();

     // enable IVG12 in core interrupt mask register
     *pIMASK |= 0x00001000;
     ssync();

     // wait for interrupt
     while(count < 5);
        printf("5 interrupts received");
}

EX_INTERRUPT_HANDLER(FlagA_ISR)
{     
     count++;

     // Needed to clear or set a bit to indicate that the processor has entered the ISR
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-26 00:42:25

我刚刚想出了如何解决这个问题。

PFx连接到FIO_FLAG。我们可以通过清除FIO_FLAG来清除中断状态。

代码如下:

代码语言:javascript
复制
*pFIO_FLAG_D &= ~PF8;
ssync();
//or, you can try:
*pFIO_FLAG_C |= PF8; 
ssync();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7882608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档