📄 gpio_int.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name: GPIO_INT.c
** Last modified Date: 2007-09-20
** Last Version: v1.0
** Description: Stellaris系列单片机GPIO口中断操作
**
**--------------------------------------------------------------------------------------------------------
** Created By: Zhou Hai Xin
** Created date: 2007-09-20
** Version: v1.0
** Descriptions: 程序正常运行时,熄灭LED指示灯。当按键按下时,进入中断,点亮LED指示
** 灯。按键放开后,又熄灭LED指示灯。
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "sysctl.h"
#include "systick.h"
#include "gpio.h"
#include "interrupt.h"
#define KEY1 GPIO_PIN_2 /* 定义KEY1 */
#define LED3 GPIO_PIN_6 /* 定义LED3 */
/*********************************************************************************************************
** 函数原形:void GPIO_Port_E_ISR(void)
** 功能描述:首先清除中断标志,再点亮LED3。
** 说明: 用KEIL软件时,在Startup.S中添加该中断函数名
** 参数说明:无
** 返回值: 无
*********************************************************************************************************/
void GPIO_Port_E_ISR(void)
{
GPIOPinIntClear(GPIO_PORTE_BASE, KEY1); /* 清除中断标志 */
GPIOPinWrite(GPIO_PORTB_BASE, LED3, ~LED3); /* 点亮LED3 */
}
/*********************************************************************************************************
** 函数原形:int main(void)
** 功能描述:熄灭LED3,并等待按键的中断。
** 参数说明:无
** 返回值: 0
*********************************************************************************************************/
int main(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); /* 使能GPIO PB口 */
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); /* 使能GPIO PE口 */
GPIODirModeSet(GPIO_PORTE_BASE, KEY1, GPIO_DIR_MODE_IN); /* 设置连接KEY1的PE2为输入 */
GPIODirModeSet(GPIO_PORTB_BASE, LED3, GPIO_DIR_MODE_OUT); /* 设置连接LED3的PB6为输出 */
GPIOPadConfigSet(GPIO_PORTE_BASE, KEY1, /* 设置KEY1的驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTB_BASE, LED3, /* 设置LED3的驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOIntTypeSet(GPIO_PORTE_BASE, KEY1, GPIO_LOW_LEVEL); /*设置KEY1中断的触发方式为低电平触
发 */
GPIOPinIntEnable(GPIO_PORTE_BASE, KEY1); /* 使能KEY1中断 */
IntEnable(INT_GPIOE); /* 使能GPIO PE 口中断 */
while (1) {
GPIOPinWrite(GPIO_PORTB_BASE, LED3, LED3); /* 熄灭LED3 */
}
/* return 0; */
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -