LPC1788外部中断系统配置与应用

需积分: 35 7 下载量 50 浏览量 更新于2024-09-09 收藏 328KB DOC 举报
"LPC1788单片机关键配置" LPC1788单片机是一种基于Cortex-M3内核的微控制器,具有强大的外部中断能力和丰富的时钟控制功能。本文将详细介绍LPC1788单片机的外部中断配置和时钟控制,包括外部中断系统的配置、中断触发方式的设置、时钟控制寄存器的配置等。 **外部中断系统配置** LPC1788单片机的外部中断系统采用I/O复用的形式,需要对管脚进行配置,使其工作在外部中断输入的模式。在本例中,我们使用的是外部中断0,查阅数据手册,其GPIO管脚为P2_10。因此,我们需要设置IOCON_P2_10寄存器的FUNC字段,设置成001即为EINT0模式。 **中断触发方式的设置** 在配置完引脚后,还需要继续配置具体的中断功能。我们需要打开中断使能,设置ISER相应位;还要配置中断的触发方式如电平触发和边沿触发,相关寄存器为EXTMODE和EXTPOLAR。在本例中,我们配置EINT0的中断触发方式为低电平触发。 **时钟控制寄存器的配置** LPC1788单片机的时钟控制系统包括系统时钟、PLL时钟和外部时钟等。系统时钟是单片机的主时钟,PLL时钟是phase-locked loop时钟,外部时钟是外部时钟信号。在本例中,我们不需要配置时钟控制寄存器,因为我们的程序不需要使用时钟控制功能。 **中断处理函数** 在中断处理函数中,我们需要清零EXTINT寄存器中的相应位,以便于下一次中断的产生。在本例中,我们熄灭LED灯,以示中断处理函数的执行。 **主函数** 在主函数中,我们一直点亮LED灯,以示单片机的正常工作。在按下SW6按键时,LED灯熄灭,示中断处理函数的执行。 **代码实现** 以下是实现LPC1788单片机外部中断配置和时钟控制的代码: ```cpp #define rFIO1DIR (*(volatile unsigned*)0x20098020) #define rFIO1MASK (*(volatile unsigned*)0x20098030) #define rFIO1PIN (*(volatile unsigned*)0x20098034) #define rFIO1SET (*(volatile unsigned*)0x20098038) #define rFIO1CLR (*(volatile unsigned*)0x2009803c) int main() { // 配置EINT0的中断触发方式为低电平触发 EXTI->EXTMODE = (1 << 0); EXTI->EXT_POLAR = (1 << 0); // 打开中断使能 NVIC_EnableIRQ(EINT0_IRQn); while (1) { //一直点亮LED灯 rFIO1SET = (1 << 0); } } void EINT0_IRQHandler(void) { //熄灭LED灯 rFIO1CLR = (1 << 0); //清零EXTINT寄存器中的相应位 EXTI->EXTINT = (1 << 0); } ``` 本文详细介绍了LPC1788单片机的外部中断配置和时钟控制,包括外部中断系统的配置、中断触发方式的设置、时钟控制寄存器的配置等,为开发者提供了一个详细的参考。