关于STM32串口接485一直进接收中断的问题_一米阳光 我的板子用的STM32F103VCT6,是我的毕业设计,其中485芯片的使能端RE和DE是接在一起的,反正也是半双工的,我的程序是让串口在定时器中断里一直发送数据,发送完之后立即使能485接收,单片机只使能接收中断,在中断里处理数据后再使能485的发送,注意485使能发送后要延迟3-4ms再发送,否则会发送乱码!但是调试的时候一直有一个问题,就是运行之后一直进串口中断。答辩之前我一直在研究这个问题,但是程序从哪方面说都没有问题,即使是用keil调试,在进中断后寄存器的各个位也是正常的,以及正常清除标志位。但是这次中断刚结束,马上又进入下一次中断,看寄存器还是进的接收中断,但是我根本没有发送数据。检测接受道德数据,好像就一两个数来回变。看硬件,接法也完全没什么问题啊,在网上参考高手的电路。以至于到答辩我的毕设也没能实现全部功能(无法正常接收)。今晚我有用大虾开发板的串口例程改动了一点,测试我的串口,问题和在学校一样,但调试发现一个问题,我打开485发送后,就会立马进接收中断出不来,只接收没问题。后来我就想是不是因为接了485后,单片机真的接收到东西了。 我测试485使能接受和使能发送时候485RO和DI的电平变化,发现使能发送时候,都是3V多,但是使能接收时候485RO口变为1V多的低电平。STM32的数据手册上说接受器起始位侦测序列为1110x0x0x0x0x0x0,这样就是说当485由接收使能转变为发送使能时候,RO输出由高变低,即单片机的RX由高变为低,那么单片机侦测到起始序列,认为有数据发送过来,就进了中断。 所以这个问题的解决方法就是在发送使能485发送前把串口的接收使能关掉,发送完成后先把485转变为接收使能,再允许单片机串口的接收使能位。这样可保正常。当然这是适合我自己的硬件 解了我心头郁闷已久的问题。爽啊。晚安!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/61124.html