#include "hw_types.h"<br />#include "hw_memmap.h"<br />#include "hw_ints.h"<br />#include "hw_sysctl.h"<br />#include "hw_gpio.h"<br />#include "src/interrupt.h"<br />#include "src/sysctl.h"<br />#include "src/gpio.h"<br /><br />#define SysCtlPeriEn SysCtlPeripheralEnable<br />#define GPIOPinTypeIn GPIOPinTypeGPIOInput<br />#define GPIOPinTypeOut GPIOPinTypeGPIOOutput<br />#define GPIOPinIntEn GPIOPinIntEnable<br />#define GPIOPinIntClr GPIOPinIntClear<br />#define IntMasterEn IntMasterEnable<br />#define IntPriSet IntPrioritySet<br /><br />#define KEY1 GPIO_PORTA_BASE, GPIO_PIN_2<br />#define LED1 GPIO_PORTA_BASE, GPIO_PIN_3<br />#define KEY2 GPIO_PORTB_BASE, GPIO_PIN_2<br />#define LED2 GPIO_PORTB_BASE, GPIO_PIN_3<br /><br />void timeDelay (unsigned long ulVal)<br />{<br /> do {<br /> } while ( --ulVal != 0 );<br />}<br /><br />int main (void)<br />{<br /> timeDelay(1500000L); // 开机延迟<br /><br /> SysCtlPeriEn(SYSCTL_PERIPH_GPIOA); // 使能GPIOA端口<br /> SysCtlPeriEn(SYSCTL_PERIPH_GPIOB); // 使能GPIOB端口<br /><br /> GPIOPinTypeIn(KEY1); // 设置KEY1所在管脚为输入模式<br /> GPIOPinTypeOut(LED1); // 设置LED1所在管脚为输出模式<br /> GPIOPinTypeIn(KEY2); // 设置KEY2所在管脚为输入模式<br /> GPIOPinTypeOut(LED2); // 设置LED2所在管脚为输出模式<br /><br /> GPIOPinWrite(LED1, 0x08); // 熄灭LED1<br /> GPIOPinWrite(LED2, 0x08); // 熄灭LED2<br /><br /> GPIOIntTypeSet(KEY1, GPIO_LOW_LEVEL); // 设置KEY1所在管脚为低电平触发中断<br /> GPIOIntTypeSet(KEY2, GPIO_LOW_LEVEL); // 设置KEY2所在管脚为低电平触发中断<br /><br /> IntPriSet(INT_GPIOA, (1 << 5)); // 设置KEY1所在的GPIOA中断优先级为1<br /> IntPriSet(INT_GPIOB, (2 << 5)); // 设置KEY2所在的GPIOB中断优先级为2<br /><br /> GPIOPinIntEn(KEY1); // 使能KEY1所在管脚的中断<br /> GPIOPinIntEn(KEY2); // 使能KEY2所在管脚的中断<br /> IntEnable(INT_GPIOA); // 使能GPIOA总中断<br /> IntEnable(INT_GPIOB); // 使能GPIOB总中断<br /> IntMasterEn( ); // 使能处理器中断<br /><br /> for (;;) { // 死循环,等待按键中断的产生<br /> }<br />}<br /><br />// GPIOA的中断服务函数<br />void GPIO_Port_A_ISR (void)<br />{<br /> GPIOPinIntClr(KEY1); // 清除LEY1中断<br /> GPIOPinWrite(LED1, 0x00); // 点亮LED1<br /> for (;;) { // 死循环,不退出中断服务函数<br /> }<br />}<br /><br />// GPIOB的中断服务函数<br />void GPIO_Port_B_ISR (void)<br />{<br /> GPIOPinIntClr(KEY2); // 清除LEY2中断<br /> GPIOPinWrite(LED2, 0x00); // 点亮LED2<br /> for (;;) { // 死循环,不退出中断服务函数<br /> }<br />}<br /><br />(zlgmcu_wdx)
|