第1个回答 2022-04-13
可以。
STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷,用STM32F103的串口1,并配置成空闲中断模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是100个字节。
那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA下杠线GetCurrDataCounter,函数计算出本次的数据接受长度,从而进行数据处理。