LM3S811学习笔记(2)-UART通信
UART通信(1)
使用串口0实现将接收的数据立马发送出去
使用了库函数实现
效果图
程序
文件Test.c
#include "LM3Sxxx.h"
#include "myUART.h"
int main(void)
{ /* 初始化系统时钟 */
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ);
/* 初始化串口0 */
UART0_Init(9600);
while(1)
{
;
}
}
--------------------------
文件myUART.c
#include "myUART.h"
/* 串口0初始化 */
void UART0_Init(unsigned long ulBaudRate)
{
/* 使能外设 UART0 GPIOA */
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
/* 配置端口功能 */
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
/* 串口配置 9600 8-N-1 */
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
IntMasterEnable(); /* 打开处理器中断 */
IntEnable(INT_UART0); /* 打开串口0中断 */
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT); /* 串口中断使能--接收中断 和 接收超时中断 */
UARTEnable(UART0_BASE); /* 使能串口 */
}
/* 串口0中断函数 */
void UART0_ISR(void)
{
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART0_BASE, true); /* 获取中断状态 */
UARTIntClear(UART0_BASE, ulStatus); /* 清除中断标志位 */
while(UARTCharsAvail(UART0_BASE)) /* 这里等待接收字符 */
{
/* 将接收的字符发送出去 */
UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE));
}
}
//void UART0_ISR (void)
//{
// UARTIntClear(UART0_BASE, UART_INT_RX | UART_INT_RT); /* 清除中断标志位 */
// UARTCharPutNonBlocking(UART0_BASE, UARTCharGet(UART0_BASE)); /* 发送接收到的字符 */
//}
--------------------------
文件myUART.h
#include "LM3Sxxx.h"
/* 串口0初始化 */
extern void UART0_Init(unsigned long ulBaudRate);
/* 串口0中断服务函数 */
extern void UART0_ISR (void);
未完待续...