@floatsd
2016-01-02T09:25:22.000000Z
字数 2391
阅读 1108
CM4实验报告
- 了解单片机里中断的概念。
- 懂得声明中断向量,中断函数,改变中断优先级,最终学会使用中断。

"interrupt.h"。
/******************************************************************** 函数: Handler_Init()* 描述: 开启中断* 输入值:无* 返回值:无*****************************************************************/void Handler_Init(){SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOD);//矩阵按键第四行SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);GPIOPinTypeGPIOInput(GPIO_PORTD_BASE,GPIO_PIN_0);GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_0,GPIO_LOW_LEVEL);GPIOIntEnable(GPIO_PORTD_BASE,GPIO_INT_PIN_0);//定时器SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);TimerConfigure(TIMER0_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODIC);TimerIntEnable(TIMER0_BASE, TIMER_TIMB_TIMEOUT);TimerEnable(TIMER0_BASE, TIMER_B);TimerLoadSet(TIMER0_BASE, TIMER_B, sysClock_Fr/2000 );//优先级设置,如下所示,优先级越高数字上越小IntPrioritySet(INT_GPIOD,0x20);IntPrioritySet(INT_TIMER0B,0x00);IntEnable(INT_GPIOD); //开启相应中断向量/*3.开启总中断*/IntMasterEnable();}
/******************************************************************** 函数: GPIOD_Handler()* 描述: 矩阵按键第四行的中断函数* 输入值:无* 返回值:无*****************************************************************/void GPIOD_Handler(){uint32_t Status;Status=GPIOIntStatus(GPIO_PORTD_BASE,true);if(Status==GPIO_INT_PIN_0){ledclose();//ledon(0);}GPIOIntClear(GPIO_PORTD_BASE,Status);}
/******************************************************************** 函数: GPIOD_Handler()* 描述: 利用Timer实现一毫秒扫描一次键盘减轻cpu负担* 输入值:无* 返回值:无*****************************************************************/void Timer_Handler(){unsigned long status;status=TimerIntStatus(TIMER0_BASE,true);if(status==TIMER_TIMB_TIMEOUT){counter++;if(counter==10){counter=1;switch(Row_Scan()){case 0:{LED_ON(1);Delay(24); break;}case 1:{LED_ON(2);Delay(24); break;}case 2:{LED_ON(3);Delay(24); break;}case 3:{LED_ON(4);Delay(24); break;}default:ledclose(); break;}}TimerIntClear(TIMER0_BASE, TIMER_TIMB_TIMEOUT);}}