欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ARM基础相关寄存器的讲解-LPC21XX

程序员文章站 2022-06-08 20:41:36
...

一:通用输入/输出端口 GPIO

1:特性
(1 )可以独立控制每个 GPIO 口的方向(输入/输出模式);
(2 )可以独立设置每个 GPIO 口的输出状态(高/低电平);
(3 )所有 GPIO 口在复位后默认为输入状态。
2:LPC2114 / 2124 系列 GPIO 描述
ARM基础相关寄存器的讲解-LPC21XX


二: 引脚功能选择寄存器PINSELn(n=0 ,1,2)

1:引脚连接模块寄存器映射
ARM基础相关寄存器的讲解-LPC21XX
2: 引脚功能选择寄存器 0 ( PINSEL0 )
ARM基础相关寄存器的讲解-LPC21XX
3: 引脚功能选择寄存器 1 ( PINSEL1 )
ARM基础相关寄存器的讲解-LPC21XX
4: 引脚功能选择寄存器 2 ( PINSEL2 )
ARM基础相关寄存器的讲解-LPC21XX
ARM基础相关寄存器的讲解-LPC21XX
5:总结
ARM基础相关寄存器的讲解-LPC21XX
PINSELx 寄存器中,每 2 位控制了一个引脚的功能选择,每个引脚的四个功能选择分别对应于这两位的 00 、01 、 10 、 11 四个值,而当设置为 00 时,这个引脚总是 GPIO 功能。

例子补充:
ARM基础相关寄存器的讲解-LPC21XX
分析:
1:P0.8,P0.9是属于PINSEL0寄存器
2:P0.8,P0.9对应[16,19]位
3:TxD1,RxD1对应01 01
ARM基础相关寄存器的讲解-LPC21XX
整个思考过程:
1:通过二进制进行表示
①:P0.8,P0.9对应[16,19]位

0000 0000 0000 **0000**  0000 0000 0000 0000  

②:TxD1,RxD1对应01 01

0000 0000 0000 **0101**  0000 0000 0000 0000 

2:通过十六进制进行表示

PINSEL0=0x05<<16// (0101对应16进制0x05;0x05左移16位就可以得到这个数)

3:改进
ARM基础相关寄存器的讲解-LPC21XX
①:(PINSEL0&FFF0FFFF)
这个的意思就是不管PINSEL0的结果如何,在[16,19]位上的值必为0(这也是为什么使用与逻辑的原因),PINSEL0初始值上的其他位也不会受到任何影响,开发者只关心对应位即可。
②:(PINSEL0&FFF0FFFF)|(0x05<<16)
这个意思就是把自己应该关心的位上的二进制数进行或运算,为什么进行或运算,其实很容易理解吧,在上面已经讲解了左面相关位上的值是为0的,现在我只需看右面的值,只有右面有一位为1,即该位为1,上面我们已经计算出右面的值为[16,19]对应为01,01,进行或运算后还是01,01。


三:GPIO原理图

ARM基础相关寄存器的讲解-LPC21XX
ARM基础相关寄存器的讲解-LPC21XX


四:GPIO 相关寄存器的详细说明

1:使用前提
(使用前提:当PINSELx为00时使用GPIO功能)
ARM基础相关寄存器的讲解-LPC21XX
2:GPIO 相关寄存器
ARM基础相关寄存器的讲解-LPC21XX
3:IOnPIN引脚值寄存器
ARM基础相关寄存器的讲解-LPC21XX
4:IOxDIR 方向寄存器
ARM基础相关寄存器的讲解-LPC21XX
5: IOxSET 输出置位寄存器
(使用前提当IOxDIR为输出方向时)
ARM基础相关寄存器的讲解-LPC21XX
6: IOxCLR 输出清零寄存器
(使用前提当IOxDIR为输出方向时)
ARM基础相关寄存器的讲解-LPC21XX
ARM基础相关寄存器的讲解-LPC21XX
备注:当PINSELx为00时使用GPIO功能,这里是P0.0就是右第一位16进制表示为1100(1100=8+4=C)时,P0.0采用GPIO功能;当IO0DIR为1时为输出模式,当为0时无效,当IO0SET输出为1时为高电平,输出为0时无效。

ARM基础相关寄存器的讲解-LPC21XX
备注:IONCLR当输出为1时输出低电平;而IO0SET恰恰相反,当输出为1时输出高电平,所以bak&0x000000F0这里是采用的与逻辑,P0.3~P0.0本应该在右边第一位,为什么在第二位呢?,是因为获取bak的值是第P0.7 ~ P0.4位上的值,所以这里采用右边第二位,进行运算后,再进行右移位,这样就做到采集P0.7 ~P0.4上的值,然后赋值给P0.3 ~P0.0上进行输出操作。
ARM基础相关寄存器的讲解-LPC21XX
ARM基础相关寄存器的讲解-LPC21XX


使用 GPIO 注意要点:
(1 )引脚设置为输出方式时,输出状态由 IOxSET 和 IOxCLR 中最后操作的寄存器决定。
(2 )大部分 GPIO 输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为 4mA (短时间极限值 40mA )。
(3 )复位后默认所有 GPIO 为输入模式。

相关标签: 单片机开发