lim461291523 发表于 2023-9-8 08:50:36

FM33LE026串口配置问题

我在用FM33LE026这款芯片配置UART4的时候配置和UART2一样的   但是UART4无法收发数据   不能触发接收中断是什么情况有类似的问题么

配置如下:
    FL_GPIO_InitTypeDef    GPIO_InitStruct;
    FL_UART_InitTypeDef    defaultInitStruct;
    GPIO_InitStruct.pin = FL_GPIO_PIN_0;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_ENABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;
    FL_GPIO_Init( GPIOB, &GPIO_InitStruct );

    GPIO_InitStruct.pin = FL_GPIO_PIN_1;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;
    FL_GPIO_Init( GPIOB, &GPIO_InitStruct );

    defaultInitStruct.clockSrc = FL_RCC_UART2_CLK_SOURCE_APB1CLK;
   defaultInitStruct.baudRate = 19200;
    defaultInitStruct.dataWidth = FL_LPUART_DATA_WIDTH_8B;
    defaultInitStruct.stopBits = FL_LPUART_STOP_BIT_WIDTH_1B;
    defaultInitStruct.parity = FL_LPUART_PARITY_NONE;
    defaultInitStruct.transferDirection = FL_LPUART_DIRECTION_TX_RX;

    FL_UART_Init(UART2,&defaultInitStruct );
    FL_UART_DisableIT_TXShiftBuffEmpty(UART2);//关闭发送中断
    FL_UART_EnableIT_RXBuffFull(UART2);//打开接收中断
    FL_UART_EnableTX(UART2);             //打开发送使能
    FL_UART_EnableRX(UART2);                  //打开接收使能


    GPIO_InitStruct.pin = FL_GPIO_PIN_2;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_ENABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;
    FL_GPIO_Init( GPIOB, &GPIO_InitStruct );

    GPIO_InitStruct.pin = FL_GPIO_PIN_3;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;
    FL_GPIO_Init( GPIOB, &GPIO_InitStruct );

    defaultInitStruct.baudRate = 19200;
    defaultInitStruct.dataWidth = FL_LPUART_DATA_WIDTH_8B;
    defaultInitStruct.stopBits = FL_LPUART_STOP_BIT_WIDTH_1B;
    defaultInitStruct.parity = FL_LPUART_PARITY_NONE;
    defaultInitStruct.transferDirection = FL_LPUART_DIRECTION_TX_RX;
    FL_UART_Init(UART4,&defaultInitStruct);
    FL_UART_ClearFlag_TXShiftBuffEmpty(UART4);
    FL_UART_DisableIT_TXShiftBuffEmpty(UART4);//关闭发送中断
    FL_UART_EnableIT_RXBuffFull(UART4);//打开接收中断
    FL_UART_EnableTX(UART4);             //打开发送使能
    FL_UART_EnableRX(UART4);                  //打开接收使能

rogerzhong 发表于 2023-9-15 22:43:32


将语句GPIO_InitStruct.remapPin = FL_ENABLE; 全部改成 GPIO_InitStruct.remapPin = FL_DISABLE;
严格来讲,PB0和PB1用做UART2时,也应该设置为REMAP Disable,但不知道你为什么功能正常,可能是只有一种数字外设功能可选吧。

顾博文 发表于 2023-9-18 10:34:09

GPIO_InitStruct.remapPin这个设错了, 需要用FL_DISABLE

lim461291523 发表于 2024-1-22 08:23:48

问题已解决,谢谢
页: [1]
查看完整版本: FM33LE026串口配置问题