ARM7学习笔记——GPIO

来源:互联网 发布:spark排序算法 编辑:程序博客网 时间:2024/05/16 01:23

概述

LPC2000系列ARM的GPIO具有如下特性:
  • 可以独立控制每个GPIO口的方向(输入/输出模式)
  • 可以独立设置每个GPIO的输出状态(高/低电平)
  • 所有GPIO口在复位后默认为输入状态

引脚连接模块

LPC2000系列微控制器的引脚一般是多个功能复用,但是同一引脚在同一时刻只能使用其中一个功能,这可以通过设置PINSEL0寄存器来选择。

  • 使用示例——将P0.8,P0.9设置为TxD1,RxD1
    通过查阅PINSEL0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL0[19:16],当该域设置为[0101](0x05)时选择RxD1和TxD1
    PINSEL0 = 0x05<<16;//为了不影响别的管脚连接设置,通常选择下面的设置方法PINSEL0 = (PINSEL0 & 0xFFF0FFFF) | (0x05<<16);

GPIO相关寄存器描述


    由上图可以发现每个作为GPIO功能的引脚受到4个寄存器控制,分别为控制方向的IOxDIR,控制输出电平状态的IOxSET和IOxCLR,反映引脚电平状态的IOxPIN。

通用名称

描述

访问类型

复位值

IOPIN

GPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出

只读

NA

IOSET

GPIO输出置位寄存器。该寄存器控制引脚输出高电平(写入0无效)

/置位

0x0000 0000

IOCLR

GPIO输出置位寄存器。该寄存器控制引脚输出低电平(写入0无效)

只清零

0x0000 0000

IODIR

GPIO方向控制寄存器。该寄存器单独控制每个IO口的方向

/

0x0000 0000


GPIO应用示例

  1. 设置P0.0为输出模式
    PINSEL0 &= 0xFFFFFFFC;   //第1步,设置引脚连接模块,将P0.0设置为GPIO功能IO0DIR |= 0x00000001;    //第2步,将P0.0设置为输出   或 IO0DIR |= 1<<0IO0SET = 0x00000001;     //第3步,设置P0.0输出高电平 或 IO0SET |= 1<<0
  2. 读取P0.0引脚的电平状态
    unit32 PinStat;           //定义一个32位 局部变量用于存放I/O状态PINSEL0 &= 0xFFFFFFFC;    //第1步,设置引脚连接模块,将P0.0设置为GPIO功能IO0DIR &= 0xFFFFFFFE;     //第2步,把P0.0设置为输入状态PinStat = IO0PIN&0x01;    //第3步,通过IO0PIN寄存器获取P0.0当前的电平状态

0 0
原创粉丝点击