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