PolarFire® SoC mpfs-mmuart-interrupt 串口2 全局中断触发 初始化过程

1、串口 复位

    (void) mss_config_clk_rst(MSS_PERIPH_MMUART_U54_2, (uint8_t) 2, PERIPHERAL_ON);

2、串口参数初始化、波特率、停止位 等等

MSS_UART_init(p_uartmap_u54_2, MSS_UART_115200_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT);

3、串口接收回调函数 设置

MSS_UART_set_rx_handler(p_uartmap_u54_2, uart2_rx_handler, MSS_UART_FIFO_SINGLE_BYTE);

  这个函数,会调用 enable_irq(this_uart); 接口使能中断, 该接口 调用  PLIC_EnableIRQ(plic_num); 使能了 串口对应  PLIC 中 的 中断!!!

4、PLIC 初始化

PLIC_init();

5、串口中断使能   接收中断和发射完成 中断

    MSS_UART_enable_irq(p_uartmap_u54_2, (MSS_UART_RBF_IRQ | MSS_UART_TBE_IRQ));

| MSS_UART_RBF_IRQ | Receive Data Available Interrupt bit mask (0x001) |
| MSS_UART_TBE_IRQ | Transmitter Holding Register Empty interrupt bit mask (0x002) |

 

6、PLIC 优先级设置 , 串口2中断,  优先级 为 4 ,  优先级范围  0-7, 数字越大 优先级越高 ,和 ARM 不同 !!

    PLIC_SetPriority(PLIC_IRQ_MMUART_U54_2, EXTERNAL_IRQ_PRIORITY);

 

7、设置 中断 阈值 为 0 , 只有大于 该值 的中断  才能产生中断   

    PLIC_SetPriority_Threshold(PLIC_PRIORITY_THRESHOLD);

 

posted on 2025-09-18 11:22  所长  阅读(12)  评论(0)    收藏  举报

导航