关于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 /> 寻思了两天,没有门路,只得求救,万分感激! |
|