标签:
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