[ZLG-ARM] 关于LPC2131的问题

[复制链接]
1940|2
 楼主| hero_0810 发表于 2007-9-14 17:01 | 显示全部楼层 |阅读模式
关于LPC2131中的PINSELn的问题<br />&nbsp;&nbsp;&nbsp;&nbsp;《深入浅出ARM7》147页:<br />&nbsp;&nbsp;&nbsp;&nbsp;引脚连接设置<br />&nbsp;&nbsp;&nbsp;&nbsp;将相应引脚的PINSELn位设置为00,即选择GPIO功能,大部分引脚复位后默认为GPIO。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;146页:<br />&nbsp;&nbsp;&nbsp;&nbsp;LPC2131拥有47个通用I/O口,分别为P0[31:0]、P1[31:16],其中,P0.24未用,P0.31仅为输出。由于口线与其他功能复用,因而需要通过相关的引脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;我是这么想的:<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSELn如果是32位,三个就是96位=48位*2,也就是每两位PINSELn的位控制一个IO口。如果按顺序的话,就是P1.16由PINSEL2的第0位和第1位控制,……P1.24(未用)由PINSEL2的第16位和第17位控制。<br />&nbsp;&nbsp;&nbsp;&nbsp;但是《深入浅出ARM7》上的GPIO实验程序“单路LED实验程序”和“流水灯实验”中,主程序开始有这么一句:“PINSEL2&nbsp;=&nbsp;PINSEL2&nbsp;&&nbsp;(~0x08);”并在后面注明:“//P1[25:16]连接GPIO”<br />&nbsp;&nbsp;&nbsp;&nbsp;这样我就不明白了,(~0x08)就是“00……00001000&nbsp;B(共32位)”但是这个数怎么就能完成“P1[25:16]连接GPIO”这个功能呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;寻思了两天,没有门路,只得求救,万分感激!
 楼主| hero_0810 发表于 2007-9-14 17:05 | 显示全部楼层

改一点

改:<br />&nbsp;&nbsp;&nbsp;&nbsp;这样我就不明白了,(~0x08)就是“11……11110111&nbsp;B(共32位)”但是这个数怎么就能完成“P1[25:16]连接GPIO”这个功能呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;寻思了两天,没有门路,只得求救,万分感激!&nbsp;<br />
xxqarm 发表于 2007-9-14 22:37 | 显示全部楼层

这样是否明白?

见图.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

46

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部