引言:近日笔者需要多串口实现printf,而众所周知直接printf会默认上次使用的串口,不方便直接调整,而网络上的方法都较为复杂,出于简化(偷懒)的目的,是否有一种可以直接进行串口重定向的方法呢?
前面笔者已经分别实现了串口的通信,这里笔者想用串口1连接串口屏,串口2连接语音播报模块,屏幕显示的同时进行播报,
没错,短短的一行代码就解决了问题,下面是实现原理。
我们知道,用cubmx进行初始化时会决定使用的串口,我们先找到这个函数的定义
instance是例子的意思,那么这个函数的作用就是让串口1是串口1(等于白说)
换个说法,这里有两个坑,一号坑和二号坑,还有两个要跳坑的小朋友——一号和二号,
而在一号坑上面有个话筒,一般来说,我们只能听到一号的声音,毕竟一个坑只能站一个人,可是如果我们想要听到二号的声音怎么办呢?没错!把二号挪到一号坑里,也就是上面所用到的函数
huart1.Instance = USART2;
当然,也不能管杀不管埋,所以用完以后还要将串口变回来
huart1.Instance = USART1;
好了,就当无事发生。
以上