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
返回  原始的或屏蔽的中断状态

posted @ 2011-04-12 11:27  flying1104  阅读(2375)  评论(0编辑  收藏  举报