中级会员
 
- 积分
- 240
- 金钱
- 240
- 注册时间
- 2018-4-21
- 在线时间
- 105 小时
|
10金钱
用串口1的DMA发送一帧数据 因为是发送 所以串口和DMA配置的时候就没加中断,用的是CIRCULAR循环模式
为了发送不同长度和内容的数据帧 就对HAL_UART_Transmit_DMA函数做了个封装 如下
void DMA_Send(u8 *data,u8 len)
{
HAL_UART_Transmit_DMA(&UART1_InitStructure,data,len);
if(__HAL_DMA_GET_FLAG(&DMA_USART1_TX,DMA_FLAG_TCIF1_5))
{
__HAL_DMA_CLEAR_FLAG(&DMA_USART1_TX,DMA_FLAG_TCIF1_5);
}
}
结果发现数据丢失严重 10多字节一帧的数据经常少几个字节,有时甚至丢帧
而且切换不了数据 这个函数调用两次的时候只能传第一次调用的数据
特来问问有什么解决办法,如果要开中断的话要怎么个开法
如果DMA发送中断和串口全局中断都要开的话 发送完成后触发哪个中断啊
|
|