单片机一个串口复用问题
我用一个单片机的TXD,RXD分别接两个模块,从一个接受信息,另一个发送信息,可以分时进行,电路不冲突(单个模块只与单片机的TXD RXD中一个连接即可通信),但波特率不同,那我是不是要分两次初始化串口呢?能实现吗?还有串口中断怎么写呢,可以通过写入SBUF的信息不同来判断吗?(分开单独通信已经搞定了) 单片机
[解决办法]
“但波特率不同,那我是不是要分两次初始化串口呢”
可以 2次 初始化, 不过 开销就大 了。
如果 硬件 有 2个 串口 就好了。
[解决办法]
“什么叫开销大啊” OverHead
就是 每次 改变 波特率时 都 要 重新 初始化 一次。
“发送” 一般 不用 中断, 因为 你 知道,发 什么, 什么时间 发。
接受 中断 是要 的。
[解决办法]
根据波特率不就可以判断了吗?
假设需要从A读信息发送到B
先设置成A的波特率,进中断,读取数据,配成B的波特率,发送出去,再设置成A的波特率等待。
[解决办法]
你现在 是 “半工”状态, 不能 同时 收发 (“全工“)
[解决办法]
就我们产品进行分时复用串行口的经验看,这样不太好弄.当然,我们是分别对两个设备,和楼主的有点区别
在用到对应的设备的时候,重新配置串行口
同时把接收和发送功能互斥配置(大概就是,接收数据的时候,不允许发送,发送数据的时候不允许接收)
虽然没这么用过,不过,感觉应该可以实现
[解决办法]