打印

GD32F150G8 USART1 REA接收状态无法使能

[复制链接]
1834|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 显示全部楼层

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

2

粉丝