查看: 702|回复: 3

FM33LE026串口配置问题

[复制链接]

3

主题

4

帖子

31

积分

初级工程师

Rank: 1

积分
31
发表于 2023-9-8 08:50:36 | 显示全部楼层 |阅读模式
我在用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);                  //打开接收使能

回复

使用道具 举报

1

主题

16

帖子

351

积分

高级工程师

Rank: 3Rank: 3

积分
351
发表于 2023-9-15 22:43:32 | 显示全部楼层

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

使用道具 举报

151

主题

845

帖子

4405

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4405
发表于 2023-9-18 10:34:09 | 显示全部楼层
GPIO_InitStruct.remapPin  这个设错了, 需要用FL_DISABLE
回复

使用道具 举报

3

主题

4

帖子

31

积分

初级工程师

Rank: 1

积分
31
 楼主| 发表于 2024-1-22 08:23:48 | 显示全部楼层
问题已解决,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表