
不知道是不是因为dma的问题,还是hal库使用的问题,我用单片机可以和xshell终端使用ymodem协议传输bin文件,上位机可以和串口助手使用ymodem传输文件,但是我用单片机和上位机连接在一起,就出错了,第一次握手成功,单片机收到了数据,然后返回指令ACK C,但是上位机同步读取,读取的数据还是C(应该先是ACK)校验就没法通过了。 我看别人分享的源码,ymodem接收
我也是用上面类似的方法直接判断usart中断中的Rx_Flag是否为1,和上位机通信有问题,是不是这里的问题导致的? 因为手动调试单片机和上位机是可以一起传输的,但是要全速运行就不行了... |
多DMA数据流问题
stm32f103c8t6:没有对flash进行任何操作,flash的内容发生变化了。具体是哪些原因?如何调试排查原因。
STM32F103C8T6 TIM1 CH2输入捕获触发DMA的问题
STM32U575 ZI-Q 配置USART1串口不进HAL_UART_RxCpltCallback回调函数加if判断
STM32407 使用串口闲时中断+DMA方式接收最大接收字节是多少
STM32会存在单个IO口坏掉的情况吗?
STM32F103RET6 FLASH擦除失败问题
STM32L433VCT6 进入STOP模式2之后,功耗依然和正常运行模式没有差别,请教大神
6.28周六签到打卡
foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
楼主可以用中断方式接收,或者用带有延时的,延时尽量少一些。1000左右。
我就是用的串口空闲中断接收的
爱丁堡
为什么用的是空闲中断呢?
串口2中断中,不定长数据,这个没影响把?和上位机通信不行
DMA接收数据,然后通过空闲中断处理DMA中的数据。楼主的串口是同步模式吗?最好是打印一下接收到的内容,和下次接收到的内容,看看是不是因为处理空闲数据时,部分数据丢失。
[md]数据没有丢失,是在检验接收的数据包时,很多用的HAL_UART_Receive(),我用直接卡死了,是HAL_UART_STATE_BUSY_RX
我下面这样修改就直接卡死了
[md]发生了溢出导致的,说明上次有数据丢失了。建议用中断模式操作,不要用DMA。收到空闲时处理一下数据。接收完成后,重新开启中断。发生溢出后,只能重新初始化串口解决了。
没有明白,没有数据丢失,哪里溢出了?我就是用的串口空闲中断啊,接收完成开启啊,你没看我前面说的啊,