RS485-DMA发送提前进入中断

2019-07-21 00:51发布

为什么我设置的DMA会提前进入中断啊! 泪奔,我用485进行收发,当进入DMA发送完成中断服务函数时就拉低485收发控制引脚,可是数据没发完就进入中断拉低了,望大神解答!


NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel7_IRQn;                //DMA1通道7中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
        USART_DMACmd(USART2, USART_DMAReq_Tx, ENABLE); //使能串口2的DMA发送
       
        DMA_ITConfig(DMA1_Channel7,DMA_IT_TC,ENABLE);






void DMA1_Channel7_IRQHandler(void)
{
        if((DMA1->ISR)&(1<<25))            //判断传输完成中断位是否置位
        {
                       
                        DMA1->IFCR|=1<<25;         //清除完成传输中断
                        RS485_TX_EN=0;                        //设置为接收模式       
                UART2_RX_DMA_Enable(); //使能DMA,等待接收
            LED0=!LED0;
                       
        }

}






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。