一:2个状态位_itstatus与_flagstatus的区别:

_flagstatus:只是读状态标志,不管中断是否使能或发生。例如使用查询方式发送数据就需要读改状态位。

_itstatus:和中断相关,除了读状态位外还涉及对控制寄存器的操作,使用中断方式必须使用该状态位进行中断是否发生的判断和状态位的清0.

二两个发送中断的区别:TC和TXE

串口数据发送的过程是:先写数据到DR寄存器->移位寄存器->TX管脚。当数据从DR寄存器移出到移位寄存器(即DR寄存器空)时TXE就置位,优点是能保持发送数据的连续性;而当一帧数据全部发送完成("\0"结束符)则触发TC中断,优点是可确定发送完成的时间多用于数据的流控。

三关于发送数据丢失第一字节:

因为初始化后DR寄存器是空的,所以此时TC/TXE的标志位都是置1的,如果在发送数据前没有读状态寄存器且不清零状态标志位就会出现丢失第一字节。解决的办法是初始化完成开中断使能后清0状态标志位clearFlagstatus(flagstatus_TC);或者在发送第一字符前先读状态寄存器再操作getflagstatus(flagstatus_TC);

四关于接收没接到数据也进入中断而读所有的中断标志位又都为RESET:

数据接收的过程是RX引脚->移位寄存器->RDR寄存器->读出。当数据从移位寄存器移出到RDR寄存器时则RXNE置位。如果在RXNE=1同时又有数据进入时会出现ORE过载错误,引发ORE错误中断,但此时因ORE中断未使能所以中断状态位读不出来,使能后可读出来。

五:485串口的收发:在定时器中断里面一直发,发送完成后使能接收,使能中断接收;在接收中断里接收完成后禁止中断接收,打开发送。

最新文章

  1. ContextMenuStrip 类
  2. List集合去重的一种方法
  3. VC++获取IDC_EDIT的7种方法
  4. 【P1915】[usaco09 dec gold]电视游戏问题
  5. js断点调试心得
  6. GETOBJECTOPTIONS
  7. go语言 hello 小结
  8. UVa 445 - Marvelous Mazes
  9. java web filter 之一 基础实现
  10. Qt之属性系统
  11. JAVA WEB中如何让数据库连接对开发人员完全透明?
  12. Oracle数据表恢复
  13. 使用Python自动提取内容摘要
  14. 文本编辑利器Notepad++ 10个强大而又鲜为人知的特性【转】
  15. python自动化常见问题汇总
  16. 【HDFS API编程】开发环境搭建
  17. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 前台request 获取body的格式是正确的 (2018-03-23 16:44:22) 但是Java 后台却格式化成了yyyy-MM-dd的格式 巨坑(@InitBinder搞得贵)
  18. top,job,user,file,alias
  19. Jsuop Whitelist
  20. MOSFET shunt regulator substitutes for series regulator

热门文章

  1. C# WinForm获取当前路径汇总
  2. Clr core
  3. SpringMVC+spring-security+sitemesh+hibernate+freemarker整合-转
  4. JSON 序列化和反序列化——JavaScriptSerializer实现
  5. Q3: Linked List Cycle II
  6. winform 调用http 通过代理出现的一系列问题
  7. python selenium下载电子书
  8. 找不到所需要的ndbm.h头文件
  9. ASP.NET MVC2中Controller向View传递数据的三种方式
  10. php生成二维码可以有以下几种方式