ARM内核单片机的串口通信(UART)使用(数据的收发)

ARM内核单片机的串口通信(UART)使用

进入正题:

首先,要明白使用UART进行通信,无论收发数据,传输的都是16进制。而中文、英文、标点符号其本质都是16进制,只是一个中文需要用两个字节表示,一个英文需要一个字表示。说这个的原因是,我一开始以为一定需要Printf()函数才能输出中文和标点符号等等,后来明白原理才发现并不一定需要printf()函数。只要找到底层的发送单字节函数,自己就能写出发送多字节函数,进而也能写出printf()函数出来。

 

关于串口的底层驱动:

  发送数据:找到发送字节函数,直接使用就可以了,这个没啥说的。

  接收数据:(最近的工作我是使用AC781作为主控芯片)串口的数据接收可以使用轮询的方式和中断的方式接收(本次工作由于要在原有项目中加入串口,而当配置串口中断时,不知道啥原因会导致串口无法使用,所以我是使用轮询方式)。

    轮询方式接收:电脑发送数据给芯片时,电脑可以一次性发送多个字节。而要注意的是,芯片每次读取数据(调用读取串口数据函数),只能读取一个字节。因此,芯片设计有一个缓存 区,电脑发送的多个字节会存放在一个缓冲区内,只需进行多次读取就能读出电脑发送的所有数据。

    中断方式接收:电脑发送数据给芯片时,每发送一个字节,芯片进入一次中断,进而可以读取该字节。(记得中断有两个标志位,一个是单字节标记位,一个是一帧数据标记位(用来标记一帧数据接收完))

 

 

串口常用C语言:"strelen()"获取字节长度(不包含双引号的长度),"sizeof()"获取字节长度(包含双引号的长度)

(自我学习总结)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值