1.电路图
首先看下串口的电路(主要知道采用的是串口5,that is ok)
2.部分源代码 首先我们必须了解一些串口的库函数,你要使用库函数,所以你 要了解各个库函数之间的联系与区别,不然用哪个,怎么用你都不知道。 这里我主要看的都是M3的串口的库函数,相信和M4几乎应该是一样的,如果有那些是不一样的,还希望网友指出。
- (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( ),在调用之前应当先调用SysCtlClockSet( )函数设置系统时钟(不要使用误差很大的内部振荡器IOSC、IOSC/4、INT30等)
- // 配置UART0:波特率9600,8个数据位,1个停止位,无校验
- (3)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);
- (4)UARTEnable( )
- 功能
- 使能指定UART端口的发送和接收操作
- 原型
- void UARTEnable(unsigned long ulBase)
- 参数
- ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
- 811和9b96的UART0端口都是对应于GPIO管脚的PA0和PA1
- (5)函数UARTCharPut( )
- 功能
- 发送1个字符到指定的UART端口(等待)
- 原型
- void UARTCharPut(unsigned long ulBase, unsigned char ucData)
- 参数
- ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
- ulData:要发送的字符
- 返回
- 无(在未发送完毕前不会返回)
- (6)函数UARTCharGet( )
- 功能
- 从指定的UART端口接收1个字符(等待)
- 原型
- long UARTCharGet(unsigned long ulBase)
- 参数
- ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
- 返回
- 读取到的字符,并自动转换为long型(在未收到字符之前会一直等待)
- (7)函数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里有可用空间
- (8)函数UARTCharGetNonBlocking( )
- 功能
- 从指定的UART端口接收1个字符(不等待)
- 原型
- long UARTCharGetNonBlocking(unsigned long ulBase)
- 参数
- ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
- 返回
- 如果接收FIFO里有字符,则立即返回接收到的字符(自动转换为long型)
- 如果接收FIFO里没有字符,则立即返回-1(接收失败)
- 说明
- 通常,在调用本函数之前应当先调用UARTCharsAvail( )来确认接收FIFO里有字符
- 现在来实现PC一个发送一个数据,串口接收,然后返回PC的试验。
3. 功能及显示 简单的串口收发(非中断实现)(清风的源码上修改)
‘