s32k144 UART使用FIFO驱动代码
时间: 2023-11-18 19:05:27 浏览: 226
下面是使用FIFO驱动的S32K144系列微控制器的UART示例代码:
```c
#include "fsl_debug_console.h"
#include "board.h"
#include "fsl_uart.h"
#define UART UART0
#define FIFO_SIZE 16
uart_handle_t uartHandle;
uint8_t buffer[FIFO_SIZE];
void UART_UserCallback(UART_Type *base, uart_handle_t *handle, status_t status, void *userData)
{
if (kStatus_UART_RxIdle == status)
{
PRINTF("Received data: %s\r\n", buffer);
memset(buffer, 0, FIFO_SIZE);
UART_TransferReceiveNonBlocking(base, handle, buffer, 1);
}
}
int main()
{
uart_config_t config;
uart_transfer_t xfer;
BOARD_InitPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
UART_GetDefaultConfig(&config);
config.baudRate_Bps = 115200;
config.enableFifo = true;
UART_Init(UART, &config);
uartHandle.rxBuff = buffer;
uartHandle.rxDataSize = 1;
uartHandle.rxDataSizeAll = FIFO_SIZE;
uartHandle.txDataSize = 0;
uartHandle.txDataSizeAll = 0;
UART_TransferCreateHandle(UART, &uartHandle, UART_UserCallback, NULL);
memset(buffer, 0, FIFO_SIZE);
xfer.data = buffer;
xfer.dataSize = 1;
UART_TransferReceiveNonBlocking(UART, &uartHandle, buffer, 1);
while (1)
{
__WFI();
}
}
```
此示例代码使用了S32K144系列微控制器的UART模块,并启用了FIFO功能。首先,我们初始化了UART模块的配置,并创建了一个uart_handle_t结构体用于存储UART传输的相关信息。然后,我们使用UART_Init函数初始化UART模块,并使用UART_TransferCreateHandle函数创建UART传输的句柄。
在主循环中,我们使用UART_TransferReceiveNonBlocking函数启动非阻塞接收操作,并在接收完成后通过回调函数UART_UserCallback进行处理。
需要注意的是,此示例代码仅演示了使用FIFO驱动的UART接收操作,如果需要进行发送操作,可以使用UART_TransferSendNonBlocking函数。
请根据实际需求和硬件配置进行适当的修改和调整。
阅读全文