|
我需要用DMA发送,因为485需要设置方向,因此我先是在启动DMA发送前设置为发送模式,产生DMA传输完成中断中将485改为接收模式,这时候发送的数据会丢失最后两个字节。 原因是我后面发现是产生DMA 传输完成中断的时候,串口并没有完成数据传输,这时将485改成接收模式就发不出去后面的了。 然后我就在串口发送完成中断里面检测是不是发送完最后一个字节了,如果是,就将485改成接收,这时候就可以完成发送数据。 但是问题来了,串口的TC中断讲道理是每完成一个字节的传输就会产生,但是我用DMA的话 他是完成了一次buff里所有的数据传输才产生的传输完成的TC中断 , 这是怎么回事啊? |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
可以在DMA中断后把 TC的中断打开,在TC的中断里再改RS485方向,再关掉TC中断,可以这样试试
之前我也用了串口发送完成中断,仍然数据丢失。但是在串口中断断点【一次】之后,数据就正常了。不知道原因。
出现同样情况,打断点后数据正常收发了。请问后然这么解决了?
电路设计可以消除这个问题。 用三极管做一个开关电路。RE 和 DE 接到一起 。当有检测TX电平的时候,RE DE拉高。这样只有当TX有电平的时候,就会一直使能 DE。 程序设计上 如果TC中断不行的话,那就实时检测TC flag + 延时吧,最好跑个RTOS。