KEAZ128学习(三)--- GPIO和PORT

1、开发平台使用

  • 山外KEAZ128核心板(使用Jlink解除保护)
  • 使用Keil 5.25

2、PORT描述

PORT也叫做端口控制器,在NXP上,GPIO的控制是分成PORT和GPIO两个部分进行控制的,即使是在Kinetis K60上也一样。
在KEAZ128上,PORT的控制主要有:

  • 端口数据及数据方向
  • 内部上拉使能
  • 输入干扰滤波设置
  • 高电流驱动
  • 停止模式

习惯于使用ST的朋友,看到这个一定会感到很陌生,毕竟ST上要么没有这些功能,要么就PORT和GPIO的功能都写在一起了。因为NXP这样的寄存器设计,也造就了IO口的高灵活应用。对于做量产产品的客户,输入干扰滤波设置能够很好的保证了EMC测试的时候能通过。在初始上电时,除了几个默认IO,比如SWD接口等等,几个特殊接口之外,其余未配置的IO口会被默认为高阻态(Hi-Z)。

3、GPIO描述

说到GPIO并不会觉得陌生,即通用输入输出,在KEA的GPIO中,有如下功能:

  • 在所有数字引脚重用模式中,输入数据寄存器引脚可见。
  • 带有相应的设置/清除/反转寄存器的输出数据寄存器引脚。
  • 数据方向寄存器引脚。
  • 以零等待状态(IOPORT)访问 GPIO 寄存器。

GPIO的时钟挂在系统时钟上,每个功能都使用单独的寄存器进行控制,GPIO寄存器如下:

  • PDOR

  • PSOR

  • PCOR

  • PTOR

  • PDIR

  • PDDR

  • PIDR

    对应的相关描述,查看数据手册即可。
    KEA的GPIO端口有三组,GPIOA,GPIOB,GPIOC。但是IO端口则有PTA PTB PTC PTD PTE PTF PTG PTH PTI,以8位的形式组合在GPIO上(这设计真觉得有点恶心。。)。因此在编程中,需要自己额外定义好PORT端口,以及GPIO_PIN。

4、GPIO输入输出配置

我觉得NXP的头文件还是很良心的(虽然我们自己也会这样写),它帮我们定义好了相关寄存器的位带操作,如图:

KEAZ128学习(三)--- GPIO和PORT_第1张图片
这仅仅是GPIO的,在’'SKEAZ1284.h"这个头文件中,基本上涵盖了KEA所有的寄存器位带定义,寄存器操作起来十分方便,且很直观。而GPIO的配置功能,只需要根据自己的要求,先配置好PORT,再配置GPIO即可。

注:KEA在配置引脚输入输出时,并没有像Kinetis K60那样需要先开启时钟、清除DMA中断标志等操作,可直接进行寄存器操作,如:

GPIO_PDOR_REG(GPIOA)  |= (1<<7);
GPIO_PDDR_REG(GPIOA)  |= (1<<7);

在配置输入输出之前,应该先配置IO的上拉下拉、是否开漏等等,再进行IO的输入输出的初始化。

你可能感兴趣的:(NXP)