标签:
1、DMA中配置要放在串口的配置后面。
2、DMA有3种中断方式:传输完成、传输一半、传输错误
3、如果要用DMA容易造成串口数据还没发完就把485的控制脚拉低导致数据没发完。解决办法是DMA发送完成中断里加延时(但是中断里延时不好)。
//void DMA1_Channel4_IRQHandler() //{ // if(DMA_GetITStatus(DMA1_IT_TC4)) //传输完成 // { // Delay(0xffff); //容易导致串口数据未发送完成就拉低485的控制引脚,所以得延时 // S4851_L(); // DMA_ClearITPendingBit(DMA1_IT_TC4); // } // //// if(DMA_GetITStatus(DMA1_IT_TE4)) //传输错误 //// { //// CurrDataCounterEnd=DMA_GetCurrDataCounter(DMA1_Channel4); //// DMA_ClearITPendingBit(DMA1_IT_TE4); //// } //// //// if(DMA_GetITStatus(DMA1_IT_HT4)) //传输过半 //// { //// //// DMA_ClearITPendingBit(DMA1_IT_HT4); //// } //}
标签:
原文地址:http://www.cnblogs.com/yygsj/p/5493038.html