UART 解读

LM3S 库 中UART通信注解

#define u32 unsigned long;

#define u8   unsigned char;

 

GPIOPinTypeUART(u32 ulPort,u8 ucPins)

ulPort 填写对应的UART GPIO基地址

ucPins填写对应的UART GPIO管脚

如uart在GPIO的A系列管脚的PA0,和PA1口处

GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);

 

SysCtlPeripheralEnable(u32 ulPeripheral);

ulPeripheral 填写相应要打开的外围设备

这里要打开UART对应的A系列外围和UART设备

SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); 
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

 

 

二、UART库函数 
1配置与控制 
函数 UARTConfigSetExpClk( )用来对 UART端口的波特率、数据格式进行配置

在实际编程时, 往往用形式更简单的宏函数 UARTConfigSet( )来代替上述库函数。 
宏函数UARTConfigSet( ) 
功能  UART配置(自动获取时钟速率) 
原型  #define UARTConfigSet(a, b, c)    UARTConfigSetExpClk(a, SysCtlClockGet( ), b, c) 
说明 
本宏函数常常用来代替函数UARTConfigSetExpClk( ),在调用之前应当先调用SysCtlClockSet( )函 
数设置系统时钟(不要使用误差很大的内部振荡器IOSC、IOSC/4、INT30等) 
示例 
//  配置UART0:波特率9600,8个数据位,1个停止位,无校验 
UARTConfigSet(UART0_BASE, 9600, UART_CONFIG_WLEN_8 | 
       UART_CONFIG_STOP_ONE | 
       UART_CONFIG_PAR_NONE); 
//  配置UART1:波特率最大,5个数据位,1个停止位,无校验 
UARTConfigSet(UART1_BASE, SysCtlClockGet( ) / 16, UART_CONFIG_WLEN_5 | 
            UART_CONFIG_STOP_ONE | 
            UART_CONFIG_PAR_NONE); 
//  配置UART2:波特率2400,8个数据位,2个停止位,偶校验 
UARTConfigSet(UART2_BASE, 2400, UART_CONFIG_WLEN_8 | 
       UART_CONFIG_STOP_TWO | 
       UART_CONFIG_PAR_EVEN);

函数UARTFIFOLevelSet( )用来设置收发FIFO触发中断 
时的深度级别。 
函数 UARTFIFOLevelSet( ) 
功能  设置使指定UART端口产生中断的收发FIFO 深度级别 
原型 
void UARTFIFOLevelSet(unsigned long ulBase, 
          unsigned long ulTxLevel, 
          unsigned long ulRxLevel) 
参数 
ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE 
ulTxLevel:发送中断FIFO的深度级别,取下列值之一: 
  UART_FIFO_TX1_8    //   在1/8深度时产生发送中断 
  UART_FIFO_TX2_8    //   在1/4深度时产生发送中断 
  UART_FIFO_TX4_8    //   在1/2深度时产生发送中断 
  UART_FIFO_TX6_8    //   在3/4深度时产生发送中断 
  UART_FIFO_TX7_8    //   在7/8深度时产生发送中断 
  注:当发送FIFO里剩余的数据减少到预设的深度时触发中断,而非填充到预设深度时触发中断。因此在需要发送大量数据的应用场合,为了减少中断次数提高发送效率,发送FIFO中断触发深度级别设置的越浅越好,如设置为UART_FIFO_TX1_8。 
ulRxLevel:接收中断FIFO的深度级别,取下列值之一: 
  UART_FIFO_RX1_8    //   在1/8深度时产生接收中断 
  UART_FIFO_RX2_8    //   在1/4深度时产生接收中断 
  UART_FIFO_RX4_8    //   在1/2深度时产生接收中断 
  UART_FIFO_RX6_8    //   在3/4深度时产生接收中断 
  UART_FIFO_RX7_8    //   在7/8深度时产生接收中断 
  注:当接收FIFO里已有的数据累积到预设的深度时触发中断,因此在需要接收大量数据的应 
用场合,为了减少中断次数提高接收效率,接收FIFO中断触发深度级别设置的越深越好,如设置 
为UART_FIFO_RX7_8。 


2、使能与禁止 
函数 UARTEnable( )和 UARTDisable( )用来使能和禁止 UART 端口的收发功能。一般是 
先配置 UART,最后使能收发。当需要修改 UART 配置时,应当先禁止,配置完成后再使 
能。 
函数 UARTEnable( ) 
功能  使能指定UART端口的发送和接收操作 
原型  void UARTEnable(unsigned long ulBase) 
参数  ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE
返回  无 
函数 UARTDisable( ) 
功能  禁止指定UART端口的发送和接收操作 
原型  void UARTDisable(unsigned long ulBase) 
参数  ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE
返回  无 


3、 数据收发

函数 UARTCharPut( )以轮询的方式发送数据,如果发送 FIFO有空位则填充要发送的数
据,如果没有空位则一直等待。 
函数 UARTCharGet( )以轮询的方式接收数据, 如果接收 FIFO里有数据则读出数据并返 
回,如果没有数据则一直等待。 
函数 UARTCharPut( ) 
功能  发送1个字符到指定的UART端口(等待) 
原型  void UARTCharPut(unsigned long ulBase, unsigned char ucData) 
参数 
ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE 
ulData:要发送的字符 
返回  无(在未发送完毕前不会返回) 
函数 UARTCharGet( ) 
功能  从指定的UART端口接收1 个字符(等待) 
原型  long UARTCharGet(unsigned long ulBase) 
参数  ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE
返回  读取到的字符,并自动转换为long型(在未收到字符之前会一直等待)


4、中断控制 
UART 端口在收发过程中可产生多种中断,处理起来比较灵活。函数 UARTIntEnable( )
和 UARTIntDisable( )用来使能和禁止 UART 端口的一个或多个中断。 
函数UARTIntClear( )用来清除UART的中断状态, 函数UARTIntStatus( )用来获取UART 
的中断状态。

函数 UARTIntEnable( ) 
功能  使能指定UART端口的一个或多个中断 
原型  void UARTIntEnable(unsigned long ulBase, unsigned long ulIntFlags) 
参数 
ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE 
ulIntFlags:指定的中断源,应当取下列值之一或者它们之间的任意“或运算”组合形式: 
  UART_INT_OE   //    FIFO溢出错误中断 
  UART_INT_BE    //    BREAK错误中断 
  UART_INT_PE    //   奇偶校验错误中断 
  UART_INT_FE    //   帧错误中断 
  UART_INT_RT    //   接收超时中断 
  UART_INT_TX   //   发送中断 
  UART_INT_RX   //   接收中断 
    注:接收中断和接收超时中断通常要配合使用,即UART_INT_RX | UART_INT_RT 
返回  无 
函数 UARTIntDisable( ) 
功能  禁止指定UART端口的一个或多个中断 
原型  void UARTIntDisable(unsigned long ulBase, unsigned long ulIntFlags) 
参数  参见表1.26的描述 
返回  无 
函数 UARTIntClear( ) 
功能  清除指定UART端口的一个或多个中断 
原型  void UARTIntClear(unsigned long ulBase, unsigned long ulIntFlags) 
参数  参见表1.26的描述 
返回  无 
函数 UARTIntStatus( ) 
功能  获取指定UART端口当前的中断状态 
原型  unsigned long UARTIntStatus(unsigned long ulBase, tBoolean bMasked) 
参数 
ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或 UART2_BASE 
bMasked:如果需要获取原始的中断状态,则取值false 
   如果需要获取屏蔽的中断状态,则取值true 
返回  原始的或屏蔽的中断状态

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值