请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:F28M36H53C2
工具/软件:TI C/C++编译器
您好,
我遇到了UART FIFO的配置问题。
我的UART配置为fallow:
void BSL_UartInit()
{//Initialize
the UART
//设置波特率=11.52万
//数据位数=8
//关闭奇偶校验
//停止位数=1
UARTConfigSetExpClk(UART0_Base,CparliRegisters ClockSet(system_Clock_speed),11.52万,(FIFT_CONFIG_WLEN_OT_STOP_UART0_ST_UART0),
启用UART0_REGIT_UARTNO_UART0
//启用UART中断
UARTIntEnable (UART0_BAS, UART_INT_RX |/*UART_INT_RT |*/ UART_INT_BE);
//启用UART
UARTEnable(UART0_BASE);
UartTxFS.status = UART_TX_FSM_IDLE;
}
所以我编写以下代码从UART接收数据:
#define UART_RX_BUF_LENGTH (32)
#define UART_ADDRESS (0x10)
#define end_byte 0x7E
struct {
UART_TX_FSM_IDE,
UART_TX_FSM_TX_BREAK,
UART_TX_FSM_TX_DATA
}状态;
unsigned buf[UART_TX_CH_LENG_F_FIC_LENG_F_F_FICH_FICH_
//unsigned char len;
unsigned int len;
} UartTxfsm;
struct {
int idx;
int timeout;
int error;
unsigned char buf[UART_RX_BUF_length];
int len
;} UartRx;
void UartIntHandler(void)
{
unsigned long status;
char数据;
unsigned char ck = 0xff;
//收到中断
IF (STATUS和UART_INT_be)
{
UARTCLEAR(UART0_BASE,UART_INT_BE);
数据= UARTCharGetNonBlocking (UART0_BASE );//丢弃空数据
UartRx.idx = 0;
UARTRX.UART.UART.Error = 0;
UARTR_INT_BASE / UART0
IF (UartRx.idx == UART_RX_BUF_length || data & 0x0万f00)
UartRx.error = 1;
else
{
UartRx.idx++;
UartRx.buf[UartRx.idx]= data & 0x0万ff;
ck += data;
}
}
最后,UartRx.buff仅包含0x7E值,即从其它设备发送的最后一个值。
我错过了什么吗?