NXP RT1011串口4中断方式例程
时间: 2023-09-21 14:06:24 浏览: 39
以下是 NXP RT1011 串口 4 中断方式的示例代码:
```c
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "fsl_debug_console.h"
#include "fsl_uart.h"
#include "board.h"
#include "pin_mux.h"
/*******************************************************************************
* Definitions
******************************************************************************/
#define DEMO_UART UART4
#define DEMO_UART_CLK_FREQ CLOCK_GetFlexCommClkFreq(4U)
#define DEMO_UART_IRQn UART4_IRQn
#define DEMO_UART_IRQHandler UART4_IRQHandler
/*******************************************************************************
* Prototypes
******************************************************************************/
/*******************************************************************************
* Variables
******************************************************************************/
uint8_t txbuff[] = "UART polling example\r\nBoard will send back received characters\r\n";
uint8_t rxbuff[20] = {0};
volatile bool rxBufferEmpty = true;
/*******************************************************************************
* Code
******************************************************************************/
void DEMO_UART_IRQHandler(void)
{
uint8_t data;
if ((kUART_RxDataRegFullFlag | kUART_RxOverrunFlag) & UART_GetStatusFlags(DEMO_UART))
{
data = UART_ReadByte(DEMO_UART);
rxBufferEmpty = false;
UART_WriteByte(DEMO_UART, data);
}
}
/*!
* @brief Main function
*/
int main(void)
{
uart_config_t config;
BOARD_InitPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
PRINTF("UART example start\r\n");
/* attach 12 MHz clock to FLEXCOMM4 (UART4) */
CLOCK_AttachClk(kFRO12M_to_FLEXCOMM4);
/* reset FLEXCOMM for UART */
RESET_PeripheralReset(kFC4_RST_SHIFT_RSTn);
/* Initialize UART with configuration. */
UART_GetDefaultConfig(&config);
config.baudRate_Bps = 115200U;
config.enableTx = true;
config.enableRx = true;
UART_Init(DEMO_UART, &config, DEMO_UART_CLK_FREQ);
UART_WriteBlocking(DEMO_UART, txbuff, sizeof(txbuff) - 1);
/* Enable RX interrupt. */
UART_EnableInterrupts(DEMO_UART, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
EnableIRQ(DEMO_UART_IRQn);
while (1)
{
if (!rxBufferEmpty)
{
rxBufferEmpty = true;
memset(rxbuff, 0, sizeof(rxbuff));
UART_ReadBlocking(DEMO_UART, rxbuff, sizeof(rxbuff) - 1);
PRINTF("Data received: %s\r\n", rxbuff);
}
}
}
```
该示例代码演示了如何在 NXP RT1011 上使用串口 4 实现中断方式的数据收发。代码中首先配置了串口 4 的中断,然后通过中断方式接收数据,并在接收到数据后进行打印输出。您可以根据实际需求进行修改。