GD32F103调试485通讯怎么也不进中断

[复制链接]
358|13
手机看帖
扫描二维码
随时随地手机跟帖
Aist2018|  楼主 | 2023-12-25 14:19 | 显示全部楼层 |阅读模式
/* enable USART and GPIOA clock */
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_USART2);
               
    gpio_pin_remap_config( GPIO_USART2_PARTIAL_REMAP,ENABLE); //引脚重映射
                gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
                gpio_bit_reset(GPIOB, GPIO_PIN_1);
    /* configure USART2 Tx as alternate function push-pull */
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
    /* configure USART2 Rx as alternate function push-pull */
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);

void initUART() {
  /* USART interrupt configuration */
        nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
  nvic_irq_enable(USART2_IRQn, 1, 1);
  /* configure COM0 */
  //gd_eval_com_init(EVAL_COM0);
  usart_baudrate_set(USART2, 115200U);
        usart_parity_config(USART2, USART_PM_NONE);//无奇偶检验
                usart_word_length_set(USART2, USART_WL_8BIT);//8位数据
                usart_stop_bit_set(USART2, USART_STB_1BIT);//一个停止位
                usart_hardware_flow_rts_config(USART2,USART_RTS_DISABLE);//无硬件数据流
          usart_hardware_flow_cts_config(USART2, USART_CTS_DISABLE);  // 硬件流控制CTS
    usart_receive_config(USART2, USART_RECEIVE_ENABLE);//串口接收
    usart_transmit_config(USART2, USART_TRANSMIT_ENABLE);//串口发送
      
        //usart_halfduplex_enable(USART2);
      
  usart_interrupt_enable(USART2, USART_INT_RBNE);
      
        usart_enable(USART2);
}


void UART2_IRQHandler(void) {
    static int dataLen = 0;
          dataRev = 0x11;
          if(SET == usart_interrupt_flag_get(USART2, USART_INT_FLAG_TBE)){
                          usart_interrupt_flag_clear(USART2,USART_INT_FLAG_TBE);
        /* transmit data */
        usart_data_transmit(USART2, txbuffer[txcount++]);
        if(txcount == tx_size){
            usart_interrupt_disable(USART2, USART_INT_TBE);
                                          gpio_bit_reset(GPIOB, GPIO_PIN_1);
        }
    }
    if((SET == usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE))||(SET == usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE_ORERR))) {
        dataRev = usart_data_receive(USART2);
                          
                          usart_interrupt_flag_clear(USART2,USART_INT_FLAG_RBNE);

使用特权

评论回复
zeshoufx| | 2023-12-25 14:32 | 显示全部楼层
看不到其他配置不好说什么,,,进不了中断是进不了哪个中断?

使用特权

评论回复
Aist2018|  楼主 | 2023-12-25 14:33 | 显示全部楼层
所有配置就这些,进不了收中断,发中断也进不去。

使用特权

评论回复
Aist2018|  楼主 | 2023-12-25 14:34 | 显示全部楼层
进不去  void UART2_IRQHandler(void)

使用特权

评论回复
zeshoufx| | 2023-12-26 08:36 | 显示全部楼层
Aist2018 发表于 2023-12-25 14:33
所有配置就这些,进不了收中断,发中断也进不去。

那没看到你的485是工作在接收或者发送啊,,,一般485是半双工的,,需要控制收发引脚去接收或发送

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 09:11 | 显示全部楼层
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);

                gpio_bit_reset(GPIOB, GPIO_PIN_1);       PB1是485的使能引脚, 这不是设置为可以接收吗?发的时候gpio_bit_set(GPIOB, GPIO_PIN_1);

使用特权

评论回复
zeshoufx| | 2023-12-26 09:52 | 显示全部楼层
Aist2018 发表于 2023-12-26 09:11
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);

                gpio_bit_reset(G ...

收发确实是这样控制,,看一下收发引脚上的波形,,不会硬件上出问题了吧

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 10:01 | 显示全部楼层
示波器看输入引脚有数据,无论如何应该进中断啊,怎么就不进中断呢?是否初始化时结束要清一下中断标志?放在哪里?上面我给出的初始化代码没什么需要调整的吧?

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 10:23 | 显示全部楼层
清标志位还是不行,引脚有数据怎么就不进中断呢?

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 11:17 | 显示全部楼层
gpio_pin_remap_config( GPIO_USART2_PARTIAL_REMAP,ENABLE); //引脚重映射   ------------- 这行我去掉了,手册不映射时PB10 PB11,还是不行

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 11:34 | 显示全部楼层
*(volatile uint32_t  *)AFIO_PCF0 &= 0xFFFFFFCF;   ----------- 直接把USART2_REMAP [1:0] =
“00” (没有映射)
- -
PB10(USART2_TX)
PB11(USART2_RX)     ----------------  按手册,还不行啊

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 13:37 | 显示全部楼层
GD32是不是支持USART2有问题啊?拜托高人指教啊

使用特权

评论回复
sagade| | 2023-12-26 14:13 | 显示全部楼层
void UART2_IRQHandler(void) 这个不对吧,应该是USART2_IRQHandler

使用特权

评论回复
Aist2018|  楼主 | 2023-12-26 14:28 | 显示全部楼层
的确函数名写错,谢谢啊

使用特权

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

本版积分规则

13

主题

70

帖子

0

粉丝