当前位置:文档之家› 第六章资料

第六章资料

LPC_GPIO1->DIR |= (1<<0); // 把P1.0设置为输出引脚 LPC_GPIO1->DATA |= (1<<0); // 把P1.0设置为高电平 LPC_GPIO1->DIR |= (1<<1); // 把P1.1设置为输出引脚 LPC_GPIO1->DATA |= (1<<1); // 把P1.1设置为高电平
使能NVIC中断控制寄存器中相应位 禁止一个具体设备外部中断
将某个中断或异常 清除外部中断悬起位 获取中断悬起状态 设置中断优先级 获取中断优先级 初始化一个系统复位,请求复位MCU
6.5 外部中断实例
• 电路图
• 代码说明
/*********************************************************/ #include "LPC11XX.H" #define LED1_ON() (LPC_GPIO1->DATA &= ~(1<<0)) #define LED1_OFF() (LPC_GPIO1->DATA |= (1<<0)) #define LED2_ON() (LPC_GPIO1->DATA &= ~(1<<1)) #define LED2_OFF() (LPC_GPIO1->DATA |= (1<<1))
位 11:0 31:12 符号 CLR 访问 值 W 0 无影响 1 清除PIOn_x上的边沿检测逻辑 保留 描述(n = 0~3,x = 0~11)
6.3.4 GPIO中断设置
LPC1100 系列 Cortex-M0 微控制器的所有端口均具有中断功能, 当引脚电平变化符合设置值时,就会触发中断。
LPC1114中断源表
异常编号 功能 标志
21
UART
Rx 线状态(RLS) 发送保持寄存器空(THRE) Rx 数据可用(RDA) 字符超时指示(CTI) Modem 控制改变 自动波特率结束(ABEO) 自动波特率超时(ABTO) 保留
23:22
-
LPC1114中断源表
异常编号 24 25 26 27 功能 ADC WDT BOD A/D转换器结束转换 看门狗中断(WDINT) Brown-out检测 保留 标志
6.3.3 GPIO中断寄存器
GPIO 在使用作中断端口时有 7 个专门的中断寄存 器。下面将分别进行详细介绍。
6.3.3 GPIO中断寄存器
1. GPIO中断触发寄存器 GPIO 中断触发寄存器 GPIOnIS ,用于设置中断触发模式。每一 个GPIO对应一个寄存器,可以分别设置每一位GPIO的中断触发模 式。
位 11:0 31:12 符号 访问 值 0 1 描述(n = 0~3,x = 0~11) 管脚PIOn_x上的中断被屏蔽 管脚PIOn_x上的中断不被屏蔽 保留
MASK R/W -
6.3.3 GPIO中断寄存器
5. GPIO原始中断状态寄存器 GPIO原始中断状态寄存器GPIOnIRS,用于读取屏蔽之前的中断状 态。 GPIOnIRS 寄存器的某一位读出为 1 时反映了对应管脚上的原始 (屏蔽之前)中断状态,表示在触发 GPIOIE 之前所有的要求都满足。 该位读出为0时,表示对应的输入管脚还未启动中断。
位 11:0 31:12 符号 访问 值 IBE R/W 0 1 描述(n = 0~3,x = 0~11) 通过寄存器GPIOnIEV控制管脚PIOn_x上的中断 模式 管脚PIOn_x上双边沿触发中断 保留
6.3.3 GPIO中断寄存器
3. GPIO中断事件寄存器 GPIO中断事件寄存器GPIOnIEV,用于设置中断触发事件模式。 如果GPIOnIS设置为边沿触发,则本寄存器可以设置中断为上升沿 还是下降沿触发;如果GPIOnIS设置为电平触发,则本寄存器可以 设置中断为低电平触发还是高电平触发。
• 代码说明
/********************************************************* * FunctionName : LEDInit() * Description : LED初始化函数 * EntryParameter : None * ReturnValue : None *********************************************************/ void LEDInit() { LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟 LPC_IOCON->R_PIO1_0 &= ~0x07; LPC_IOCON->R_PIO1_0 |= 0x01; //把P1.0脚设置为GPIO LPC_IOCON->R_PIO1_1 &= ~0x07; LPC_IOCON->R_PIO1_1 |= 0x01; //把P1.1脚设置为GPIO LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟
位 11:0 31:12 符号 访问 值 0 IEV R/W 1 描述(n = 0~3,x = 0~11) 根据GPIOnIS的设置,下升沿还是低电平触发管脚 PIOn_x中断 根据GPIOnIS的设置,上降沿还是高电平触发管脚 PIOn_x中断 保留
6.3.3 GPIO中断寄存器
4. GPIO中断屏蔽寄存器 GPIO 中断屏蔽寄存器 GPIOnIE ,用于屏蔽管脚中断触发。如果 本寄存器中某一位设置为1,对应的引脚就会触发各自的中断和对 应的GPIOnINTR;如果本寄存器中某一位设置为0,就会禁止对应 管脚的中断触发,从而实现中断屏蔽的作用。
保留 Tx FIFO 一半为空 Rx FIFO 一半为满 Rx 超时 Rx 溢出
SI(状态改变)
14
SSP1
15
I2C
LPC1114中断源表
异常编号 功能 标志
16
17 18 19
CT16B0
CT16B1 CT32B0 CT31B1
20
SSP0
匹配0-2 捕获0 匹配0-1 捕获0 匹配0-3 捕获0 匹配0-3 捕获0 Tx FIFO 一半为空 Rx FIFO 一半为满 Rx 超时 Rx 溢出
位 11:0 31:12 符号 ISENSE 访问 R/W 值 0 1 描述(n = 0~3,x = 0~11) PIOn_x管脚上的中断配置为边沿触发 PIOn_x管脚上的中断配置为电平触发 保留
6.3.3 GPIO中断寄存器
2. GPIO中断双边沿寄存器 GPIO中断双边沿触发寄存器GPIOnIBE,用于设置边沿触发的模式。 如果GPIOnIS寄存器设置为边沿触发模式时,则可以通过本寄存器 设置中断为双边沿触发中断。也就是说,本寄存器只有设置中断为 边沿触发时才有效,对电平触发没有作用。
#define KEY1_DOWN() ((LPC_GPIO1->DATA&(1<<9))!=(1<<9)) #define KEY2_DOWN() ((LPC_GPIO1->DATA&(1<<10))!=(1<<10)) /*********************************************************/
第6章
LPC1114中断系统
6.1 中断介绍
6.2 中断源
LPC1114中断源表
异常编号 功能 标志 每一个中断都会与一个PIO 输入管脚相连,作为从 深度睡眠模式唤醒的唤醒管脚;中断0 到11 对应 PIO0_0 到PIO0_11,中断12 对应PIO_1_0
12:0
启动逻辑 唤醒中断
13
-
6.4
CMSIS软件接口标准
为了简化对NVIC的编程,CMSIS标准已经提供了对NVIC控制寄 存器进行操作的函数,应用中只需要直接操作这些函数即可。
CMSIS函数 描述
void NVIC_EnableIRQ(IRQn_Type IRQn) void NVIC_DisableIRQ(IRQn_Type IRQn)
位 11:0 31:12 符号 MASK 访问 值 R 描述(n = 0~3,x = 0~11)

0 管脚PIOn_x上无中断或中断被屏蔽 1 PIOn_x上产生了中断 保留
6.3.3 GPIO中断寄存器
7. GPIO中断清除寄存器 GPIO 中断清除寄存器 GPIOnIC ,用于清除 GPIO 管脚上 的中断标志。该寄存器位只写。
28
29 30 31
PIO_3
PIO_2 PIO_1 PIO_0
端口3的GPIO中断状态
端口2的GPIO中断状态 端口1的GPIO中断状态 端口0的GPIO中断状态
特性
GPIO在用作外中断接口时,还有如下特性:
• 每个单独引脚可被用作外部中断输入引脚;
• 每个 GPIO 中断可配置为低电平、高电平、下降沿、 上升沿或双边沿触发;
6.3.4 GPIO中断设置
2、边沿触发中断设置 边沿触发中断有三种方式,设置步骤如下: 1 )设置GPIO中断触发寄存器 GPIOnIS对应位为0 ,配置GPIO中断 为边沿触发模式。 2)设置GPIO中断双边沿寄存器GPIOnIBE,如果需要配置GPIO中 断为双边沿触发中断,对应位设置为1,否则设置为0。 3 )设置 GPIO 中断事件寄存器 GPIOnIEV。如果需要上升沿触发中 断,设置GPIOnIEV对应位为1;否则,GPIOnIEV相应为设置为0, 下降沿触发中断。
6.3.4 GPIO中断设置
1、电平触发中断设置 电平触发中断有两种方式,设置的步骤如下: 1 )设置GPIO中断触发寄存器 GPIOnIS对应位为1 ,配置GPIO中断 为电平触发模式。 2 )设置 GPIO 中断事件寄存器 GPIOnIEV。如果需要高电平触发, 则GPIOnIEV相应位为1;否则,GPIOnIEV相应位设置为0,产生低 电平触发中断。
相关主题