初始化,设置时钟--使能端口--设置输出
//设置系统时钟为50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
// 端口GPIO F使能,F0引脚解锁NMI功能
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); // 使能 GPIO F模块
// 设置GPIO方向
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); // PF0设置为输出
中断初始化
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); // PF4设置为输入
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);//设置GPIOPF4中断
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_INT_PIN_4); // 使能KEY所在管脚的中断
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3); // PA2设置为输入
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3, GPIO_LOW_LEVEL);//设置GPIOPF4中断
GPIOIntEnable(GPIO_PORTA_BASE, GPIO_INT_PIN_2|GPIO_INT_PIN_3); // 使能KEY所在管脚的中断
IntEnable(INT_GPIOF);// 使能GPIOF端口总中断
IntEnable(INT_GPIOA);// 使能GPIOF端口总中断
IntMasterEnable(); // 使能处理器总中断
中断处理子函数,需要在startup文件(启动文件)里自定义为EXTERN
EXTERN GPIO_PORTF_ISR
DCD GPIO_PORTF_ISR ; GPIO Port A
void GPIO_PORTF_ISR(void)//中断处理子函数,需要在startup文件里自定义为EXTERN
{
unsigned char ucVal;
unsigned long ulStatus;//中断状态标识
ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 读取中断状态
GPIOIntClear(GPIO_PORTF_BASE, GPIO_INT_PIN_4); // 清除中断状态,重要
switch (ulStatus) // 如果KEY的中断状态有效
{
case 0x10:
ucVal = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_1); // 翻转LED
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1, ~ucVal);//~表示取反
SysCtlDelay(1000); // 延时,消除按键抖动
while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起
SysCtlDelay(1000); // 延时,消除松键抖动
break;
}
}
串口通信
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); //串口外设使能
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); //GPIO端口使能
GPIOPinConfigure(GPIO_PA0_U0RX);//串口所用的GPIO引脚配置
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));//配置UART 参数
UARTCharPut(UART0_BASE, '!');//发送‘!’字符
cThisChar=UARTCharGet(UART0_BASE);//将串口数据存储到cThisChar变量中