This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C123GH6PM:SW1按钮中断

Guru**** 2350610 points
Other Parts Discussed in Thread: EK-TM4C123GXL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/620312/ccs-tm4c123gh6pm-sw1-button-interrupt

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

工具/软件:Code Composer Studio

您好!

我尝试在按下 SW1 (PF4)时生成中断、但它似乎不起作用、我不知道我做了什么错误... 以下是 main.c 中的代码:

int main(){
sysctl->RCGCGPIO |=(1U <<5);//启用 GPIOF GPIOF 运行模式*/
SYSCTL->GPIOHBCTL |=(1U <<5);//为 GPIOF 启用 AHB *
GPIOF_AHB->DIR |=(LED_RED | LED_BLUE | LED_GREEN);
GPIOF_AHB->LOCK = 0x4C4F434B;
GPIOF_AHB->CR = 0xFF;
GPIOF_AHB->DEN |=(SW2 | LED_RED | LED_BLUE | LED_GREEN | SW1);
GPIOF_AHB->PUR |=(SW2 | SW1);

GPIOF_AHB->IS &=~(SW1);// SW1的边沿检测
GPIOF_AHB->IBE &=~(SW1);//只有一个边沿生成中断(设置为 IEV)
GPIOF_AHB->IEV |= SW1;//上升沿触发中断

__ENABLE_IRQ();
while (1);
}

在另一个文件 bsp.c 中、我定义了函数 GPIOPortF_IRQHandler、该函数也在矢量表中:

void GPIOPortF_IRQHandler (void){
GPIOF_AHB->DATA_Bits [LED_RED]= LED_RED;
GPIOF_AHB->DATA_Bits [LED_GREEN]= LED_GREEN;
GPIOF_AHB->DATA_Bits [LED_blue]= LED_blue;
} 

当我按下按钮时、GPIORIS 寄存器正在改变、但不调用 GPIOPortF_IRQHandler 函数... 请问我在这里出了什么问题吗?