LPC2103学习之GPIO
PINSEL0与PINSEL1寄存器的每两位控制一个引脚的功能,则一个脚最多有4种功能。其中PINSEL0控制着P0.0到P0.15的引脚。PINSEL1控制着P0.16到P0.31的引脚。
PINSEL寄存器的设置只需两个步骤。一找到要设置的引脚。二是选择引脚的功能。
如图所示:
下面举例说明
1.设置P0.0为GPIO功能
PINSEL0 = 0x00 /*设置P0.0到P0.15都为GPIO*/
2.设置P0.0为TxD0功能
PINSEL0 = (PINSEL0 & 0xFFFFFFFC) | 0x01; /*设置P0.0的功能为TxD0*/
当然如果为了不改变原来引脚的功能。你应该采取“读取——修改——回写”的方式进行。即先读取寄存器值,然后进行一些逻辑的与、或等操作,最后把修改值再写回寄存器。
比如:
PINSEL0 = (PINSEL0 & 0xFFF0FFFF) | (0x05 < 16); /*设置P0.8与P0.9功能为TxD1/RxD1*/
关于LPC2103的GPIO
LPC2103只有一个32位的通用IO口。由于引脚的功能复用,使用前必须进行相关引脚设置,再进行操作。比如P0.27到P0.31就是JTAG调试引脚。LPC2103的GPIO模式有低速与高速模式。
高速GPIO的控制寄存器位于CPU的局部总线上,而低速GPIO的控制寄存器是挂在VPB总线上。P0口作为高速GPIO使用时,将不能在调试环境下观察在VPB总线上的寄存器。
下面是一些寄存器的描述。直接上图好些。
剩余的以后需要时再补充,现在只需要用到这些。参考资料来自于《EasyARM2103教材》
每天进步一点,以后可不就是一点咯。
补注:就在刚才写流水灯程序时发现一个问题
#define LED1 1<17
for(i=0;i<4;i++)
{
IO0CLR = (LED1
// IO0CLR |= (LED1Delay(100);
}
LPC2103GPI 相关文章:
- LPC2103之GPIO寄存器(11-29)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)