| 本帖最后由 lilihua0721 于 2011-11-24 17:55 编辑 
 以下是我学习LM3S811 UART模块的总结:使用UARTA函数介绍、对Stellaris系列UART的FIFO的认识,分别放在以下连续的三个楼层中!
 一、使用UART库函数介绍
 1、 函数:UARTConfigSetExpClk( )
 功能:UART配置(要求提供明确的时钟速率)
 原型:void UARTConfigSetExpClk(unsigned long ulBase,unsigned long ulUARTClk,
 unsigned long ulBaud,unsigned long ulConfig)
 参数: ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
 ulUARTClk:提供给UART模块的时钟速率,即系统时钟频率
 ulBaud:期望设定的波特率
 ulConfig:UART端口的数据格式,取下列各组数值之间的“或运算”组合形式:
 说明:数据字长度:UART_CONFIG_WLEN_8 // 8位数据
 UART_CONFIG_WLEN_7 // 7位数据
 UART_CONFIG_WLEN_6 // 6位数据
 UART_CONFIG_WLEN_5 // 5位数据
 停止位:UART_CONFIG_STOP_ONE // 1个停止位
 UART_CONFIG_STOP_TWO // 2个停止位(可降低误码率)
 校验位:UART_CONFIG_PAR_NONE // 无校验
 UART_CONFIG_PAR_EVEN // 偶校验
 UART_CONFIG_PAR_ODD // 奇校验
 UART_CONFIG_PAR_ONE // 校验位恒为1
 UART_CONFIG_PAR_ZERO // 校验位恒为0
 
 2、 函数:UARTConfigSet( )
 功能:UART配置(自动获取时钟速率)
 原型:#define UARTConfigSet(a, b, c) UARTConfigSetExpClk(a, SysCtlClockGet( ), b, c)
 参数:详见UARTConfigSetExpClk函数描述
 返回:无
 说明:本宏函数常常用来代替函数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);
 
 3、 函数:UARTEnable( )
 功能:使能指定UART端口的发送和接收操作
 原型:void UARTEnable(unsigned long ulBase)
 参数:ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE
 示例:使能UART0发送和接受操作:UARTEnable(UART0_BASE)
 
 
      使能UART1发送和接受操作:UARTEnable(UART1_BASE) 
 
 
 
 4、函数:UARTCharPut( ) 功能:发送1个字符到指定的UART端口(等待) 原型:void UARTCharPut(unsigned long ulBase, unsigned char ucData) 参数:ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE         ulData:要发送的字符 返回:无(在未发送完毕前不会返回) 示例:发送0x55到UART0端口:UARTCharPut(UART0_BASE, 0x55) 
 
 
 
 5、函数:UARTCharGet( ) 功能:从指定的UART端口接收1个字符(等待) 原型:long UARTCharGet(unsigned long ulBase) 参数:ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE 返回:读取到的字符,并自动转换为long型(在未收到字符之前会一直等待) 示例:从UART0端口读取一个字符:Readdata = UARTCharGet(UART0_BASE); 
 
 
 
 6、函数:UARTCharPutNonBlocking( ) 功能:发送1个字符到指定的UART端口(不等待) 原型:tBoolean UARTCharPutNonBlocking(unsigned long ulBase, unsigned char ucData) 参数:ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE ulData:要发送的字符 返回:如果发送FIFO里有可用空间,则将数据放入发送FIFO,并立即返回true       如果发送FIFO里没有可用空间,则立即返回false(发送失败) 说明:通常,在调用本函数之前应当先调用UARTSpaceAvail( )确认发送FIFO里有可用空间 示例:从UART0发送数据0x55:while(UARTSpaceAvail(UART0_BASE)){ UARTCharNonBlockingPut(UART0_BASE, 0x55);} 
 
 
 
 7、函数UARTCharGetNonBlocking( ) 功能:从指定的UART端口接收1个字符(不等待) 原型:long UARTCharGetNonBlocking(unsigned long ulBase) 参数:ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE 返回:如果接收FIFO里有字符,则立即返回接收到的字符(自动转换为long型)       如果接收FIFO里没有字符,则立即返回-1(接收失败) 说明:通常,在调用本函数之前应当先调用UARTCharsAvail( )来确认接收FIFO里有字符示例:从UART0接受数据: while(UARTCharsAvail(UART0_BASE)){
 ReadData[i++]=UARTCharGetNonBlocking(UART0_BASE)}
 |