TI论坛
直播中

王丽娟

7年用户 176经验值
私信 关注
[问答]

请问TM4C123GH6PM串口接收填充满后就接收不到新的数据了是什么情况?

各位好,小弟调试串口时遇到如下问题,使用串口接收,且一帧接收完成后补将数据地址重新移动到数组的其实位置可以接收,但是如果填充满后就接收不到新的数据了,但是如果将数据地址重新一到开头位置,如果数据小于8个字节正常,数据大于10个字节后就直接进入hardfault,请问有没有人遇到过?代码如下:
//UART
#define DEBUG_UART UART4_BASE
#define DEBUG_UART_PERIPH SYSCTL_PERIPH_UART4
#define DEBUG_UART_PORT SYSCTL_PERIPH_GPIOC
#define DEBUG_UART_RX GPIO_PC4_U4RX
#define DEBUG_UART_TX GPIO_PC5_U4TX
#define DEBUG_UART_PORT_BASE GPIO_PORTC_BASE
#define DEBUG_UART_RX_PIN GPIO_PIN_4
#define DEBUG_UART_TX_PIN GPIO_PIN_5

uint8_t Uart4Rx[64] = [0];
uint8_t Uart4Tx[64] = [1,2,3,4,5,6];

UARTRX_STRUCT DebugData;
void UART4IntHandler(void);

void PrintUsartinit(uint32_t baud)
[

GPIOPinConfigure(DEBUG_UART_RX);
GPIOPinConfigure(DEBUG_UART_TX);
GPIOPinTypeUART(DEBUG_UART_PORT_BASE,DEBUG_UART_RX_PIN|DEBUG_UART_TX_PIN);

UARTConfigSetExpClk(DEBUG_UART, SysCtlClockGet(), baud,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

// IntMasterEnable();



void UART4IntHandler(void)
[
uint32_t ui32Status;
uint32_t tempData;
uint32_t rxCount = 0;
// Get the interrrupt status.
ui32Status = UARTIntStatus(DEBUG_UART, true);

// Clear the asserted interrupts.
UARTIntClear(DEBUG_UART, ui32Status);

// Loop while there are characters in the receive FIFO.
while(UARTCharsAvail(DEBUG_UART))
[
Uart4Rx [rxCount++] = UARTCharGetNonBlocking(DEBUG_UART) ;
]
DebugData.rxFlag = true;
// rxCount = 0;
]

回帖(2)

王丽娟

2018-8-14 07:20:31
经测试,在数据处理的地方即在外部对数据起点进行置零操作可以正常运行。
TI的论坛以这么冷清吗?连个插科打诨的人都没有
举报

韦明

2018-8-14 07:27:32
引用: qwer31 发表于 2018-8-14 07:20
经测试,在数据处理的地方即在外部对数据起点进行置零操作可以正常运行。
TI的论坛以这么冷清吗?连个插科打诨的人都没有

说实话,你这个程序看了很久,没想到问题在哪?在数据处理的地方即在外部对数据起点进行置零操作可以正常运行,你指的是rxCount这个变量进行置零吗?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分