本帖最后由 穿西装的强子 于 2026-1-11 23:02 编辑
在CPU1内UARTB使用了22和41引脚
根据例程进行配置,配置引脚为CPU1模式;
- //
- // GPIO41 is the UART Rx pin.
- //
- GPIO_setMasterCore(LANHAI_GPIO_PIN_UARTRXDB, GPIO_CORE_CPU1);
- GPIO_setPinConfig(LANHAI_GPIO_CFG_UARTRXDB);
- GPIO_setDirectionMode(LANHAI_GPIO_PIN_UARTRXDB, GPIO_DIR_MODE_IN);
- GPIO_setDrivingCapability(LANHAI_GPIO_PIN_UARTRXDB,GPIO_DRIVE_LEVEL_VERY_HIGH);
- GPIO_setPadConfig(LANHAI_GPIO_PIN_UARTRXDB, GPIO_PIN_TYPE_PULLUP);
- GPIO_setQualificationMode(LANHAI_GPIO_PIN_UARTRXDB, GPIO_QUAL_ASYNC);
- //
- // GPIO22 is the UART Tx pin.
- //
- GPIO_setMasterCore(LANHAI_GPIO_PIN_UARTTXDB, GPIO_CORE_CPU1);
- GPIO_setPinConfig(LANHAI_GPIO_CFG_UARTTXDB);
- GPIO_setDirectionMode(LANHAI_GPIO_PIN_UARTTXDB, GPIO_DIR_MODE_OUT);
- GPIO_setDrivingCapability(LANHAI_GPIO_PIN_UARTTXDB,GPIO_DRIVE_LEVEL_VERY_HIGH);
- GPIO_setPadConfig(LANHAI_GPIO_PIN_UARTTXDB, GPIO_PIN_TYPE_STD);
- GPIO_setQualificationMode(LANHAI_GPIO_PIN_UARTTXDB, GPIO_QUAL_ASYNC);
-
- //
- // Map the ISR to the wake interrupt.
- //
- Interrupt_register(INT_UARTB_RX, INT_UARTB_RX_IRQHandler);
- Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);
- Interrupt_setPriority(INT_UARTB_RX,2,0);
- //
- // Initialize UARTB and its FIFO.
- //
- UART_performSoftwareReset(UARTB_BASE);
- //
- // Configure UARTB for echoback.
- //
- UART_setConfig(UARTB_BASE, DEVICE_LSPCLK_FREQ, 460800, (UART_CONFIG_WLEN_8 |
- UART_CONFIG_STOP_ONE |
- UART_CONFIG_PAR_NONE));
- UART_resetChannels(UARTB_BASE);
- UART_clearInterruptStatus(UARTB_BASE, UART_INT_RXRDY_BRKDT);
- UART_enableModule(UARTB_BASE);
- UART_performSoftwareReset(UARTB_BASE);
- //
- // Enable the TXRDY and RXRDY interrupts.
- //
- UART_enableInterrupt(UARTB_BASE, UART_INT_RXRDY_BRKDT);
-
- Interrupt_enable(INT_UARTB_TX);
波特率在设置超过230400时数据异常,发送的数据和实际的对不上;例如460800波特率,收发完成不一样。
但是UARTA是没问题,这个不知道是哪里配置问题;
波特率的问题找到了,是USB转串口设备的问题
第二个问题是配置中断导致卡死
- Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);
- Interrupt_setPriority(INT_UARTB_RX,2,0);
这两行加上之后就一直卡死无法继续,不知道是什么问题导致
|