自己学习总结,学会总结分享
分类: 嵌入式
2016-04-01 00:13:47
LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚从Px.0~Px.11,P3口是6位的宽度,引脚从P3.0~P3.5。
每个GPIO都可以通过软件设置为输入或输出引脚,读取引脚的电平,就需要把引脚设置为输入引脚,比如引脚用来做ADC输入引脚或按键检测引脚的时候。需要程序控制引脚电平的时候,就把引脚设置为输出引脚,比如引脚控制外部三极管导通与截止的时候。
每个GPIO都可以作为中断引脚来感知外部。中断还可以设置为电平中断或边沿触发中断。电平中断又可以设置为低电平中断或高电平中断,边沿触发又可以设置为下降沿中断或上升沿中断,也可以设置为双边沿触发中断。它的灵活性给我们设计带了很大的方便。
引脚作为GPIO功能时,默认是输入引脚。
由于GPIO的寄存器并不是很多,我们首先了解学习它的寄存器,然后通过实例讲解GPIO的各种输入输入应用。
2.1 GPIO寄存器定义
名称 | 访问属性 | 描述 | 复位值 |
DATA | 可读可写 | 数据寄存器 | 不定 |
DIR | 可读可写 | 方向寄存器 | 0x00 |
IS | 可读可写 | 中断感应寄存器 | 0x00 |
IBE | 可读可写 | 双边沿中断寄存器 | 0x00 |
IEV | 可读可写 | 中断事件寄存器 | 0x00 |
IE | 可读可写 | 中断屏蔽寄存器 | 0x00 |
RIS | 只可读 | 原始中断状态寄存器 | 0x00 |
MIS | 只可读 | 屏蔽中断状态寄存器 | 0x00 |
IC | 只可写 | 中断清除寄存器 | 0x00 |
1. 数据寄存器DATA
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
DATA |
1为高电平,0为低电平 |
不定 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
数据寄存器用来读取单片机引脚的电平和控制单片机引脚的电平。当引脚设置为输入引脚时,读取DATA寄存器可以获得引脚的电平。当引脚设置为输出引脚时,给DATA寄存器写值可以控制引脚的电平。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。例如,读取P0口的DATA寄存器,bit0就对应P0.1引脚的电平,bit7就对应P0.7引脚的电平,以此类推。bit12到bit31这些位保留不用。LPC1114的四个端口,每个端口都有一个DATA寄存器。由于P3口只有6个引脚,所以P3口的DATA寄存器只有bit0到bit5是可以使用的,其它位无用。
当引脚设置为输入引脚的时候,给DATA寄存器写值不会影响到引脚的电平,没有意义。此时DATA寄存器的值只受引脚外部电平的影响。
2. 方向寄存器DIR
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
IO |
1为输出,0为输入 |
0x000 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
方向寄存器用来设置GPIO引脚的输入和输出功能。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。例如,设置P0.5为输入引脚,需设置GPIO0的DIR寄存器中的bit5为0,设置P0.5为输出引脚,需设置GPIO0的DIR寄存器中的bit5为1。由上表复位值可知,GPIO默认是输入引脚。bit12到bit31这些位保留不用。
3. 中断感应寄存器IS
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
ISENSE |
0为边沿触发 1为电平触发 |
0x000 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
中断感应寄存器用来设置产生中断的触发方式。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。给对应的bit写0,把对应的引脚设置为边沿触发。给对应的bit写1,把对应的引脚设置为电平触发。由复位值可知,引脚默认为边沿触发方式。边沿触发,分为上升沿触发和下降沿触发两种方式。电平触发,分为高电平触发和低电平触发两种方式。具体是哪种边沿或者哪种电平触发中断,需要由下面将要讲到的“中断事件触发器”决定。
4. 双边沿中断寄存器IBE
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
IBE |
0:中断方式由IEV决定 1:设置为双边沿中断 |
0x000 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
双边沿中断寄存器用来设置引脚中断方式是否为双边沿触发中断。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。给对应的bit写1,把对应的引脚设置为双边沿触发中断,给对应的bit写0,则触发方式由中断事件寄存器的设置决定。
5. 中断事件寄存器IEV
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
IEV |
0:下降沿或低电平触发 1:上升沿或高电平触发 |
0x000 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
中断感应寄存器用来设置高低电平或者是上升沿和下降沿触发中断的方式。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。这个寄存器与“中断感应寄存器”配合使用,决定引脚的电平触发方式。给对应的bit位写0,如果“中断感应寄存器”设置为边沿触发,这里即是下降沿触发中断,如果“中断感应寄存器”设置为电平触发,这里即是低电平触发中断。给对应的bit位写1,如果“中断感应寄存器”设置为边沿触发,这里即是上升沿触发中断,如果“中断感应寄存器”设置为电平触发,这里即是高电平触发中断。由复位值可知,引脚的中断触发方式为低电平触发中断或者是下降沿触发中断。
6.中断屏蔽寄存器IE
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
MASK |
0:屏蔽引脚的中断 1:不屏蔽引脚的中断 |
0x000 |
可读可写 |
31:12 |
– |
保留 |
– |
– |
中断屏蔽寄存器用来屏蔽引脚上的中断。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。给对应的bit位写0,屏蔽对应引脚的中断。给对应的bit位写1,不屏蔽对应引脚的中断。
它其实是接下来要讲到的“屏蔽中断状态寄存器”的开关。当引脚设置好触发中断方式以后,在引脚上产生了触发中断的条件,如果这里的对应引脚的位设置为1,那么“屏蔽中断状态寄存器”中的对应状态位将置1,如果这里的对应引脚的位设置为0,那么“屏蔽中断状态寄存器”中的对应状态位将不会置1。
7. 原始中断状态寄存器RIS
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
RAWST |
0:表示没有产生中断 1:表示产生了中断 |
0x000 |
只读 |
31:12 |
– |
保留 |
– |
– |
原始中断状态寄存器,是一个只读寄存器。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。读取对应的位,可以知道引脚上有没有产生符合条件的中断。
需要注意的是,这里的状态位,并不受“中断屏蔽寄存器”设置位的影响。例如,当某引脚设置为下降沿产生中断,如果某引脚上产生了下降沿,这个寄存器中的对应位就会置1。也就是说,前面提到的“中断屏蔽寄存器”的设置,只会影响到“屏蔽中断状态寄存器”的状态位。
8. 屏蔽中断状态寄存器MIS
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
MASK |
0:表示没有产生中断 1:表示产生了中断 |
0x000 |
只读 |
31:12 |
– |
保留 |
– |
– |
屏蔽中断状态寄存器,是一个只读寄存器。寄存器当中的bit0到bit11,每一个bit与引脚顺序对应。读取对应的位,可以知道引脚上有没有产生符合条件的中断。
需要注意的是,这里的状态位,受“中断屏蔽寄存器”设置位的影响。例如,当某引脚设置为下降沿产生中断,如果某引脚上产生了下降沿,而且在“中断屏蔽寄存器”中的引脚对应位设置为1,这个寄存器中的对应位才会置1。也就是说,即使引脚上产生了符合条件的中断,如果“中断屏蔽寄存器”中的引脚对应位设置为0,这个状态寄存器中的对应位是不会置1的。
9.中断清除寄存器IC
位 |
名称 |
描述 |
复位值 |
访问属性 |
11:0 |
CLR |
0:不起作用 1:清除中断状态位 |
0x000 |
只写 |
31:12 |
– |
保留 |
– |
– |
中断清除寄存器是一个只写寄存器,用来清除对应引脚中断状态位。GPIO有两个中断状态寄存器,它们分别是“屏蔽中断状态寄存器”和“原始中断状态寄存器”。给“中断清除寄存器”对应的位写1,将会清除这两个中断状态寄存器中的对应位。