NXP SKEAZ128 UART2 串口通信:发送和接收 8 字节数组数据(中断接收)

以下是使用 Keil 软件编写 NXP SKEAZ128 处理器 UART2 串口发送和接收 8 个字节为一帧的数组数据,并使用中断方式进行接收数据的示例代码:

#include "SKEAZ1284.h"

#define UART2_BAUDRATE 9600
#define DATA_LENGTH 8

uint8_t txData[DATA_LENGTH] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
uint8_t rxData[DATA_LENGTH];

void UART2_Init(void) {
    SIM_SCGC |= SIM_SCGC_UART2_MASK;  // Enable UART2 clock
    UART2_BDH = 0x00;
    UART2_BDL = (uint8_t)(CPU_FREQUENCY / (16 * UART2_BAUDRATE));  // Set baud rate
    UART2_C1 |= UART_C1_TE_MASK;  // Enable transmitter
    UART2_C2 |= UART_C2_RE_MASK | UART_C2_RIE_MASK;  // Enable receiver and receiver interrupt
    NVIC_ISER |= (1 << 12);  // Enable UART2 interrupt
}

void UART2_SendData(uint8_t *data, uint8_t length) {
    for (uint8_t i = 0; i < length; i++) {
        while (!(UART2_S1 & UART_S1_TDRE_MASK));  // Wait until transmit buffer is empty
        UART2_D = data[i];  // Send data
    }
    while (!(UART2_S1 & UART_S1_TC_MASK));  // Wait until transmission is complete
}

void UART2_IRQHandler(void) {
    if (UART2_S1 & UART_S1_RDRF_MASK) {  // Receive data register full interrupt
        static uint8_t dataIndex = 0;  // Index of received data
        uint8_t receivedData = UART2_D;  // Read received data
        rxData[dataIndex++] = receivedData;  // Store received data
        if (dataIndex >= DATA_LENGTH) {
            dataIndex = 0;  // Reset index
            UART2_SendData(rxData, DATA_LENGTH);  // Send received data
        }
    }
}

int main(void) {
    UART2_Init();
    UART2_SendData(txData, DATA_LENGTH);  // Send initial data
    while (1);
}

在这个示例代码中,我们首先定义了 UART2 的波特率和数据长度,以及要发送和接收的数据数组。然后,在 UART2_Init 函数中,我们使能了 UART2 的时钟,设置了波特率和使能了发送和接收的相关功能和中断。在 UART2_SendData 函数中,我们使用循环发送数据,并在发送完所有数据后等待传输完成。在 UART2_IRQHandler 中断服务函数中,我们使用静态变量 dataIndex 来记录接收数据的索引,将接收到的数据存储到 rxData 数组中,并在接收完一个完整的数据帧后,重置索引并发送接收到的数据。最后,在 main 函数中,我们初始化 UART2 并发送初始数据,然后通过一个无限循环来保持程序运行。

请注意,上述代码只是一个示例,并且可能需要根据您的具体需求进行修改和适配。确保根据您的硬件连接正确配置 UART2 引脚,并根据需要调整波特率和数据长度。

NXP SKEAZ128 UART2 串口通信:发送和接收 8 字节数组数据(中断接收)

原文地址: https://www.cveoy.top/t/topic/qqTx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录