F28027第五节课
说实话,头有点晕,但是为了周末能动手实践,只能今晚再拼一把了。 聊到GPIO,我觉得应该把引脚图贴出来,最适合不过了
除了JTAG那几个引脚相对陌生外,其他的引脚,大家看名字就知道是干嘛的了,呵呵。
看芯片手册了解到,该片子有22个GPIO引脚,6个模拟I/O引脚,每个引脚都能通过复用寄存器设置进行多功能复用,对于数字GPIO引脚,还能设置数据流动方向、采样间隙和内部上拉电阻。
来看下引脚复用的图解
从左侧的GPIO输入引脚,到右侧的GPADAT,整个过程是非常清晰的,就是里面的寄存器相对比较多,功能也需要了解下,先来一个整体的寄存器介绍
其实看寄存器的额名字大家也可以大概猜到该寄存器的功能了,那下面我们就要具体了解相应的寄存器功能了。
真的不想继续没意思的贴图了,大家直接去看芯片手册就行了。我们直接跳过寄存器的介绍,直接到如何使用相应的引脚。
GPIO引脚的配置主要有以下几个步骤:
1、引脚规划,这个就不用多说了吧;
2、通过复用寄存器设置相应引脚的功能;
3、输入滤波设置;
4、数字GPIO引脚方向设置;
5、内部上拉电阻使能或禁止;
6、低功率模式唤醒源设置(可选);
7、外部中断源设置(可选);
下面来看个示例程序:
void InitGpio(void)
{
EALLOW;
// Each GPIO pin can be:
// a) a GPIO input/output
// b) peripheral function 1
// c) peripheral function 2
// d) peripheral function 3
// By default, all are GPIO Inputs
GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO0-GPIO15
GpioCtrlRegs.GPAMUX2.all = 0x0000; // GPIO functionality GPIO16-GPIO31
GpioCtrlRegs.GPBMUX1.all = 0x0000; // GPIO functionality GPIO32-GPIO34
GpioCtrlRegs.AIOMUX1.all = 0x0000; // Dig.IO funct. applies to AIO2,4,6,10,12,14
GpioCtrlRegs.GPADIR.all = 0x0000; // GPIO0-GPIO31 are GP inputs
GpioCtrlRegs.GPBDIR.all = 0x0000; // GPIO32-GPIO34 are inputs
GpioCtrlRegs.AIODIR.all = 0x0000; // AIO2,4,6,19,12,14 are digital inputs
// Each input can have different qualification
// a) input synchronized to SYSCLKOUT
// b) input qualified by a sampling window
// c) input sent asynchronously (valid for peripheral inputs only)
GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15 Synch to SYSCLKOUT
GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO16-GPIO31 Synch to SYSCLKOUT
GpioCtrlRegs.GPBQSEL1.all = 0x0000; // GPIO32-GPIO34 Synch to SYSCLKOUT
// Pull-ups can be enabled or disabled.
GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup’s enabled GPIO0-GPIO31
GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup’s enabled GPIO32-GPIO34
//GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup’s disabled GPIO0-GPIO31
//GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup’s disabled GPIO32-GPIO34
EDIS;
}
程序很简单吧,呵呵,那GPIO基础解读也就到这里了,等明晚了解Flash映射之后就可以开始写程序了,真的很期待,因为毕业三年到现在,都没好好写过一个程序,不扯了,洗洗睡了,明晚见。
菜鸟交流qq群107691092