问答

汇集网友智慧,解决技术难题

21ic问答首页 - at32f403arct7uart串口5无法发送

MUC 单片机 国产芯片 嵌入式 技术交流

at32f403arct7uart串口5无法发送

aw967252024-01-27
at32f403arct7,初始化之后,其他串口都可以使用,但是uart5没有输出,使用不了,请问下各位是哪里出了问题?
void uart_config(void)
{
    gpio_init_type gpio_init_struct;

    /* enable the usart and gpio clock */
    crm_periph_clock_enable(CRM_USART1_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_USART2_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_USART3_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_UART4_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_UART5_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_USART6_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_UART7_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_UART8_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE);

    /* 重映射gpio功能 */
    gpio_pin_remap_config(UART8_GMUX, TRUE);

    gpio_default_para_init(&gpio_init_struct);

    /* configure the usart tx pin */
    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
    gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
    gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
    /* uart1 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_9;
    gpio_init(GPIOA, &gpio_init_struct);
    /* uart2 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_2;
    gpio_init(GPIOA, &gpio_init_struct);
    /* uart3 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_10;
    gpio_init(GPIOB, &gpio_init_struct);
    /* uart4 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_10;
    gpio_init(GPIOC, &gpio_init_struct);
    /* uart5 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_12;
    gpio_init(GPIOC, &gpio_init_struct);
    /* uart6 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_6;
    gpio_init(GPIOC, &gpio_init_struct);
    /* uart7 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_4;
    gpio_init(GPIOB, &gpio_init_struct);
    /* uart8 tx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_2;
    gpio_init(GPIOC, &gpio_init_struct);

    /* configure the usart rx pin */
    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
    gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
    gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
    gpio_init_struct.gpio_pull = GPIO_PULL_UP;
    /* uart1 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_10;
    gpio_init(GPIOA, &gpio_init_struct);
    /* uart2 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_3;
    gpio_init(GPIOA, &gpio_init_struct);
    /* uart3 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_11;
    gpio_init(GPIOB, &gpio_init_struct);
    /* uart4 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_11;
    gpio_init(GPIOC, &gpio_init_struct);
    /* uart5 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_2;
    gpio_init(GPIOD, &gpio_init_struct);
    /* uart6 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_7;
    gpio_init(GPIOC, &gpio_init_struct);
    /* uart7 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_3;
    gpio_init(GPIOB, &gpio_init_struct);
    /* uart8 rx*/
    gpio_init_struct.gpio_pins = GPIO_PINS_3;
    gpio_init(GPIOC, &gpio_init_struct);

    /* config usart nvic interrupt */
    nvic_irq_enable(USART1_IRQn, 2, 0);
    nvic_irq_enable(USART2_IRQn, 2, 0);
    nvic_irq_enable(USART3_IRQn, 2, 0);
    nvic_irq_enable(UART4_IRQn, 2, 0);
    nvic_irq_enable(UART5_IRQn, 2, 0);
    nvic_irq_enable(USART6_IRQn, 2, 0);
    nvic_irq_enable(UART7_IRQn, 2, 0);
    nvic_irq_enable(UART8_IRQn, 2, 0);

    /* enable usart interrupt */
    usart_interrupt_enable(USART1, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(USART1, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(USART2, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(USART2, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(USART3, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(USART3, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(UART4, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(UART4, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(UART5, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(UART5, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(USART6, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(USART6, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(UART7, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(UART7, USART_TDBE_INT, FALSE);
    usart_interrupt_enable(UART8, USART_RDBF_INT, TRUE);
    usart_interrupt_enable(UART8, USART_TDBE_INT, FALSE);

    /* configure usart param */
    usart_init(USART1, 115200, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(USART1, USART_PARITY_NONE);
    usart_transmitter_enable(USART1, TRUE);
    usart_receiver_enable(USART1, TRUE);
    usart_enable(USART1, TRUE);

    usart_init(USART2, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(USART2, USART_PARITY_NONE);
    usart_transmitter_enable(USART2, TRUE);
    usart_receiver_enable(USART2, TRUE);
    usart_enable(USART2, TRUE);

    usart_init(USART3, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(USART3, USART_PARITY_NONE);
    usart_transmitter_enable(USART3, TRUE);
    usart_receiver_enable(USART3, TRUE);
    usart_enable(USART3, TRUE);

    usart_init(UART4, 115200, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(UART4, USART_PARITY_NONE);
    usart_transmitter_enable(UART4, TRUE);
    usart_receiver_enable(UART4, TRUE);
    usart_enable(UART4, TRUE);

    usart_init(UART5, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(UART5, USART_PARITY_NONE);
    usart_transmitter_enable(UART5, TRUE);
    usart_receiver_enable(UART5, TRUE);
    usart_enable(UART5, TRUE);

    usart_init(USART6, 460800, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(USART6, USART_PARITY_NONE);
    usart_transmitter_enable(USART6, TRUE);
    usart_receiver_enable(USART6, TRUE);
    usart_enable(USART6, TRUE);

    usart_init(UART7, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(UART7, USART_PARITY_NONE);
    usart_transmitter_enable(UART7, TRUE);
    usart_receiver_enable(UART7, TRUE);
    usart_enable(UART7, TRUE);

    usart_init(UART8, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
    usart_parity_selection_config(UART8, USART_PARITY_NONE);
    usart_transmitter_enable(UART8, TRUE);
    usart_receiver_enable(UART8, TRUE);
    usart_enable(UART8, TRUE);
}


回答 +关注 1
1161人浏览 1人回答问题 分享 举报
1 个回答

您需要登录后才可以回复 登录 | 注册