搜索

GD32F150G8 USART1 REA接收状态无法使能

[复制链接]
193|4
手机看帖
扫描二维码
随时随地手机跟帖
faithswss|  楼主 | 2021-3-4 15:33 | 显示全部楼层 |阅读模式
void rs422_uart_init(uint32_t baudrate, uint16_t data_bits,uint16_t parity, uint16_t stopbits)
{

        rcu_periph_clock_enable(AS32_GPIO_RX_RCC);
        rcu_periph_clock_enable(AS32_GPIO_TX_RCC);
       
        rcu_periph_clock_enable(AS32_UART_RCC);

        /* connect port to USARTx_Tx */
    gpio_af_set(AS32_GPIO_TX_PORT, AS32_UART_AF, AS32_GPIO_TX_PIN);

    /* connect port to USARTx_Rx */
    gpio_af_set(AS32_GPIO_RX_PORT, AS32_UART_AF, AS32_GPIO_RX_PIN);
   
    /* configure USART Tx as alternate function push-pull */
    gpio_mode_set(AS32_GPIO_TX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, AS32_GPIO_TX_PIN);
    gpio_output_options_set(AS32_GPIO_TX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_GPIO_TX_PIN);

    /* configure USART Rx as alternate function push-pull */
    gpio_mode_set(AS32_GPIO_RX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, AS32_GPIO_RX_PIN);
    gpio_output_options_set(AS32_GPIO_RX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_GPIO_RX_PIN);
       
        usart_deinit(AS32_UART);
    usart_baudrate_set(AS32_UART, baudrate);
    usart_transmit_config(AS32_UART, USART_TRANSMIT_ENABLE);
    usart_receive_config(AS32_UART, USART_RECEIVE_ENABLE);
   
        nvic_irq_enable(AS32_UART_IRQ, 1, 1);
       
#ifdef AS32_DIR_PORT
        rcu_periph_clock_enable(AS32_DIR_RCC);
        gpio_output_options_set(AS32_DIR_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_DIR_PIN);
        gpio_mode_set(AS32_DIR_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, AS32_DIR_PIN);
        gpio_bit_reset(AS32_DIR_PORT, AS32_DIR_PIN);       
#endif
        usart_interrupt_flag_clear(RS485_UART,USART_INT_FLAG_RBNE_ORERR);
        usart_interrupt_enable(AS32_UART,USART_INT_RBNE);

        usart_enable(AS32_UART);
        usart_transmit_config(AS32_UART, USART_TRANSMIT_ENABLE);
    usart_receive_config(AS32_UART, USART_RECEIVE_ENABLE);
}
ST-link 调试, 寄存器STAT REA位,没法变换为1 , 也就是 接收核心部分没有工作,
同样的代码 使用USART0 就可以, 这是为什么?

使用特权

评论回复
faithswss|  楼主 | 2021-3-4 15:43 | 显示全部楼层
微信截图_20210304154015.png
CTL0 的TEN REN UEN 都为1, 但是 STAT 的 REA为0, TEA为1 ,并且后面运行过程中一致为0.
是哪里设置错误吗?

使用特权

评论回复
faithswss|  楼主 | 2021-3-4 15:45 | 显示全部楼层
#define AS32_UART                        USART1
#define AS32_UART_IRQ                USART1_IRQn
#define AS32_UART_RCC                RCU_USART1
#define AS32_UART_AF                GPIO_AF_1

#define AS32_GPIO_TX_RCC        RCU_GPIOA
#define AS32_GPIO_TX_PORT        GPIOA
#define AS32_GPIO_TX_PIN        GPIO_PIN_2
#define AS32_GPIO_RX_RCC        RCU_GPIOA
#define AS32_GPIO_RX_PORT        GPIOA
#define AS32_GPIO_RX_PIN        GPIO_PIN_3

从逻辑分析仪上能 看到,能够发送出数据, 但无法接收数据

使用特权

评论回复
ccc228| | 2021-5-21 19:51 | 显示全部楼层
你好,楼主的问题解决了吗?我用GD130也遇到了这个问题

使用特权

评论回复
AJSJ| | 2021-5-30 13:12 | 显示全部楼层
6年前生产的GD32F150C8..,使用USART1 ,需要把 USART_CTL1寄存器STRP置位 .  接线 : TX-TX.   RX-RX .
不知道现在GD32F150是否改正了问题.     

使用特权

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

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 呐咯密密 得到打赏 ¥520.00
  • 2 小叶三千 得到打赏 ¥400.00
  • 3 火星国务卿 得到打赏 ¥383.00
  • 4 kk的回忆 得到打赏 ¥370.01
  • 5 Gavin3389 得到打赏 ¥306.00
  • 6 jinglixixi 得到打赏 ¥220.00
  • 7 神圣雅诗人 得到打赏 ¥200.00
  • 8 qjp1988113 得到打赏 ¥106.00
  • 9 xyz549040622 得到打赏 ¥105.00
  • 10 linghz 得到打赏 ¥100.00
在线客服 快速回复 返回顶部 返回列表