这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【G32R501 Micro-EVB开发板】+03尝试调试一下串口输出功能

共1条 1/1 1 跳转至

【G32R501 Micro-EVB开发板】+03尝试调试一下串口输出功能

高工
2026-08-20 16:37:33     打赏
一:串口的相关知识UART是一个可以灵活地与外部设备进行全双工、半双工数据交换的串行通信设备,且同时满足外部设备对工业标准NRZ异步串行数据格式的要求。UART还提供宽范围的波特率选择,且支持多处理器通信。二:主要特征

(1)全双工异步通信

(2)单线半双工通信

(3)NRZ标准格式

(4)可编程的串口特性:

  数据位:1位-8位

  校验位:偶校验,奇校验

  支持1,2个停止位

(5)可以区分数据和地址的位

(6)双缓冲接收和发送

(7)独立的发送器和接收器使能位

(8) I独立的中断使能位

(9)可通过基于中断或轮询算法的状态完成发送器和接收器操作

(10)可切换TXRX引脚

(11)16级发送/接收FIFO

(12)可编程的波特率发生器

(13)波特率自动检测

14)多处理器通信:

  空闲线模式

  地址位模式

15)状态标志位:

  传输检测标志:发送寄存器为空,接收寄存器不为空

  错误检测标志:溢出错误,中断检测,奇偶校验错误,帧错误三:串口的编写流程:

3.1 首先串口时钟使能,GPIO时钟使能:

3.2 GPIO端口模式设置:

3.3 串口参数初始化:

3.4 开启中断并且初始化

3.5 使能串口:

3.6 编写串口发送函数。

四:软件代码:

4.1  IO口的初始化:

    GPIO_setMasterCore(DEVICE_GPIO_PIN_UARTRXDA, GPIO_CORE_CPU0);
    GPIO_setPinConfig(DEVICE_GPIO_CFG_UARTRXDA);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_UARTRXDA, GPIO_DIR_MODE_IN);
    GPIO_setDrivingCapability(DEVICE_GPIO_PIN_UARTRXDA,GPIO_DRIVE_LEVEL_VERY_HIGH);
    GPIO_setPadConfig(DEVICE_GPIO_PIN_UARTRXDA, GPIO_PIN_TYPE_PULLUP);
    GPIO_setQualificationMode(DEVICE_GPIO_PIN_UARTRXDA, GPIO_QUAL_ASYNC);

    //
    // GPIO29 is the UART Tx pin.
    //
    GPIO_setMasterCore(DEVICE_GPIO_PIN_UARTTXDA, GPIO_CORE_CPU0);
    GPIO_setPinConfig(DEVICE_GPIO_CFG_UARTTXDA);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_UARTTXDA, GPIO_DIR_MODE_OUT);
    GPIO_setDrivingCapability(DEVICE_GPIO_PIN_UARTTXDA,GPIO_DRIVE_LEVEL_VERY_HIGH);
    GPIO_setPadConfig(DEVICE_GPIO_PIN_UARTTXDA, GPIO_PIN_TYPE_STD);
    GPIO_setQualificationMode(DEVICE_GPIO_PIN_UARTTXDA, GPIO_QUAL_ASYNC);

4.2 串口的初始化:

    Interrupt_initModule();
    Interrupt_initVectorTable();

    //
    // Map the ISR to the wake interrupt.
    //
    Interrupt_register(INT_UARTA_TX, INT_UARTA_TX_IRQHandler);
    Interrupt_register(INT_UARTA_RX, INT_UARTA_RX_IRQHandler);

    Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);

    Interrupt_setPriority(INT_UARTA_TX,1,0);
    Interrupt_setPriority(INT_UARTA_RX,0,0);

    //
    // Initialize UARTA and its FIFO.
    //
    UART_performSoftwareReset(UARTA_BASE);

    //
    // Configure UARTA for echoback.
    //
    UART_setConfig(UARTA_BASE, DEVICE_LSPCLK_FREQ, 9600, (UART_CONFIG_WLEN_8 |
                                             UART_CONFIG_STOP_ONE |
                                             UART_CONFIG_PAR_NONE));
    UART_resetChannels(UARTA_BASE);
    UART_clearInterruptStatus(UARTA_BASE, UART_INT_TXRDY | UART_INT_RXRDY_BRKDT);
    UART_enableModule(UARTA_BASE);
    UART_performSoftwareReset(UARTA_BASE);

4.3 在主函数中添加 串口输出字符串

while(1)
 {        
    DEVICE_DELAY_US(1000000);
    msg = (uint8_t *)"Hello World! by:testor!\0";
    UART_writeCharArray(UARTA_BASE, msg,strlen(msg));
    GPIO_togglePin(23);
 }





关键词: G32R501     串口     输出    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]