串口通信咱们就简单说说咯,因为无论是在51还是stm32上都是入门级别的实验(狗头)
学到现在我感觉IMX6UL的寄存器的配置是极其重要的,所以我从寄存器的配置看起。
![](https://img-blog.csdnimg.cn/img_convert/ba9cfce25c1fc6297153957ef1fd4afb.png)
![](https://img-blog.csdnimg.cn/img_convert/d693456bea238fe7d40283eb4711eaad.png)
(另外说一句)我觉得用英文去理解这个位还是很方便的,比如UARTx_UCR1中的CR就是Control Register的意思,加上vs编译器插件里有提示,那就更方便了
![](https://img-blog.csdnimg.cn/img_convert/32752a8f4f4deb14bb02e861b0013133.png)
![](https://img-blog.csdnimg.cn/img_convert/30f4ca2f760342a1c84693a052fd342f.png)
![](https://img-blog.csdnimg.cn/img_convert/c2a2511cce779153dfdc06ca31749b61.png)
以上三个控制寄存器配置好就可以了
接下来我们配置状态寄存器,状态的英文是state,所以是UARTx_USR2,uart state register,其实不用翻译的一模一样,差不多意思自己能看得懂就行。
![](https://img-blog.csdnimg.cn/img_convert/93e62872e6f87da5476051a9243567d3.png)
读取这个寄存器的数值我们就能判断发送与接收的情况。
![](https://img-blog.csdnimg.cn/img_convert/74ae9846cee9535e83d5d0c831a150e7.png)
我们读取USR2的bit3,当这个位为0的时候表示正在发送,我们则等待while,为1时退出while发送数据。
![](https://img-blog.csdnimg.cn/img_convert/c0396361ac6906a6de5c36292d17dafd.png)
同理,等待接收完成后返回URXD中的数据