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);
浙公网安备 33010602011771号