【发布时间】:2011-10-24 22:14:17
【问题描述】:
当我按下 PF8 按钮时,我希望 blackfin 进入 ISR 并且计数器增加 1。 我应该清除或设置一个表明处理器已进入ISR的位,但我不知道如何清除它。
我的处理器是BF533。
这是我的代码:
// 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
}
【问题讨论】:
-
您的格式已损坏,请修复它 - 使用
{}按钮并检查预览。此外,您还没有说明为什么您必须设置或清除位,这是由大多数系统上的编译器或处理器自动完成的。 -
@Kevin Vermeer 下次我会注意格式。但是编译器没有做任何事情。
-
请使用问题上的“编辑”按钮这次修复它。当其他人遇到同样的问题并来到这里时,他们将受益于格式正确的内容。