你的DMA加空闲中断接收和发送程序,我单片机刚复位可以发送不定字节的数据,但是发第二次,上位机就没有接收反馈了,也就是发一次之后,不能产生第二次中断,可以咨询一下怎么回事吗
DMA传输长度没有清零
每次DMA发送完成后,需要手动清空DMA传输长度寄存器,否则会认为还有数据需要发送,导致第二次发送失败。请在每次DMA发送完成后清空DMA传输长度寄存器。
DMA传输期间产生错误
在DMA传输过程中,如果发生错误(如总线错误、传输错误等),会导致DMA停止工作。这可能会导致您无法进行第二次DMA传输。请检查DMA状态寄存器以确定是否发生了错误,并尝试重新启动DMA传输。
串口缓冲区溢出
如果您的串口数据接收缓冲区太小,或者数据量太大,可能会导致缓冲区溢出。这将导致一些接收到的数据被丢弃,上位机也无法接收到完整的数据包,从而导致通信中断。请增加缓冲区大小或减少发送数据量。
波特率或其他通信参数设置错误
如果串口通信参数设置错误(例如波特率、数据位、校验位、停止位等),则可能会导致通信失败。请确保上位机和单片机之间的通信参数设置正确。