下面通过485半双工的通信过程,记录USART串口的几个使能位、标志位。

 

说明:USART_IT_TC 和 USART_IT_RXNE是一个常量,并不代表(TC、RXNE)这两位。

#define USART_IT_TC                          ((uint16_t)0x0626)
   #define USART_IT_RXNE                        ((uint16_t)0x0525)

一、以发送多个字符为例:

       1. 初始化串口(UE使能位)

由于这个程序非常通用,也比较长。

注意的一点,初始化中,对UE进行使能; 即USART模块可以被使用。

     

 2. 使能(USART)的发送或接收中断位(TCIE、RXNEIE)

通过对485的使能脚的高、低电平的控制,达到串口分别收、发的控制。

以上,1-2步,主要是对USART的控制寄存器(CR)的3个使能位进行设置。

3. 将需要发送的数据放到USART->DR中,触发中断

当需要发送一组字符时,首先将第一个字符放到USART->DR中,然后开启发送使能中断。

USART就会将该字符发送出去。

  4. 发送完1个字节之后,进行入中断服务, 进入中断服务函数USARTx_IRQHandler(TC、RXNE)

当第一个字符被发送完之后,DR(数据寄存器)为空,此时,TC被硬件置位,产生中断。

在中断函数里面,再次调用字符(字节)发送函数,并且清除TC标志位。

不停地触发发送中断,直到所有字符被发送完。

以上3-4步,涉及对状态寄存器(USART_SR)的标志位的操作。

对SR操作的函数:

1. USART_ClearITPendingBit(USART2, USART_IT_TC)  //清除待处理的发送完成中断标志位

2. USART_ClearFlag(USART3,USART_FLAG_TC);      //清除发送完成标志位

3. USART_ClearITPendingBit(USART2, USART_IT_RXNE) //清除待处理的接收完成中断标志位

4. USART_ClearFlag(USART3,USART_FLAG_ RXNE);    //清除接收完成标志位

注意:1和2 , 3和4的作用完全一样;只是名称不同,在不同场合中应用更加明确。

二、接收数据的过程,是一样的。只是不需要第3步。

(初始化---使能接收----接收到数据,触发中断---中断服务程序)

三、补充一点

有时候,我们会遇到下面的代码:(这个代码和上面的代码不在一个工程里面)

上述代码是通过串口1,发送一串字符,例如: char *s = "hello."

一定要注意: 这里并不需要配置:

这时因为,上述的发送函数,使用的while(),读取的是 USART->SR中的TC位。

这个TC位,是由硬件置位的。每次发送完1个字符后,硬件自动置位为1.

弄清USART串口的使能位(UE、TCIE、RXNEIE)和标志位(TC、RXNE)相关推荐

  1. 标志位的作用c语言,标志位作用及操作(转)

    一.运算结果标志位 1.进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位.如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0. 使用该标志位的情 ...

  2. 【51单片机快速入门指南】3.3:USART 串口通信

    目录 快速使用 硬知识 串行口相关寄存器 串行口控制寄存器SCON和PCON 串行口数据缓冲寄存器SBUF 从机地址控制寄存器SADEN和SADDR 与串行口中断相关的寄存器IE和IPH.IP 串行口 ...

  3. USART串口通信实验

    整理自:正点原子PPT 文章目录 串口简介 串口通信基本原理 常用串口相关寄存器 串口操作相关函数 硬件连接 串口配置一般步骤 例程参考 升级版 串口简介 详情见STM32F4开发指南 串口通信基本原 ...

  4. linux 串口 dma,STM32 USART串口DMA 接收和发送流程详解

    1.dma发送流程 1.配置DMA发送中断 - NVIC_Init 2.配置串口中断 - NVIC_Init 3.GPIO配置 - GPIO_Init 4.DMA发送配置 -DMA_Init  DMA ...

  5. <FreeRTOS入门第九节>事件标志位

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.事件标志位是什么? 二.API介绍 1.事件标志位的创建 2.事件标志位的设置 3.事件标志位清除 4.获取某一位 ...

  6. 内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理

    内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理 一丶熟悉WinDbg的常见命令. dd 虚拟地址      显示内存. !dd 加上!,        ! dd 物理地 ...

  7. x86架构下 CF与OF标志位 带符号和无符号运算 详解

    针对能够影响OF和CF标志位的指令,一般来说是涉及到数据运算的指令,这里使用add举例,即不区分有无符号的加法指令,参与运算的数据,从二进制层级去考虑. CF标志位 对于CF,它是carry flag ...

  8. 汇编语言中常用指令对标志位寄存器的影响

    参考了<汇编语言 基于x86处理器>第七版 转载请注明出处 如果有错误的地方请指正,谢谢. 文章目录 算术运算(ADD/SUB)影响标志位 ADD指令 SUB指令 NEG指令 INC/DE ...

  9. PLC常用标志位信号时序编程注意事项

    很多指令或者功能FC.功能块FB等都有执行完成标志位,比如三菱PLC里的M8029 .西门子modbus通讯功能块的完成标志位Done,这些完成标志位的时序动作至关重要,有的指令在单周期里就完成了,我 ...

最新文章

  1. Android动画之帧动画和补间动画
  2. VAE(Variational Autoencoder)的原理
  3. 反流技术之IE插件技术研究
  4. ABB机器人ROBOTSTUDIO中轨迹与二次开发的问答
  5. 红帽 jboss_红帽正式宣布发布JBoss BPM Suite 6和JBoss BRMS 6
  6. 上传图片或文件 方法一
  7. struts2中一些常用的写法 记录
  8. es6 Proxy 实例的方法
  9. 可靠信道传输2.0 2.1 3.0
  10. 让A超链接无效的办法 阻止元素发生默认的行为
  11. OV9712+3518EV200
  12. wifi mesh测试软件,网件MK63:Wifi 6+Mesh组网一步到位
  13. 微信小程序简易音频播放器(wx.getBackgroundAudioManager())
  14. 笔记|统计学习方法:感知机模型
  15. sim卡没坏但苹果手机无服务_苹果6sp无服务信号不好解决办法
  16. .net 前台调用后台方法
  17. 史上公认的最好学习方法, 学英语者的福利
  18. Java相关面试题总结及答案
  19. 【华人学者风采】宋晓东 加州大学伯克利分校
  20. 换网线导致的无法远程连接服务器问题

热门文章

  1. 2018山东冬令营:还钱问题,UPC(5700) 还钱问题
  2. 苹果自研Apple M1芯片对机器学习意味着什么?
  3. 编译LineageOS
  4. 如何自定义火狐背景_在Firefox中自定义菜单
  5. domian shift
  6. Alpha冲刺——事后诸葛亮
  7. 出差中,推荐几个百度,腾讯,抖音大佬的公众号
  8. Unity UI框架详细理解--场景管理
  9. 【TDA2x学习】TDA2HG 知识点总结
  10. 2019湖北省赛网络赛C Store CDQ分治