2.1.2 GPIO
2.1.2GPIO 一、配置 1.1 方向配置( FIOxDIR ) 方向配置只有在管脚被配置成 GPIO 功能时有效,当管脚被配置成其他功能时,方向配置不被接受 P0.29 和 P0.30 管脚共享 USB 数据线,必须被配置成相同方向! 1.2 输出置位( FIOxSET ) 只有在 GPIO 功能,方向
2.1.2 GPIO
一、配置
1.1 方向配置(FIOxDIR)
方向配置只有在管脚被配置成GPIO功能时有效,当管脚被配置成其他功能时,方向配置不被接受
P0.29和P0.30管脚共享USB数据线,必须被配置成相同方向!
1.2 输出置位(FIOxSET)
只有在GPIO功能,方向输出时有效。写1将对应管脚输出为1,写0无效。
1.3 输出 清零(FIOxCLR)
只有在GPIO功能,方向输出时有效,写1将对应管脚输出为0,写0无效。
1.4 管脚值(FIOxPIN)
该寄存器无论管脚配置成任何功能(模拟功能除外)或任何方向时均可被读写。
1.5 端口掩码(FIOxMASK)
与上述其他寄存器配合,对端口特定管脚操作。写0允许操作,写1无效。
二、GPIO中断
只有P0口和P2口的管脚能生成GPIO中断,GPIO中断与外部中断3共享同一个中断源。
GPIO中断可以被配置成下降沿触发、上升沿触发或双沿触发,不允许电平触发。
当使用GPIO中断时,相应管脚要配置成GPIO功能,方向输入。
2.1 初始化配置
1. 配置GPIO功能,方向输入
2. 配置同时使能触发方式(上升沿、下降沿还是双沿触发)
3. 使能NVIC的外部中断3
代码如下:
void Board_Key_Init(void) { // GPIO中断需要配置GPIO管脚方向为输入 Chip_GPIO_SetPinDIRInput(LPC_GPIO, KEY_PORT_NUM, KEY1_BIT_NUM); Chip_GPIO_SetPinDIRInput(LPC_GPIO, KEY_PORT_NUM, KEY2_BIT_NUM); // 配置下降沿中断 Chip_GPIOINT_SetIntFalling(LPC_GPIOINT, KEY_INT_PORT, (1
2.2 使用
中断服务程序使用外部中断3的服务程序。可以先读取IOIntStatus判断哪个端口有中断到来,然后读取IOxIntStatR判断哪个管脚触发了中断。然后执行相应的中断服务程序。最后清除GPIO中断标志位。
代码如下:
void EINT3_IRQHandler(void) { uint32_t status = 0; // TODO: 按键消抖 // 判断中断端口 //if(Chip_GPIOINT_IsIntPending(LPC_GPIOINT,KEY_INT_PORT)) { // 读取下降沿中断状态 status = Chip_GPIOINT_GetStatusFalling(LPC_GPIOINT, KEY_INT_PORT); if(status & (1
推荐阅读
-
Linux中gpio接口的使用方法示例
-
STM32LED灯闪烁、流水灯、驱动蜂鸣器(使用寄存器操作,对GPIO引脚进行初始化)
-
树莓派养成之路 ——GPIO控制
-
基于OMAPL138的Linux字符驱动_GPIO驱动AD9833(二)之cdev与read、write
-
NUC972 添加LED驱动 leds_gpio 方式
-
嵌入式Linux-JZ2440-02课 GPIO口实验
-
[5]STM32按键输入实验-GPIO做输入
-
impala-2.1.2-CDH5.3.2
-
视频图文教学 - 用最快的速度把 DotNet Core Blazor 程序安装到 树莓派中 并且用网页控制 GPIO 闪灯
-
【STM32Cube_02】使用GPIO点亮一个LED灯