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