ARM与嵌入式技术培训课件第7章.ppt
《ARM与嵌入式技术培训课件第7章.ppt》由会员分享,可在线阅读,更多相关《ARM与嵌入式技术培训课件第7章.ppt(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.8 GPIOLPC2200系列作为“微控制器”,其通用并行I/O口(GPIO)具有如下的特性:可以独立控制每个GPIO口的方向(输入/输出模式);可以独立设置每个GPIO的输出状态(高/低电平);所有GPIO口在复位后默认为输入状态。7.8 GPIO通用名称描述访问类型复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出高电平读/置位0 x0000 0000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出低电平只清零0 x0000 0000IODIRGPIO方向控制寄存器。该寄存器单
2、独控制每个IO口的方向读/写0 x0000 0000 GPIO相关寄存器描述PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxPINIOxPIN描述复位值31:0GPIO引脚值。IOxPIN0对应于Px.0 IOxPIN31对应于Px.31引脚未定义 该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。PINSELxIOxDI
3、RIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxDIRIOxDIR描述复位值31:0方向控制位。IOxDIR0对应于Px.0 IOxDIR31对应于Px.31引脚未定义 当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxSETIOxSET描述复位值31:0输出置位。IOxSET0对应于Px.0 IOxPIN31对应于Px.31引脚未定义 当引脚设置为GPIO输
4、出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxCLRIOxCLR描述复位值31:0输出清零。IOxCLR0对应于Px.0 IOxCLR31对应于Px.31引脚未定义 当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。7.9 GPIO使用GPIO注意要点引脚设置为输出方
5、式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。.PINSEL0&=0 xFFFFFFFC;IO0DIR|=0 x00000001;IO0SET =0 x00000001;.C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出高电平1 .uint32 Pi
6、nStat;PINSEL0&=0 xFFFFFFFC;IO0DIR&=0 xFFFFFFFE;PinStat =IO0PIN;.C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从IO0PIN读取引脚状态IO0PIN#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;IO0DIR|=DataBus;IO0CLR =DataBus;IO0SET =Data;.使用IOxSET和IOxCLR实现:GPIO
7、应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.07为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态 在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0P0.7。(4)Data变量中为1的位将输出高电平0 x?0 x00Data数据输出线:#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;IO0DIR|=DataBus;IO0PIN =(IO0SET
8、&0 xFFFFFF00)|Data;.GPIO应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)写IO0PIN,输出数据 在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0P0.7。使用IOxPIN实现:0 x?Data数据输出线:0 x?0 x00Data与前者对比:7.9 UART0 简介串行通信口(UART),LPC2200包含两个UART:UART0和
9、UART1 其中UART0具有如下的特性:16字节接收FIFO和16字节发送FIFO;寄存器位置符合16C550工业标准;接收FIFO触发点可设置为1、4、8或14字节;内置波特率发生器。7.9 UART0 使用UART0通信需要两个引脚,分别为:引脚名称类型描述RxD0输入串行输入,接收数据TxD0输出串行输出,发送数据U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL1.在使用UART之前需要设置的寄存器UART0内部结构示意图U0LCRU0IERU0FCRU0DLM U0DLLFIFO
10、控制中断使能UART0格式设置波特率设置U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL2.发送数据的通道UART0内部结构示意图U0THRU0TSRVPB接口CPU内核通过VPB接口对UART0的寄存器进行读写访问发送缓存发送移位寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL3.接收数据的通道UART0内部结构示意图U0RBRU0RSRVPB接口接收缓存接收移位寄存器U0TH
11、RU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL4.通信过程中可能影响的标志位UART0内部结构示意图U0LSRU0IIR中断标志UART0当前状态UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0RBRU0RBR描述复位值7:0接收缓存寄存器,它包含了接收FIFO中最早接收到的字节未定义 U0RSR移位寄存器从RxD0引脚接收的有效数据将被送到接收FIFO中。通过读
12、取U0RBR寄存器可以将接收FIFO中最早接收到的字节读出,当FIFO中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足8位时,高位用0填充。注意:U0RBR只读。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。接收缓存寄存器UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0THR描述复位值7:0发送器保持寄存器,写入该寄存器的值保存到发送FIFO中,当该字节到达FIFO底部时,它将被送入发送移位寄存器(U0TSR)进行
13、发送。未定义 写入该寄存器的值将是发送FIFO中的最高字节。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。注意:U0THR只写。它的地址与U0RBR相同,通过读/写操作予以区分。U0THR发送器保持寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0THRU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述名称描述复位值U0DLL7:0除数锁存寄存器低字节两个寄存器一起构成一个16位的除数,决定U
14、ART0的波特率。未定义U0DLM7:0除数锁存寄存器高字节 这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的16倍。波特率计算公式如下:BaudRate=FPCLK/(U0DLM,U0DLL16)除数锁存寄存器U0DLM U0DLL注意:由于U0DLL、U0DLM寄存器与其它寄存器的地址重叠,所以在访问它们时,U0LCR的除数锁存访问位(DLAB)必须为1。U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述U0IER描述复位值0RBR中断使能。1:使能RDA中断;0:禁止RDA中断。01THRE中断使能。1:
15、使能THRE中断;0:禁止THRE中断。02Rx线状态中断使能。1:禁止Rx线状态中断;0:禁止Rx线状态中断;该中断状态可从U0LSR4:1读出。07:3保留,用户软件不要向这些位写入1。未定义中断使能寄存器U0IER U0IER可以控制UART0的4个中断源。其中RBR中断使能包括两个中断,一个是接收数据可用(RDA)中断,一个是接收超时中断(CTI)。稍后将对各中断源作详细介绍。U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述U0IIR描述复位值0中断挂起。1:没有挂起的中断;0:至少有一个中断被挂起。03:1中断
16、标识。这3位表示了对应于UART0 Rx FIFO的中断。未列出的其它组合作为保留值。011:1.接收线状态中断(RLS)0010:2a.接收数据可用中断(RDA)0110:2b.字符超时指示(CTI)001:3.发送中断(THRE)7:3保留,用户软件不要向这些位写入1。未定义中断标识寄存器 U0IIR提供状态代码用于指示一个挂起中断的中断源和优先级。在访问U0IIR过程中,中断被冻结。如果在访问U0IIR时产生了中断,该中断将被记录,在下次访问U0IIR时可以读出,避免了中断的丢失。U0IIRU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLL
17、UART0相关寄存器描述中断标识寄存器中断源和中断使能的关系U0IIRRLS中断(U0IIR3:1=011)RDA中断(U0IIR3:1=010)CTI中断(U0IIR3:1=110)THRE中断(U0IIR3:1=001)VIC中断控制器ARM7TDMI内核U0IERbit2bit1bit0优先级最高第二第二第三U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述中断标识寄存器U0IIRRLS中断RDA中断CTI中断THRE中断VIC中断控制器ARM7TDMI内核U0IERbit2bit1bit0中断源和中断使能的关系UA
18、RT0相关寄存器描述中断源说明l RLS中断:该中断为最高优先级。它在UART0产生了四个错误条件(溢出错误(OE)、奇偶错误(PE)、帧错误(FE)和间隔中断(BI))中的任意一个时置位。通过查看U0LSR4:1可以了解到产生该中断的错误条件。读取U0LSR时清除该中断;UART0相关寄存器描述中断源说明lRDA中断:该中断与CTI中断并列为第二优先级。当接收的有效数据到达接收FIFO设置寄存器(U0FCR)中设置的触发点时,RDA被激活。当接收FIFO中的有效数据少于触发点时,RDA复位;1.移位寄存器(U0RSR)从RxD0引脚接收串行数据后,送入接收FIFO中;2.当接收FIFO中的有
19、效数据数量到达预定的触发点时,置位RDA中断;3.从U0RBR寄存器中读取FIFO中最早到达的数据,当FIFO中的有效数据小于预定触发点时,清零RDA中断;接收FIFO12345679101112131415168触发点设置=8U0RBRU0RSRRxD0U0IIR3:1xxxU0IIR010100 xxx1DATAUART0相关寄存器描述中断源说明lCTI中断:该中断为第二优先级。当接收FIFO中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收3.54.5个字节所需要的时间仍没有接收到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;接收FIFO1234567
20、9101112131415168触发点设置=8U0RBR1.移位寄存器(U0RSR)从RxD0引脚接收串行数据后,送入接收FIFO中;2.当接收FIFO中的有效数据少于触发个数,但至少有一个时,如果长时间没有数据到达,将触发CTI中断;3.从U0RBR中读取接收FIFO中的数据,或者有新的数据送入接收FIFO,都将清零CTI中断;U0RSRDATARxD0U0IIR3:1xxxU0IIR011100 xxx1UART0相关寄存器描述中断源说明lCTI中断:该中断为第二优先级。当接收FIFO中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收3.54.5个字节所需要的时间仍没有接收
21、到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;接收FIFO12345679101112131415168触发点设置=8U0RBR说明:“3.54.5个字节的时间”,其意思是在串口当前的波特率下,发送3.54.5个字节所需要的时间;U0RSRDATARxD0U0IIR3:1xxxU0IIR011100 xxx1注意:当接收FIFO中存在多个数据,从U0RBR读取数据,但是没有读完所有数据,那么在经过3.54.5个字节的时间后将触发CTI中断;12345679101112131415168U0RBRU0TSRTxD0U0IIR3:1xxxU0IIR01UART0相关寄存器描述
22、中断源说明lTHRE中断:该中断为第三优先级。当发送FIFO为空并且满足一定的条件时,该中断将被触发。这些条件是:发送FIFO1.系统启动时,虽然发送FIFO为空,但不会产生THRE中断。DATA1100U0TSR2.在上一次发生THRE中断后,向发送FIFO中写入1个字节数据,将在延时一个字节加上一个停止位后发生THRE中断。这是因为:如果发送移位寄存器为空,那么写入发送FIFO的数据将直接进入发送移位寄存器;此时发送FIFO仍然为空,如果立即产生THRE中断,就会影响紧接着要写入发送FIFO的数据;所以在发送完该字节以及一个停止位后,才产生THRE中断;3.如果在发送FIFO中有过两个字节
23、以上的数据,但是现在发送FIFO为空时,将立即触发THRE中断。当THRE中断为当前有效的最高优先级中断时,往U0THR写数据,或者对U0IIR的读操作,将使THRE中断复位。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位765:3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOFIFO控制寄存器U0FCR U0FCR控制UART0接收和发送FIFO的操作。EnFIFO:FIFO使能。该位的任何变化都将清空UART0的FIFO。1:使能UAR
24、T0的接收和发送FIFO,并且允许访问U0FCR7:1。0:禁止接收FIFO,此时接收缓存只有1个字节。而发送FIFO不会被关闭。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位765:3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOFIFO控制寄存器U0FCR复位RxFIFO:接收FIFO复位。当该位置位时,UART0接收FIFO中的所有字节被清零并复位指针逻辑。注意:该位会自动清零。UART0相关寄存器描述U0THRU0TSRTxD0U0
25、RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位765:3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOFIFO控制寄存器U0FCR复位TxFIFO:发送FIFO复位。当该位置位时,UART0发送FIFO中的所有字节被清零并复位指针逻辑。注意:该位会自动清零。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位765:3210功能Rx触发点设置复位TxFIFO复位RxFI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 嵌入式 技术培训 课件
限制150内