首页 > 其他分享 >关于串口USART使用时相关注意事项

关于串口USART使用时相关注意事项

时间:2023-08-09 19:45:46浏览次数:63  
标签:USART 串口 flag FLAG 注意事项 波特率 DR

1、关于串口波特率的计算

波特率计算公式如下:

TX/RX波特率=FCLK/(16*USARTDIV)

USARTDIV=DIV_Mantissa+(DIVFraction/16)

以USART1波特率115200为例,FCLK为72M,则USARTDIV值为39.0625,即

39.0625=DIV_Mantissa+(DIVFraction/16)

其中,DIV_Mantissa表示整数部分,为36,DIVFraction/16表示小数部分,为0.0625,则DIVFraction的值为1.

 

2、关于串口通信修改波特率

注意若要在串口数据传输过程中修改波特率,建议在完成一次数据通信之后再修改波特率,修改波特率时建议先关闭串口,调用函数USART_Cmd(USART2, DISABLE);,以免造成数据传输错误,出现乱码,修改完成后再使能开启串口,调用函数USART_Cmd(USART2, ENABLE)。

如果想要多次修改波特率值,可以写一个数组,里面包括你想要切换的波特率,实时监测切换就行。波特率修改可参考下列函数。

 

3、关于串口发送数据是上次DR中的数据问题

在 TC=1 和 写DR寄存器同时发生下,会出现发送的数据是上次DR中的数据。

解决方法,建议使用TC标志判断,因为软件会读,相当于有延时。确保写DR寄存器的时候,上一个数据不要正好发完。

 

4、关于串口空闲中断标志位清除问题

空闲中断是在检测到在数据收受后,总线上在一个字节的时间内没有再接收到数据时发生。即串口的RXNE位被置位之后才开始检测,检测到空闲之后,串口的CR1寄存器的IDLE位被硬件置1,必须采用软件将IDLE位清零才能避免反复进入空闲中断。具体的做法是先读取USART_SR,再读取USART_DR。需要注意的是,不能采用库函数USART_ClearFlag()或者USART_ClearItPending()来清除IDEL标注,因为这两个函数接收的中断标志位仅包括:

USART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5).
USART_FLAG_LBD: LIN Break detection flag.
USART_FLAG_TC: Transmission Complete flag.
USART_FLAG_RXNE: Receive data register not empty flag. 

 

 

 

标签:USART,串口,flag,FLAG,注意事项,波特率,DR
From: https://www.cnblogs.com/liaigu/p/17617836.html

相关文章

  • 自制串口助手zcom.1.3.exe
    zcom.1.3.exehttps://www.aliyundrive.com/s/xpnLZvbRhjy提取码:点击链接保存,或者复制本段内容,打开「阿里云盘」APP,无需下载极速在线查看,视频原画倍速播放。......
  • 仪器仪表驱动安装及注意事项以Keithley 2600为例
    驱动安装顺序电脑安装对应通信设备驱动电脑安装对应版本VISA驱动检查设备通讯是否正常升级设备固件仪器GPIB设置建议恢复出厂后更改下GPIB地址即可注意驱动安装过程中不要将设备与电脑连接在一起,请断开仪器与电脑连接若使用labview请注意安装顺序与版本,先安装labvie......
  • 13. 串口通信
    一、什么是串口  串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定......
  • ubuntu 串口使用
    两种方法:第一种:添加串口设备访问规则以root身份执行:vim/etc/udev/rules.d/70-ttyusb.rules内容为:KERNEL=="ttyUSB[0-9]*",MODE="0666"注意:内容里边的双引号不能丢,否则不会生效此方法有两个弊端:1.该方法会让所有的普通用户都具有访问这些串口设备的权限,存在一定的安全隐......
  • JAVA jar包转.NET dll文件注意事项
    一、配置等:javaVersion:”1.8.0_151”IKVM:ikvm-8.1.5717.0IKVM下载地址:链接:https://pan.baidu.com/s/1mYutk0yghHxw2rOgFpDKJw提取码:0777IKVM需要配置环境:将IKVM.NET的bin文件夹的地址添加到环境变量。计算机右键属性–高级系统设置–高级–环境变量–在系统变量中找到PATH......
  • 第二代串口屏UI编辑工具素材格式要求
    UI_Editor是乐升半导体公司开发的一款针对TFT串口屏的显示功能开发的软件,使用UI_Editor编辑工具,用户可以快速对TFT串口屏进行显示功能的开发,使得用户从繁杂的UI开发中挣脱出来,把更多的精力放在底层功能的真正实现上来。按照UI_Editor的使用说明(详情查看乐升半导体公司官网),使......
  • 在AMD PetaLinux的systemd里启动后台命令的注意事项
    由于客户需要,需要在Linux里启动服务,使一个脚本在后台一直运行。于是创建一个systemd服务,使其运行顶层脚本,再在其中以后台运行方式启动另外一个长期运行脚本。结果发现,后台运行的长期运行脚本,过一段时间也退出了。经过调试和分析,发现systemd创建的后台进程,以“Type=forking”方......
  • USART、SPI和I2C通信协议:串行通信中的异同比较
    在嵌入式系统和通信领域,USART(UniversalSynchronous/AsynchronousReceiver/Transmitter)、SPI(SerialPeripheralInterface)和I2C(Inter-IntegratedCircuit)是三种常见的串行通信协议。它们各自具有独特的特点和应用场景,本文将对它们的异同进行比较,帮助读者更好地理解它们的适用场景......
  • c#串口通信讲解(一)(winform、wpf)
    转载:https://blog.csdn.net/weixin_30466421/article/details/99278174串口操作需要注意的几点如下:1、如果是USB转串口;则需要安装USB转串口驱动,附件有此驱动。2、串口打开状态最好不要直接插拔串口,可能会导致中控板或者串口线烧坏。3、使用串口调试工具CEIWEI,下一章节会贴上......
  • stm32用keil5新建C/C++写硬件串口模块的套路
    新建文件:写代码:就在这里开始写initSerial了..........