在线时间74 小时
UID3323317
注册时间2016-10-25
NXP金币120
TA的每日心情 | 慵懒 2019-7-22 13:56 |
---|
签到天数: 38 天 连续签到: 1 天 [LV.5]常住居民I
金牌会员
 
- 积分
- 1820
- 最后登录
- 2020-10-13
|
本帖最后由 邹姆斯特朗 于 2016-11-18 21:52 编辑
软件平台:keil5.14
硬件平台:LPC824Lite
目的:学习如何利用开关矩阵分配引脚功能。
.
STC89C51
51单片机里面没有这项功能,所有的引脚功能都是固定的,例如串口固定在P3.0\P3.1,不可随意更换串口引脚。
LPC824
开关矩阵可分配的引脚和功能, 除了电源和地管脚以外,任意外部管脚均可被SWM分配功能,可分配的功能包括 UART、 SPI、 I2C、 SCT、比较器输出、 CLKOUT、逻辑匹配输出。特定功能引脚仅可被管理(不能被分配),如外部晶振引脚、 比较器输入口、 ADC采样、 复位口、 SWD调试接口、GPIO口。
开关矩阵相关寄存器有两个:PINASSIGN[0:11]寄存器组和PINENABLE0寄存器,还需要配置SYSAHBCLKCTRL的第7位使能和禁用开关矩阵。以配置PIO0_0为Uart0_RXD和PIO0_4位Uart0_TXD为例。
第一步:找对对应功能的PINASSIGN[0:11]寄存器。这里对应PINASSIGN[0];
第二步:根据需要分配的I/O管脚,设置PINASSIGN[0]寄存器。
bit0~7为Uart0_TXD,写入0x04,分配到0.4口
bit8~15为Uart0_RXD,写入0x00,分配到0.0口
- LPC_SYSCTL->SYSAHBCLKCTRL |= (1<<7);//使能开关矩阵时钟
-
- LPC_SWM->PINASSIGN[0] &= 0xffffff04 ; // bit0~7写入0x04,设置 P0.4 为UART0的Txd
- LPC_SWM->PINASSIGN[0] &= 0xffff00ff; // bit8~15写入0x00,设置 P0.0 为UART0的Rxd
-
- LPC_SYSCTL->SYSAHBCLKCTRL &= ~(1<<7);//关闭开关矩阵时钟,降低功耗
复制代码
|
|