微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32学习笔记--串口波特率

stm32学习笔记--串口波特率

时间:11-27 来源:互联网 点击:
这几天的学习有什么问题呢?开始看前几个例程的时候貌似还找到些感觉,学了些东西,比如串口需要配置的波特率是如何计算的,如何通过位段位带别名区的设计实现对I/O口单个位的寻址操作,端口模式如何设置,spi与iic之间各自的优势和劣势,上个周稀里糊涂看了那么多,现在一想就剩下这些了,然后是这个周,这个周的感觉是更加的不扎实,很多东西都是走马观花,看了就忘,比如中断控制,直到看了第二遍才形成框架,看门狗DMA游戏手柄红外通信的各个实验,好吧,这些东西我仅仅知道是怎么回事,对他们的了解甚至不如上个周的模块,至少还有个框架,到了这里,只剩下“哦,这个,我知道……”就没了,对!就没了。所以接下来要去改程序,不管改什么程序,当然最好是直接拿三轴加速度计的程序去改,随便改,改了之后在板子上能看到效果,去做这种事儿,如果这个模块没什么好改的就去改别的,反正要着手去改,不能只这样看了,好吧,明天开始试试。

下面把我还能记得的东西整理一下。

1.串口的波特率是如何配置的

STM32的每个串口都有一个独立的波特率寄存器USSART-BRR,通过设置该寄存器就可以达到配置不同波特率的目的。当然关键是波特率该设置成多少的问题。因为首先我们应该知道的是为什么要配置波特率,下面是百度找到的答案

单片机串行通信波特率就是每发送两个数据的之间的间隔,或者是每秒钟发送的字节数,你在进行串行通信时,是两个单片机进行通信,那肯定是要进行同步的(波特率要相同),要不然通信没法建立

也就是说波特率是不能任意设置的,需要和芯片配合起来。我们知道波特率之后还需要把它用寄存器表示出来,这就牵涉到最初说道的计算。其中USART-BRR的最低四位用来存放小数部分,紧接着的12位用来存放整数部分,最高16位没有使用。计算公式如下

USARTdiv=PCLK2/(串口波特率*16)。这样就可以算出USARTdiv的值了,然后转换成二进制放入寄存器中就完成了对串口波特率的设置。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top