怎么用单片机确定串口接收数据的时间间隔?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用单片机确定串口接收数据的时间间隔?相关的知识,希望对你有一定的参考价值。

参考技术A

肯定是先要设置定时器,但是定时器也不能设置那么长的时间间隔,可以设置100mS,然后再定时器中断里用一个变量计数,计10次就是1S咯,一个单元最大值为255,也就是最长可以255*100mS,如果要更长,就用两个单元计数,最长就变成255*255*100mS,依次类推就行了。

关于换行的问题,换行符也是一个ASII码,找到对应的ASII码,然后发送就行了。

1. 什么是波特率

不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。

STM32波特率相关的寄存器

STM32单片机设置波特率的寄存器只有一个:USART_BRR寄存器,

波特率寄存器

该寄存器的有效位数为16位,前4位用于存放小数部分,后12位用于存放整数部分。将波特率算出来后,数值填入这个波特率就可以了。

必须用中断的方式接收,每接收一个字节中断一次,然后统计接收字节数,达到要求的数量后再进行处理。对于不等长的数据帧,可根据第一个字节(这种通信方式都有一个字节的特征字)或特征字来区分,然后确定接收的字节数。

STM32 串口为啥只能接收发送的部分数据

程序BUG,或者接受缓冲的数组变量满了,不过基本上可以确定是程序问题 参考技术A 这个跟stm32没有关系,跟你的程序有关系。

以上是关于怎么用单片机确定串口接收数据的时间间隔?的主要内容,如果未能解决你的问题,请参考以下文章

单片机串口怎么接收超过255字节的数据,数组只能存放255字节,有啥方法可以实现不间断的接收

STM32 串口为啥只能接收发送的部分数据

单片机模拟串口通讯,将串口接收到的数据原样发送,收到的数据长度不同。怎样判断数据接收完毕?

STM32的SPI从机接收数据错误是怎么回事

STM32单片机通过USART1接收到数据后,怎么把接收到的数据通过单片机的CAN口发送出去啊?

STM32HAL轮询模式串口接收函数超时等待问题?