弄清USART串口的使能位(UE、TCIE、RXNEIE)和标志位(TC、RXNE)
下面通过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)相关推荐
- 标志位的作用c语言,标志位作用及操作(转)
一.运算结果标志位 1.进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位.如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0. 使用该标志位的情 ...
- 【51单片机快速入门指南】3.3:USART 串口通信
目录 快速使用 硬知识 串行口相关寄存器 串行口控制寄存器SCON和PCON 串行口数据缓冲寄存器SBUF 从机地址控制寄存器SADEN和SADDR 与串行口中断相关的寄存器IE和IPH.IP 串行口 ...
- USART串口通信实验
整理自:正点原子PPT 文章目录 串口简介 串口通信基本原理 常用串口相关寄存器 串口操作相关函数 硬件连接 串口配置一般步骤 例程参考 升级版 串口简介 详情见STM32F4开发指南 串口通信基本原 ...
- linux 串口 dma,STM32 USART串口DMA 接收和发送流程详解
1.dma发送流程 1.配置DMA发送中断 - NVIC_Init 2.配置串口中断 - NVIC_Init 3.GPIO配置 - GPIO_Init 4.DMA发送配置 -DMA_Init DMA ...
- <FreeRTOS入门第九节>事件标志位
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.事件标志位是什么? 二.API介绍 1.事件标志位的创建 2.事件标志位的设置 3.事件标志位清除 4.获取某一位 ...
- 内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理
内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理 一丶熟悉WinDbg的常见命令. dd 虚拟地址 显示内存. !dd 加上!, ! dd 物理地 ...
- x86架构下 CF与OF标志位 带符号和无符号运算 详解
针对能够影响OF和CF标志位的指令,一般来说是涉及到数据运算的指令,这里使用add举例,即不区分有无符号的加法指令,参与运算的数据,从二进制层级去考虑. CF标志位 对于CF,它是carry flag ...
- 汇编语言中常用指令对标志位寄存器的影响
参考了<汇编语言 基于x86处理器>第七版 转载请注明出处 如果有错误的地方请指正,谢谢. 文章目录 算术运算(ADD/SUB)影响标志位 ADD指令 SUB指令 NEG指令 INC/DE ...
- PLC常用标志位信号时序编程注意事项
很多指令或者功能FC.功能块FB等都有执行完成标志位,比如三菱PLC里的M8029 .西门子modbus通讯功能块的完成标志位Done,这些完成标志位的时序动作至关重要,有的指令在单周期里就完成了,我 ...
最新文章
- Android动画之帧动画和补间动画
- VAE(Variational Autoencoder)的原理
- 反流技术之IE插件技术研究
- ABB机器人ROBOTSTUDIO中轨迹与二次开发的问答
- 红帽 jboss_红帽正式宣布发布JBoss BPM Suite 6和JBoss BRMS 6
- 上传图片或文件 方法一
- struts2中一些常用的写法 记录
- es6 Proxy 实例的方法
- 可靠信道传输2.0 2.1 3.0
- 让A超链接无效的办法 阻止元素发生默认的行为
- OV9712+3518EV200
- wifi mesh测试软件,网件MK63:Wifi 6+Mesh组网一步到位
- 微信小程序简易音频播放器(wx.getBackgroundAudioManager())
- 笔记|统计学习方法:感知机模型
- sim卡没坏但苹果手机无服务_苹果6sp无服务信号不好解决办法
- .net 前台调用后台方法
- 史上公认的最好学习方法, 学英语者的福利
- Java相关面试题总结及答案
- 【华人学者风采】宋晓东 加州大学伯克利分校
- 换网线导致的无法远程连接服务器问题