📄 uart_rx_tx.txt
字号:
#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "gpio.h"
#include "interrupt.h"
#include "sysctl.h"
#include "uart.h"
#define LED3 GPIO_PIN_6
#define LED4 GPIO_PIN_4
#define UART0_PIN GPIO_PIN_0 | GPIO_PIN_1
#define JTAG GPIO_PIN_1
int i=0,k=0;
long recbuff[100];
void UART0_ISR(void) // UART0中断服务函数
{
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART0_BASE, true); // 获得中断状态。
UARTIntClear(UART0_BASE, ulStatus); // 清除等待响应的中断。
if(ulStatus &(UART_INT_RX|UART_INT_RT)) // 检查是否有未响应的传输中断。
{
while(UARTCharsAvail(UART0_BASE)) // 处理传输中断。
{
recbuff[i]=UARTCharGetNonBlocking(UART0_BASE);
i++;
}
}
}
void Go2JTAG(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIODirModeSet(GPIO_PORTB_BASE,JTAG,GPIO_DIR_MODE_IN);
if(GPIOPinRead(GPIO_PORTB_BASE,JTAG)==0)
{
while(1);
}
}
int main(void)
{
Go2JTAG();
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ); // 设置晶振为时钟源。
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
IntMasterEnable();
GPIODirModeSet(GPIO_PORTA_BASE, UART0_PIN, GPIO_DIR_MODE_HW);
// 设置GPIO的A0和A1为UART引脚。
// (A0->RXD,A1->TXD)
GPIODirModeSet( GPIO_PORTC_BASE, LED3|LED4,GPIO_DIR_MODE_OUT);
GPIOPinWrite(GPIO_PORTC_BASE, LED3|LED4, ~LED4); // 初始化IO口。
UARTConfigSet(UART0_BASE, 9600, (UART_CONFIG_WLEN_8 |
UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
// 配置UART 为 9600波特率, 8-N-1模式发送数据。
UARTIntEnable(UART0_BASE, UART_INT_RX|UART_INT_RT);
UARTFIFOLevelSet(UART0_BASE,UART_FIFO_TX1_8,UART_FIFO_RX7_8);
IntEnable(INT_UART0);
while(1)
{
while(UARTSpaceAvail(UART0_BASE)&&(i>0))
{
UARTCharPutNonBlocking(UART0_BASE,recbuff[k++]);
i--;if(i==0) k=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -