串口通信原理与应用--课件

上传人:仙*** 文档编号:240986829 上传时间:2024-05-22 格式:PPT 页数:67 大小:4.23MB
返回 下载 相关 举报
串口通信原理与应用--课件_第1页
第1页 / 共67页
串口通信原理与应用--课件_第2页
第2页 / 共67页
串口通信原理与应用--课件_第3页
第3页 / 共67页
点击查看更多>>
资源描述
第第7 7章章 串口通信原理串口通信原理与应用与应用1ppt课件本章内容本章内容本章内容本章内容串口通信原理串口通信原理 S5PV210的的UART通信概述通信概述 S5PV210的的UART功能寄存器功能寄存器 用用UART实现发送和接收数据实现发送和接收数据 41232ppt课件教学大纲要求教学大纲要求教学大纲要求教学大纲要求串口通信原理:串口串口通信原理:串口通信的重要参数、串通信的重要参数、串口通信接口和通用异口通信接口和通用异步接收器和发送器。步接收器和发送器。S5PV210的的UART功功能寄存器,包括控制能寄存器,包括控制寄存器和操作寄存器寄存器和操作寄存器UART通信程序编通信程序编写和分析。写和分析。了解了解 理解理解 掌握掌握3ppt课件本章内容本章内容本章内容本章内容串口通信原理串口通信原理 S5PV210的的UART通信概述通信概述 S5PV210的的UART功能寄存器功能寄存器 用用UART实现发送和接收数据实现发送和接收数据 41234ppt课件7.1 串口通信原理串口通信原理l7.1.1 串口通信的重要参数串口通信的重要参数波特率波特率波特率波特率数据位数据位停止位停止位奇偶校验奇偶校验奇偶校验奇偶校验重要参数重要参数重要参数重要参数5ppt课件1.波特率波特率高波特率常常用于高波特率常常用于放置的很近的仪器放置的很近的仪器间的通信,典型的间的通信,典型的例子就是例子就是GPIB设设备的通信。备的通信。衡量通信速率的参衡量通信速率的参数,表示每秒传输数,表示每秒传输的位的个数。的位的个数。通信电话线的波特通信电话线的波特率为率为14400、28800和和36600。波特率可以远远大波特率可以远远大于这些值,但是波于这些值,但是波特率和距离成反比。特率和距离成反比。例如,例如,300波特率波特率表示每秒发送表示每秒发送300个位。个位。6ppt课件2.数据位数据位每个包是指一个字每个包是指一个字节,包括节,包括开始开始/停止停止位,数据位和奇偶位,数据位和奇偶校验位校验位。衡量通信中实际数衡量通信中实际数据位的参数。据位的参数。如何设置取决于想如何设置取决于想传输的信息。比如,传输的信息。比如,标准的标准的ASCII码是码是0-127(7位)位),扩扩展的展的SCII码是码是0-255(8位位)。当计算机发送一个当计算机发送一个信息包,信息包,标准的值标准的值是是5、6、7和和8位位。7ppt课件3.停止位停止位用于表示单用于表示单个包的最后个包的最后一位。一位。注意注意2.使用的停止位的位使用的停止位的位数越多,不同时钟数越多,不同时钟同步的容忍程度越同步的容忍程度越大,但是数据传输大,但是数据传输率同时也越慢。率同时也越慢。1.典型的值典型的值为为1、1.5和和2位位。8ppt课件4.奇偶校奇偶校验位验位例如,如果数据是例如,如果数据是011,那么对于偶,那么对于偶校验,校验位为校验,校验位为0,保证逻辑高的位,保证逻辑高的位数是偶数个。如果数是偶数个。如果是奇校验,校验位是奇校验,校验位为为1。在串口通信中一种在串口通信中一种简单的检错方式。简单的检错方式。对于偶和奇校验的对于偶和奇校验的情况,串口会设置情况,串口会设置校验位(数据位后校验位(数据位后面的一位),用一面的一位),用一个值来确保传输的个值来确保传输的数据有偶数个或者数据有偶数个或者奇数个逻辑高位。奇数个逻辑高位。有四种检错方式:有四种检错方式:偶、奇、高和低偶、奇、高和低,当然没有校验位也当然没有校验位也是可以的。是可以的。9ppt课件7.1.2 串行通信接口串行通信接口RS232RS232美国电子工业协会美国电子工业协会EIA在在1970年指年指定的一种串行通信接口标准,定的一种串行通信接口标准,9芯芯D插头。插头。RS422RS422采用采用4根根数据线,加一根地线,全数据线,加一根地线,全双工、差分传输、多点通信的数双工、差分传输、多点通信的数据传输协议。据传输协议。RS485RS485是在是在RS-422的基础上,为扩大应的基础上,为扩大应用范围,用范围,EIA制定了制定了RS-485标准,标准,添加了多点、双向通信能力。添加了多点、双向通信能力。10ppt课件7.1.2 串行通信接口串行通信接口11ppt课件7.1.2 串行通信接口串行通信接口12ppt课件RS-232-C DB-9各引脚定义:各引脚定义:lCD:载波检测:载波检测l lRXDRXD:接收数据线:接收数据线:接收数据线:接收数据线l lTXDTXD:发送数据线:发送数据线:发送数据线:发送数据线lDTR:数据终端就绪:数据终端就绪lSG:信号线:信号线lDSR:数据设备就绪:数据设备就绪lRTS:请求发送:请求发送lCTS:清除发送:清除发送l lRIRI:振铃提示:振铃提示:振铃提示:振铃提示13ppt课件RS-232-C远距离通信系统远距离通信系统14ppt课件本章内容本章内容本章内容本章内容串口通信原理串口通信原理 S5PV210的的UART通信概述通信概述 S5PV210的的UART功能寄存器功能寄存器 用用UART实现发送和接收数据实现发送和接收数据 412315ppt课件7.1.3 通用异步接收器和发送器通用异步接收器和发送器(UART)UART支持比特率高达支持比特率高达3Mbps,每个,每个UART通道包含两个通道包含两个FIFO用来接收和发送数据,其用来接收和发送数据,其中,中,UART0支持接收支持接收/发送独立的发送独立的256字节字节FIFO,UART1支持支持64B的的FIF0,UART2、3、均支持、均支持16B的的FIFO。S5PV210提供提供4个基于个基于DMA或中断的操作的或中断的操作的独立异步串行独立异步串行I/O端口,端口,UART可以通过产生可以通过产生中断或中断或DMA请求来进行请求来进行CPU和和UART之间的之间的数据传输。数据传输。UART是一种通用串行数据的总线,用于异是一种通用串行数据的总线,用于异步通信,该总线步通信,该总线双向通信双向通信,可以实现,可以实现全双工全双工传输和接收。传输和接收。特特点点16ppt课件7.1.3 通用异步接收器和发送器通用异步接收器和发送器(UART)发送器和接收器包含了发送器和接收器包含了FIFO和数据移位器。和数据移位器。每个每个UART包含包含一个波特率发生器、发送器、接收一个波特率发生器、发送器、接收器和一个控制单元器和一个控制单元。S5PV210的的UART包括包括可编程波特率,红外发射可编程波特率,红外发射器器/接收器,插入接收器,插入1个或个或2个停止位,个停止位,5位、位、6位、位、7位或位或8位的数据宽度以及奇偶校验位的数据宽度以及奇偶校验。特特点点17ppt课件18ppt课件UART结构图结构图19ppt课件1.数据传输模式数据传输模式回环模式回环模式中断或轮询中断或轮询DMA模式模式(此模式仅用于测试,不用做传输数据)。(此模式仅用于测试,不用做传输数据)。S5PV210的的UART提供了一个参考环回模式测试提供了一个参考环回模式测试模式,有助于排除在通信连接中的故障。通过设模式,有助于排除在通信连接中的故障。通过设置置UART控制寄存器中的环回位来选择此模式。控制寄存器中的环回位来选择此模式。当有数据到来或数据可发送时产生中断,通知当有数据到来或数据可发送时产生中断,通知CPU。这种方式要求通信硬件比较高,需要支持。这种方式要求通信硬件比较高,需要支持产生中断信号。产生中断信号。通常实现数据的转移或复制时,通常实现数据的转移或复制时,CPU将从源地址复将从源地址复制数据到寄存器,然后将寄存器数据再写入到目的制数据到寄存器,然后将寄存器数据再写入到目的地址处,这个操作是由地址处,这个操作是由CPU来执行。来执行。20ppt课件2.数据发送数据发送l发送的数据帧是可编程的,包括发送的数据帧是可编程的,包括一个开始位,一个开始位,5-8个数据位,一个可选的奇偶位和个数据位,一个可选的奇偶位和1-2个停止个停止位位,其可由线性控制寄存器,其可由线性控制寄存器ULCONn来设置。来设置。l发送器也可以产生一个终止条件,其可以对一发送器也可以产生一个终止条件,其可以对一个发送时间强制串行输出为逻辑个发送时间强制串行输出为逻辑0。在当前发。在当前发送字被完全传输完以后,该模块发送一个终止送字被完全传输完以后,该模块发送一个终止信号。在终止信号发送后,其不断发送数据到信号。在终止信号发送后,其不断发送数据到Tx FIFO中。中。21ppt课件lUART数据帧格式数据帧格式22ppt课件3.数据接收数据接收溢出错误溢出错误奇偶校验错误奇偶校验错误帧错误帧错误终止条件终止条件是指在旧数据被读取新数据覆盖了旧数据是指在旧数据被读取新数据覆盖了旧数据是指接收器侦测到一个不希望的奇偶条件。是指接收器侦测到一个不希望的奇偶条件。是指接收到的数据没有一个有效的停止位。是指接收到的数据没有一个有效的停止位。是指是指RxDn输入保持逻辑输入保持逻辑0状态长于一个帧的传状态长于一个帧的传输时间。输时间。23ppt课件4.波特率波特率l每个每个UART波特率发生器为发送器和接收器提波特率发生器为发送器和接收器提供串行时钟。供串行时钟。l存储在波特率除数寄存器和分槽寄存器的值使存储在波特率除数寄存器和分槽寄存器的值使用来确定串行用来确定串行Tx/Rx时钟速率。时钟速率。lDIV_VAL=UBRDIVn+(numof1s in UDIVSLOTn)/16lDIV_VAL=(PCLK/(bps*16)-1lDIV_VAL=(SCLK_UART/(BPS*16)-124ppt课件举例:举例:l如果波特率是如果波特率是115200bps且且SLCK_UART时钟时钟是是40MHz,UBRDIVn和和UDIVSLOTn的值为:的值为:lDIV_VAL=(40000000/(115200*-16)-1=21.7-1lUBRDIVn=20(DIV_VAL的整数部分)的整数部分)l(UDIVSLOTn中中1的数量)的数量)/16=0.7l则则 (UDIVSLOTn中中1的数量)的数量)=1125ppt课件本章内容本章内容本章内容本章内容串口通信原理串口通信原理 S5PV210的的UART通信概述通信概述 S5PV210的的UART功能寄存器功能寄存器 用用UART实现发送和接收数据实现发送和接收数据 412326ppt课件7.2 S5PV210的的UART功能寄存器功能寄存器行控制寄存器(ULCONn)控制寄存器(UCONn)FIFO控制寄存器(UFCONn)UART功能寄存器MODEM控制寄存器(UMCONn)接收发送状态寄存器(UTRSTATn)FIFO状态寄存器(UFSTATn)MODEM状态寄存器(UMSTATn)发送缓存寄存器(UTXHn)接收缓存寄存器(URXHn)波特率除数寄存器(UBRDIVn)错误状态寄存器(UERSTARn)分槽寄存器(UDIVSLOTn)27ppt课件l初始化用到的寄存器有:初始化用到的寄存器有:ULCONn、UCONn、UFCONn、UMCONn、UBRDIVn、UDIVSLOTn。l收到用到的寄存器有:收到用到的寄存器有:UTRSTATn、UTXHn、URXHn。以下就对这几个寄存器相应的参。以下就对这几个寄存器相应的参数进行详细说明。数进行详细说明。28ppt课件7.2.1 UART控制寄存器控制寄存器l l1.UART行控制寄存器行控制寄存器l通过设置通过设置ULCONn来设置来设置UART的通信方式,的通信方式,是否使用红外,数据帧中奇偶校验类型、停止是否使用红外,数据帧中奇偶校验类型、停止位的个数、和数据位的位数。位的个数、和数据位的位数。29ppt课件lS5PV210中有中有4个个UART,所以行控制寄存器,所以行控制寄存器也四个分别是也四个分别是ULCON0、ULCON1、ULCON2、ULCON3,如表所示:,如表所示:l一般的正常通信模式下,一般的正常通信模式下,通常设置为无奇偶校通常设置为无奇偶校验位、验位、1个停止位、个停止位、8个数据位个数据位,则,则ULCONn设置为设置为0 x3。30ppt课件l2.UART控制寄存器(控制寄存器(UCONn)lUCONn控制寄存器当选择有控制寄存器当选择有FCLK提供时钟频提供时钟频率时的分频除数、时钟选择、发送接收终端产率时的分频除数、时钟选择、发送接收终端产生类型、发送接收模式等。下表为生类型、发送接收模式等。下表为UCONn的的详细设置表。详细设置表。31ppt课件32ppt课件l3.FIFO控制寄存器(控制寄存器(UFCONn)lUFCONn FIFO控制寄存器用来设置是否使能控制寄存器用来设置是否使能FIFO、发送接收、发送接收FIFO触发级别、是否自动清触发级别、是否自动清空缓冲区。下表为空缓冲区。下表为UFCONn寄存器的设置位。寄存器的设置位。33ppt课件34ppt课件l4.UART MODEM控制寄存器(控制寄存器(UMCONn)lUMCONn寄存器设置时有启用寄存器设置时有启用AFC自动流控,自动流控,通常不使用通常不使用AFC自动流控,所以通常设置为自动流控,所以通常设置为0,UMCONn寄存器详细位可参看数据手册。寄存器详细位可参看数据手册。35ppt课件l5.UART波特率除数寄存器和波特率除数寄存器和UART分槽寄存分槽寄存器器lUBRDIVn寄存器和寄存器和UDIVSLOTn寄存器用来决寄存器用来决定波特率。定波特率。36ppt课件7.2.2 UART操作寄存器操作寄存器l1.UART接收发送状态寄存器(接收发送状态寄存器(UTRSTATn)lUTRSTATn寄存器用于记录寄存器用于记录UART发送和接收发送和接收的状态,其中包括发送器是否为空、发送缓冲的状态,其中包括发送器是否为空、发送缓冲寄存器是否为空。寄存器是否为空。l如下表所示:如下表所示:37ppt课件38ppt课件l2.UART发送、接收缓冲寄存器发送、接收缓冲寄存器lUTXHn、URXHn寄存器用于缓冲发送和接收寄存器用于缓冲发送和接收的数据,因为数据存储分为大端模式和小端模的数据,因为数据存储分为大端模式和小端模式。式。lUTXHn发送缓冲寄存器为只写寄存器、发送缓冲寄存器为只写寄存器、URXHn接收寄存器为只读寄存器。接收寄存器为只读寄存器。39ppt课件缓冲寄存器位描述初始值TXDATAn31:8保留-7:0UARTnUARTn的的的的发送数据发送数据发送数据发送数据-RXDATAn31:8保留07:0UARTnUARTn的的的的接收数据接收数据接收数据接收数据0 x0040ppt课件本章内容本章内容本章内容本章内容串口通信原理串口通信原理 S5PV210的的UART通信概述通信概述 S5PV210的的UART功能寄存器功能寄存器 用用UART实现发送和接收数据实现发送和接收数据 412341ppt课件7.3 UART通信实例(一)通信实例(一)IO程序编程序编程步骤程步骤第第1步步查看电路连接图第第2步步翻查数据手册第第3 步步确定关键定义第第4步步编写程序第第5步步实验程序42ppt课件7.3.1 查看电路连接图查看电路连接图l通常使用的串口是通常使用的串口是RS-232,在,在RS-232标准中标准中定义了逻辑定义了逻辑1和逻辑和逻辑0电压级数,以及标准的传电压级数,以及标准的传输速率和连接器类型。输速率和连接器类型。43ppt课件44ppt课件l专用芯片专用芯片SP3232,用于实现,用于实现RS-232串行数据串行数据通信接口和通信接口和TTL兼容的数字逻辑电路之间的电兼容的数字逻辑电路之间的电平转换,提供了两路双向的接收发送驱动器,平转换,提供了两路双向的接收发送驱动器,可以同时对可以同时对Rx、Tx、CTS和和RTS思路信号进思路信号进行转换。行转换。45ppt课件l串口的连接通常使用简单连接方式,只连接三串口的连接通常使用简单连接方式,只连接三根线,即发送、接收和信号地线,需要连接根线,即发送、接收和信号地线,需要连接RSTXD0、RSRXD0、GND三根线三根线。l由图可知由图可知TXD0和和GPA0_1引脚连接,引脚连接,RXD0和和GPA0_0引脚连接。引脚连接。46ppt课件7.3.2 翻查数据手册翻查数据手册l查看数据手册中查看数据手册中GPIO中中A0组中两个引脚的设组中两个引脚的设置。置。l图中图中TXD0、RXD0和和GPA0复用一个引脚,所复用一个引脚,所以使用之前一定要设置引脚的功能。以使用之前一定要设置引脚的功能。47ppt课件7.3.4 编写程序编写程序l1.初始化初始化l在程序运行之前一定要对相关的寄存器进行初在程序运行之前一定要对相关的寄存器进行初始化,始化,下面的下面的uart_init函数是对函数是对UART相关寄相关寄存器进行初始化,存器进行初始化,clock_init函数是对函数是对clock相相关寄存器进行初始化。关寄存器进行初始化。48ppt课件lvoid uart_init()l l GPA0CON&=0 xFF;l GPA0CON|=0 x22;/0b 00100010l l /*8-bits/One stop bit/No parity/Normal mode operation*/l /*每次每次8位,位,1个停止位,无奇偶验证,正常发送模式(非红外)个停止位,无奇偶验证,正常发送模式(非红外)*/l ULCON0=0 x3|(0 2)|(0 3)|(0 6);/0b 0 0 xx 0 11l l /*Interrupt request or polling mode/Normal transmit/Normal operation/PCLK/*/l /*发送和接受引脚采用中断和轮询查询模式,正常发送,常规操作,时发送和接受引脚采用中断和轮询查询模式,正常发送,常规操作,时钟选择为钟选择为PCLK*/l UCON0=1|(1 2)|(0 10);l l /*禁止禁止FIFO*/l UFCON0=0;49ppt课件l/*l *波特率计算:波特率计算:115200bps l *PCLK=66MHz l *DIV_VAL=(66000000/(115200 x 16)-1=35.8-1=34.8 l *UBRDIV0=34(DIV_VAL的整数部分的整数部分)l *(num of 1s in UDIVSLOTn)/16=0.8(DIV_VAL的小数部分的小数部分)l *(num of 1s in UDIVSLOTn)=12 l *UDIVSLOT0=0 xDDDD(在数据手册上在数据手册上880页查表页查表)l */l UBRDIV0=34;/波特率分度值波特率分度值 l UDIVSLOT0=0 xDDDD;l 50ppt课件51ppt课件lvoid uart_send_byte(unsigned char byte)l l while(!(UTRSTAT0&(1 2);/*等待发送缓冲区为空等待发送缓冲区为空*/l UTXH0=byte;/*发送一字节数据发送一字节数据*/l l lunsigned char uart_recv_byte()l l while(!(UTRSTAT0&1);/*等待接收缓冲区有数据可读等待接收缓冲区有数据可读*/l return URXH0;/*接收一字节数据接收一字节数据*/l l lvoid uart_send_string(char*str)l l char*p=str;l while(*p)l uart_send_byte(*p+);l52ppt课件l(3)主函数)主函数lint main()l l char byte;l GPC1CON&=(0 xFF 12);l GPC1CON|=(LEDS12)|(LEDS16);l GPC1DAT|=0 x33;l uart_send_string(rnUART Test in S5PV210rn);l while(1)l l uart_send_string(rn1.LED1 Togglern);l uart_send_string(rn2.LED2 Togglern);l uart_send_string(rnPlease select 1 or 2 to Toggle the LEDrn);l byte=uart_recv_byte();l uart_send_byte(byte);l if(byte=1)l GPC1DAT=1 3;/改变改变LED1的状态的状态 l else if(byte=2)l GPC1DAT=1 4;/改变改变LED2的状态的状态 l l return 0;l53ppt课件l程序入口:程序入口:l.global _startl_start:lbl clock_initlbl uart_initlbl mainlhalt:b halt54ppt课件l下面介绍如何把本实例的目标下面介绍如何把本实例的目标bin文件制作成文件制作成类类u-boot启动的目标启动的目标bin文件。文件。l因为因为u-boot启动分两个阶段启动分两个阶段BL1和和BL2启动,启动,iROM在加载在加载BL1时会校验时会校验BL1的头信息,规的头信息,规定如下:定如下:l0 x0:BL1的大小(最大的大小(最大16KB-16B)l0 x4:0规定规定l0 x8:BL1的校验和。的校验和。l0 x16:0规定。规定。55ppt课件l在生成源在生成源bin后,还需要添加后,还需要添加16B的头信息,制作的头信息,制作成类成类u-boot的目标的目标bin文件。具体读者还需要详细文件。具体读者还需要详细了解了解BootLoader的启动过程。的启动过程。l为了给源为了给源bin文件头加入文件头加入16B的头信息,编写文件的头信息,编写文件addtopinfo.c56ppt课件l具体烧写到具体烧写到SD卡的流程如下:卡的流程如下:l(1)执行如下命令生成)执行如下命令生成addtopinfo(#表示在表示在Shell命令行下执行)。命令行下执行)。l#gcc addtopinfo.c o addtopinfol(2)然后用)然后用addtopinfo制作带有头信息的制作带有头信息的bin文件。文件。l#./addtopinfo source.bin dest.binl(3)如果在虚拟机下运行)如果在虚拟机下运行Linux,就将,就将SD卡插入卡插入SD读卡器,将鼠标移到虚拟机中,然后将读卡器,将鼠标移到虚拟机中,然后将SD卡读卡器卡读卡器插入计算机,这是插入计算机,这是Linux中将自动挂载中将自动挂载SD卡。如果再卡。如果再实体机下运行实体机下运行Linux,就直接把,就直接把SD卡读卡器插入主机,卡读卡器插入主机,如果没有自动挂载,就手动用如果没有自动挂载,就手动用mount命令挂载。命令挂载。l#mount /dev/adb1 /mnt57ppt课件l(4)在在Linux中执行中执行df查看分区信息。查看分区信息。l#df l Filesystem 1K-blocks Used Available Use%Mounted onl l/dev/sdb1 3864000 4 3863996 1%/mntlSdb1是是SD卡的第卡的第1个分区。个分区。l(5)执行命令烧写)执行命令烧写dest.bin到到SD的第的第1块。块。l(6)拔下)拔下SD卡,将其插入开发板,然后拨动启卡,将其插入开发板,然后拨动启动选择开关,选择从动选择开关,选择从SD启动,上电后,看到逻辑启动,上电后,看到逻辑程序现象。程序现象。58ppt课件7.4 UART通信实例(二)通信实例(二)l在实例一中实现了串口的基本通信功能,下面在实例一中实现了串口的基本通信功能,下面在实例二使用按键通过串口传输命令来控制在实例二使用按键通过串口传输命令来控制LED。l在此程序中需要建立四个文件,分别是在此程序中需要建立四个文件,分别是start.S key.c uart.c clock.c。在。在uart.c和和clock.c中中主要包含五个函数:主要包含五个函数:clock_init()uart_init()uart_send_byte()uart_send_byte()uart_recv_byte()这几个函数与实例一相同,在此不再叙述。这几个函数与实例一相同,在此不再叙述。l在在start.S中定义一个程序入口。中定义一个程序入口。59ppt课件start.Sl.global _start 声明一个全局的标号声明一个全局的标号 l.global key_isr _lstart:l 设置栈,以调用设置栈,以调用c函数函数 l bl clock_init lbl uart_init l 开总中断开总中断 l mrs r0,cpsr 读取读取cpsr寄存器中的值到寄存器中的值到r0l bic r0,r0,#0 x00000080 清除第清除第7位,位,IRQ中中断禁止位,写断禁止位,写0使能使能IRQl msr cpsr,r0 ;把修改好的把修改好的r0的值重新协会的值重新协会cpsrl bl main ;跳转到跳转到C函数去执行函数去执行 60ppt课件lhalt:l b halt lkey_isr:l ;计算返回地址计算返回地址:PC的值等于当前执行的地址的值等于当前执行的地址+8,当,当CPU正要执行某条指令时(还未执行),被中断,正要执行某条指令时(还未执行),被中断,l ;这是这条刚要执行的指令的地址刚好这是这条刚要执行的指令的地址刚好=PC-4 l sub lr,lr,#4 l stmfd sp!,r0-r12,lr ;保护现场保护现场l bl key_handle l ;恢复现场恢复现场l ldmfd sp!,r0-r12,pc ;表示把表示把spsr恢复恢复到到cpsr61ppt课件lvoid key_handle()l l volatile unsigned char key_code=EXT_INT_0_PEND&0 xF;/检查检查4个按键个按键 l volatile unsigned char key=0;l VIC0ADDRESS=0;/*清中断向量寄存器清中断向量寄存器*/l EXT_INT_0_PEND|=0 xF;/*清中断挂起寄存器清中断挂起寄存器*/l l if(key_code=1)/*key1*/l l key=1;l GPC1DAT|=1 3;/*LED1 ON*/l l else if(key_code=2)/*key2*/l l key=2;l GPC1DAT&=(1 3);/*LED1 OFF*/l l 62ppt课件lelse if(key_code=4)/*key3*/l l key=3;l GPC1DAT|=1 4;/*LED2 ON*/l l else if(key_code=8)/*key4*/l l key=4;l GPC1DAT&=(1 4);/*LED2 OFF*/l l uart_send_string(You are pressed key:);l uart_send_byte(key);l uart_send_string(rn);l 63ppt课件lint main()l l GPC1CON&=(0 xFF 12);l GPC1CON|=(0 x0112)|(0 x0116);/*配置配置GPC0_3和和GPC0_4为输出:为输出:LED1和和LED2*/l GPH0CON|=0 xFFFFFFFF 0;/*配置配置GPH0_0-GPH0_3为外部中断:为外部中断:key1-key4*/l EXT_INT_0_CON&=(0 xFF 0);/*清空低八位清空低八位*/l EXT_INT_0_CON|=2|(2 4)|(28)|(212);/*配置配置EXT_INT0-EXT_INT3为下降沿触发为下降沿触发 0b010 0 010*/l EXT_INT_0_MASK&=0 xF;/*取消屏蔽外部中断取消屏蔽外部中断EXT_INT0-EXT_INT3*/l VIC0INTSELECT&=0 xF;/*选择外部中断选择外部中断EXT_INT0-外部中断外部中断EXT_INT3为为IRQ类型的中类型的中断断*/l VIC0INTENABLE|=0 xF;/*使能外部中断使能外部中断EXT_INT0-EXT_INT3*/64ppt课件l VIC0VECTADDR0=(int)key_isr;/*当当EXT_INT0触发中触发中断,即用户按下断,即用户按下key1时,时,l CPU就会自动的将就会自动的将VIC0VECTADDR0的值赋给的值赋给VIC0ADDRESS并跳转到这个地址去并跳转到这个地址去执执*/l VIC0VECTADDR1=(int)key_isr;l VIC0VECTADDR2=(int)key_isr;l VIC0VECTADDR3=(int)key_isr;l l uart_send_string(rnKey and Uart Testrn);l while(1);l l return 0;l65ppt课件lMakefile文件编写和烧写过程请参考文件编写和烧写过程请参考7.3.4节。节。将程序烧写到将程序烧写到SD卡上,上电从卡上,上电从SD卡自动运行,卡自动运行,按下按键,控制相应按下按键,控制相应LED灯的亮灭,并且能够灯的亮灭,并且能够在终端上显示那个键被按下。在终端上显示那个键被按下。l显示结果:显示结果:l#Starting application at 0 xD0020010lKey and Uart Test lYou are pressed key:1lYou are pressed key:2lYou are pressed key:366ppt课件本章小结本章小结67ppt课件
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!