cortex-m0 lpc1114怎么切换引脚功能

  • 学习6283次

lpc1114引脚功能

1.引脚都有哪些功能该怎么看?

看具体引脚有什么功能,看上面的引脚图即可,这个图可以在LPC1114用户手册的第9章“Pin Configuration”找到。

lpc1114第9章

2.默认的引脚功能是什么?

大部分的引脚默认功能都是GPIO,个别除外,例如P0.0引脚,默认是RESET。具体某个引脚的默认功能是什么,可以打开LPC1114用户手册第7章“I/O Configuration”查看引脚的寄存器。

IOCONFIG

例如,我们要看P0.2引脚的默认功能,首先打开LPC1114用户手册,然后找到第7章,打开7.4节前面的“+”号,把所有的引脚寄存器都展开,最后找到P0.2引脚的寄存器,就可以了。

IOCON_PIO0_2

pio0

该寄存器的前3位,也就是bit0~bit2,用来控制引脚的功能。看上图右上角的地方,Reset value就是默认的功能,000即选择P0.2。

3.如何选择引脚的其它复用功能?

从上面那个图中,可以看出,我们只要给引脚寄存器中的前3位写入规定的值,就可以变换引脚的具体功能了。例如,我们要把引脚PIO0_2选择为CT16B0_CAP0功能,就需要给PIO0_2寄存器的前3位写入0x2。

IOCON->PIO0_2 &= ~0x07; // P0.2寄存器前3位清零
IOCON->PIO0_2 |= 0x02; // 给P0.2寄存器前3位写0x2

通过上面两条语句,来实现引脚功能的选择。这种写法已经成了固定的格式,以后不论修改哪个引脚的功能,都以这种形式写。

有人会说,我直接给P0.2寄存器的前3位写0x2可以吗?例如:

IOCON->PIO0_2 = 0X2;

你这样直接写,当然可以,但是需要注意的地方很多,一不小心单片机就乱了,为什么呢?因为lpc1114作为一个32位的单片机,它的引脚寄存器也是32位的,其中的每一位,都代表着不同的控制位,这些可以查看寄存器得到,例如P0.2引脚的寄存器,它的完整寄存器定义如下:

P0_2寄存器内容

你看它的bit4:3和bit9:6,这几位中,有些位默认就是1,如果你要直接赋值,需要让这些位保持原来的状态才可以。如果直接写0x2,那么这些原来是1的位,就成0了。所以我们在给寄存器赋值的时候,一般用“或”“与”的逻辑,改变我们想改变的位,不影响其它位的状态。

发表评论