为什么我设置的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;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>