ARM内核单片机的串口通信(UART)使用
进入正题:
首先,要明白使用UART进行通信,无论收发数据,传输的都是16进制。而中文、英文、标点符号其本质都是16进制,只是一个中文需要用两个字节表示,一个英文需要一个字表示。说这个的原因是,我一开始以为一定需要Printf()函数才能输出中文和标点符号等等,后来明白原理才发现并不一定需要printf()函数。只要找到底层的发送单字节函数,自己就能写出发送多字节函数,进而也能写出printf()函数出来。
关于串口的底层驱动:
发送数据:找到发送字节函数,直接使用就可以了,这个没啥说的。
接收数据:(最近的工作我是使用AC781作为主控芯片)串口的数据接收可以使用轮询的方式和中断的方式接收(本次工作由于要在原有项目中加入串口,而当配置串口中断时,不知道啥原因会导致串口无法使用,所以我是使用轮询方式)。
轮询方式接收:电脑发送数据给芯片时,电脑可以一次性发送多个字节。而要注意的是,芯片每次读取数据(调用读取串口数据函数),只能读取一个字节。因此,芯片设计有一个缓存 区,电脑发送的多个字节会存放在一个缓冲区内,只需进行多次读取就能读出电脑发送的所有数据。
中断方式接收:电脑发送数据给芯片时,每发送一个字节,芯片进入一次中断,进而可以读取该字节。(记得中断有两个标志位,一个是单字节标记位,一个是一帧数据标记位(用来标记一帧数据接收完))
串口常用C语言:"strelen()"获取字节长度(不包含双引号的长度),"sizeof()"获取字节长度(包含双引号的长度)
(自我学习总结)