本帖最后由 生无所息1 于 2013-10-24 20:41 编辑
GPIO即是IO口,其性质和单片机的IO是一样的,但他们的行为却很不一样,因为K60的IO口很多,有100个,就像一家人只有三四个,我们的生活问题可以直接在吃饭时交流解决;而假如有100个人,那他们的生活问题的交流就需要另外一种形式了,比如我们可以用QQ交流。
这里单片机到比较复杂的芯片的转变带来一个编程习惯的问题,写单片机程序我们总是直接操作IO,而写像K60这种芯片的程序我们就不能这样了,这就涉及到与GPIO关联的寄存器的内容。我们以后对GPIO的操作都是通过这些寄存器来操作;但是,我们会发现类似K60这些比较高级的芯片都是通过调用库函数操作的。
GPIO模块概要:
K60大部分引脚具有多重功能,可以通过编程来设定使用其中一种功能,144引脚封装的K60芯片具有5个GPIO口,分别是A口、B口、C口、D口、E口,共含100个引脚,每个脚所含脚数不同:
A口26个脚,分别为PTA0~PTA19、PTA24~PTA29;
B口20脚,分别为PTB0~PTB11、PTB16~PTB23;
C口20脚,分别为PTC0~PTC19;
D口16脚,分别为PTD0~PTD15;
E口18脚,分别为PTE0~PTE12、PTE24~PTE28;
K60的IO口寄存器比单片机的复杂多了,共有6个寄存器,均为32位的。分别为数据方向寄存器GPIOx_PDDR、数据输出寄存器GPIOx_PDOR、数据输入寄存器GPIOxPDIR、输出置位寄存器GPIOx_PSOR、输出清零寄存器GPIOx_PCOR、输出取反寄存器GPIOx_PTOR ,其中“x”为A、B、C、D、E中的一个,表示相应口。其实这寄存器的名字是很有意义的,弄懂可以方便**,其后四位字母的第二位和第三位表示了其含义,“O”表示输出,“I”表示输入,“S”为SET表示置位,“C”为clear清零
,“D”表示与方向有关。如此就可以发现**这些寄存器将变得很简单。
这里详细说一下这些寄存器的含义,手打累了,上图。
作为小菜,在这问个问题,就是GPIO寄存器是32位的,而ABCDE口没有一个有32位,想问一下,寄存器的各位和IO口的各位是怎么对应的???是按序号对应?还是顺序依次对应???求回答。
|