周立功单片机5.9GPIO(建议使用Office2019以上版本播放,将有更丰富的动画效果)周立功单片机第5章目录1.简介2.引脚配置3.存储器寻址4.系统控制模块5.存储器加速模块6.外部存储器控制器7.引脚连接模块8.向量中断控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定时器0/115.脉宽调制器(PWM)16.A/D转换器17.实时时钟18.看门狗周立功单片机5.9GPIO•特性LPC2000系列作为“微控制器”,其GPIO特性就显得很重要。它具有如下的特性:可以独立控制每个GPIO口的方向(输入/输出模式);可以独立设置每个GPIO的输出状态(高/低电平);所有GPIO口在复位后默认为输入状态。周立功单片机5.9GPIO•应用R310KRSTC16104LED1POWER+3.3VR310K+3.3VQB1QC2QD3QE4QF5QG6QH7GND8SQH9SCLR10SCK11RCK12OE13SI14QA15VCC16U1174HC595+3.3VLPC2000检测数字输入,如键盘或开关信号驱动LED或其它指示器控制片外器件周立功单片机5.9GPIO•引脚描述LPC2114/2124微控制器具有两个端口——P0和P1,可以作为GPIO使用的引脚数为46个。LPC2210/2212/2214微控制器还包含另外两个端口——P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。周立功单片机5.9GPIO•引脚描述GPIO与控制寄存器的关系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引脚周立功单片机PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名称描述访问类型复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出高电平读/置位0x00000000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出低电平只清零0x00000000IODIRGPIO方向控制寄存器。该寄存器单独控制每个IO口的方向读/写0x00000000•GPIO相关寄存器描述周立功单片机PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10•GPIO相关寄存器描述——IOxPINIOxPIN描述复位值31:0GPIO引脚值。IOxPIN[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚未定义该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。周立功单片机PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10•GPIO相关寄存器描述——IOxDIRIOxDIR描述复位值31:0方向控制位。IOxDIR[0]对应于Px.0…IOxDIR[31]对应于Px.31引脚未定义当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。周立功单片机PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10•GPIO相关寄存器描述——IOxSETIOxSET描述复位值31:0输出置位。IOxSET[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚未定义当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。周立功单片机PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10•GPIO相关寄存器描述——IOxCLRIOxCLR描述复位值31:0输出清零。IOxCLR[0]对应于Px.0…IOxCLR[31]对应于Px.31引脚未定义当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。周立功单片机5.9GPIO•使用GPIO注意要点引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。周立功单片机...PINSEL0&=0xFFFFFFFC;IO0DIR|=0x00000001;IO0SET=0x00000001;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10•GPIO应用示例——设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出高电平1周立功单片机...uint32PinStat;PINSEL0&=0xFFFFFFFC;IO0DIR&=0xFFFFFFFE;PinStat=IO0PIN;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10•GPIO应用示例——读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从IO0PIN读取引脚状态IO0PIN周立功单片机#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0CLR=DataBus;IO0SET=Data;...使用IOxSET和IOxCLR实现:•GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0~7为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0~P0.7。(4)Data变量中为1的位将输出高电平0x??0x00Data数据输出线:周立功单片机#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0PIN=(IO0SET&0xFFFFFF00)|Data;...•GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)写IO0PIN,输出数据在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0~P0.7。使用IOxPIN实现:0x??Data数据输出线:0x??0x00Data与前者对比:周立功单片机第5章目录1.简介2.引脚配置3.存储器寻址4.系统控制模块5.存储器加速模块6.外部存储器控制器7.引脚连接模块8.向量中断控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定时器0/115.脉宽调制器(PWM)16.A/D转换器17.实时时钟18.看门狗周立功单片机5.10UART0•特性LPC2000系列微控制器具有两个功能强大的UART,其中UART0具有如下的特性:16字节接收FIFO和16字节发送FIFO;寄存器位置符合16C550工业标准;接收FIFO触发点可设置为1、4、8或14字节;内置波特率发生器。周立功单片机使用UART0通信需要两个引脚,分别为:引脚名称类型描述RxD0输入串行输入,接收数据TxD0输出串行输出,发送数据•使用UART0通信LPC2000的I/O电压为3.3V(可承受5V),连接时须注意电平的匹配。与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。LPC2000其它通信设备LPC2000PC机串口232电平转换TxD0RxD0TxD0RxD0TxD0RxD0TxD0RxD0周立功单片机U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL1.在使用UART之前需要设置的寄存器•UART0内部结构示意图U0LCRU0IERU0FCRU0DLMU0DLLFIFO控制中断使能UART0格式设置波特率设置周立功单片机U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL2.发送数据的通道•UART0内部结构示意图U0THRU0TSRVPB接口CPU内核通过VPB接口对UART0的寄存器进行读写访问发送缓存发送移位寄存器周立功单片机U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL3.接收数据的通道•UART0内部结构示意图U0RBRU0RSRVPB接口接收缓存接收移位寄存器周立功单片机U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL4.通信过程中可能影响的标志位•UART0内部结构示意图U0LSRU0IIR中断标志UART0当前状态周立功单片机•UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0RBRU0RBR描述复位值7:0接收缓存寄存器,它包含了接收FIFO中最早接收到的字节未定义U0RSR移位寄存器从RxD0引脚接收的有效数据将被送到接收FIFO中。通过读取U0RBR寄存器可以将接收FIFO中最早接收到的字节读出,当FIFO中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足8位时,高位用0填充。注意:U0RBR只读。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。——接收缓存寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL周立功单片机•UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0THR描述复位值7:0发送器保持寄存器,写入该寄存器的值保存到发送FIFO中,当该字节到达FIFO底部时,它将被送入发送移位寄存器(U0TSR)进行发送。未定义写入该寄存器的值将是发送FIFO中的最高字节。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。注意:U0THR只写。它的地址与U0RBR相同,通过读/写操作予以区分。U0THR——发送器保持寄存器周立功单片机U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0THR