USART_GetITStatus和USART_GetFlagStatus的区别
USART_GetITStatus()和USART_GetFlagStatus()的区别
都是访问串口的SR状态寄存器,唯一不同是,USART_GetITStatus()会判断中断是否开启,如果没开启,也会返回false。
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint32_t USART_IT)
该函数不仅会判断标志位是否置1,同时还会判断是否使能了相应的中断。所以在串口中断函数中,如果要获取中断标志位,通常使用该函数。------串口中断函数中使用。
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG)
该函数只判断标志位。在没有使能相应的中断时,通常使用该函数来判断标志位是否置1。------做串口轮询时使用。
1 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG) 2 { 3 FlagStatus bitstatus = RESET; 4 /* Check the parameters */ 5 assert_param(IS_USART_ALL_PERIPH(USARTx)); 6 assert_param(IS_USART_FLAG(USART_FLAG)); 7 8 /* The CTS flag is not available for UART4 and UART5 */ 9 if (USART_FLAG == USART_FLAG_CTS) 10 { 11 assert_param(IS_USART_1236_PERIPH(USARTx)); 12 } 13 14 if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET) 15 { 16 bitstatus = SET; 17 } 18 else 19 { 20 bitstatus = RESET; 21 } 22 return bitstatus; 23 }
1 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT) 2 { 3 uint32_t bitpos = 0x00, itmask = 0x00, usartreg = 0x00; 4 ITStatus bitstatus = RESET; 5 /* Check the parameters */ 6 assert_param(IS_USART_ALL_PERIPH(USARTx)); 7 assert_param(IS_USART_GET_IT(USART_IT)); 8 9 /* The CTS interrupt is not available for UART4 and UART5 */ 10 if (USART_IT == USART_IT_CTS) 11 { 12 assert_param(IS_USART_1236_PERIPH(USARTx)); 13 } 14 15 /* Get the USART register index */ 16 usartreg = (((uint8_t)USART_IT) >> 0x05); 17 /* Get the interrupt position */ 18 itmask = USART_IT & IT_MASK; 19 itmask = (uint32_t)0x01 << itmask; 20 21 if (usartreg == 0x01) /* The IT is in CR1 register */ 22 { 23 itmask &= USARTx->CR1; 24 } 25 else if (usartreg == 0x02) /* The IT is in CR2 register */ 26 { 27 itmask &= USARTx->CR2; 28 } 29 else /* The IT is in CR3 register */ 30 { 31 itmask &= USARTx->CR3; 32 } 33 34 bitpos = USART_IT >> 0x08; 35 bitpos = (uint32_t)0x01 << bitpos; 36 bitpos &= USARTx->SR; 37 if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET)) 38 { 39 bitstatus = SET; 40 } 41 else 42 { 43 bitstatus = RESET; 44 } 45 46 return bitstatus; 47 }
转载于:https://www.cnblogs.com/leo0621/p/8709944.html
USART_GetITStatus和USART_GetFlagStatus的区别相关推荐
- STM32串口中 USART_GetITStatus 与 USART_GetFlagStatus的区别
一.ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)在判断相应位是否置1(读SR寄存器)前会先判断相应位的中断是 ...
- USART_IT与USART_FLAG,USART_GetITStatus与 USART_GetFlagStatus
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT) : 不仅会判断标志位是否置1,同时还会判断是否使能了相应的中 ...
- STM32的USART_GetFlagStatus和USART_GetITStatus解析
STM32固件库中提供了串口收发的标志位函数,包括USART_GetFlagStatus(-,-);和USART_GetITStatus(-,-);两者容易混淆 区别就在于:前者返回值是中断标志位状态 ...
- windows通信端口初始化失败_STM32实例——USART串口通信实验(二)
USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...
- 关于STM32的USART_GetFlagStatus和USART_GetITStatus解析(异步通信)
前言 STM32固件库中提供了串口收发的标志位函数,包括USART_GetFlagStatus(-,-);和USART_GetITStatus(-,-);,两者容易混淆,重点区别就在于:前者返回值是中 ...
- STM32的USART_GetFlagStatus和USART_GetITStatus
ITStatus USART_GetIT函数详解 一开始是把USART_IT_RXNE 0x0505 写成2进制,然后只要它的低八位,然后低八位右移5位,然后得到usartreg的值为0b001,然后 ...
- USART_ClearITPendingBith和 USART_ClearFlag的区别
起初 stm32 v3.5 库函数里面,对于串口USART有这样两个函数: USART_ClearFlag()和USART_ClearITPendingBit() 查库 ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
最新文章
- 漫画讲述人工智能简史
- Nginx——location配置
- 有三AI不得不看的几十篇技术综述
- UE4学习-程序崩溃,如何恢复工程
- python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别
- 乐思启慧教学系列—Bootstrap布局规则
- Oracle逻辑读,物理读
- 当Ubuntu安装软件碰到找不到安装包时E: Package ‘unzip‘ has no installation candidate
- elasticsearch数据迁移
- Idea多次启动同一个服务
- 机器学习 - 统计学中的均值、方差、标准差
- WIN7下WIFI共享上网教程
- ovo svm_反思我在OVO担任远程产品设计实习生的时间
- 浅谈脑电中的delta振荡
- 基于计数栈的非递归二叉树遍历算法
- 重磅开讲 | 图灵奖得主—— Joseph Sifakis
- RTX3090 与pytorch版本对应关系
- JAVA带你一步一步实现微信公众号开发(一)
- 用Animation制作简单的物体动画
- Windows下搭建ARM11裸机开发环境(1):工具安装
热门文章
- 【Java深入研究】9、HashMap源码解析(jdk 1.8)
- hdu4932 Miaomiao#39;s Geometry (BestCoder Round #4 枚举)
- OD逆向调试程序的笔记
- 8字箴言:尊重、尽责、开放、创新
- 26Exchange Server 2010跨站点部署-内外网邮件流测试
- [C++] 用Xcode来写C++程序[6] Name visibility
- 如何学习Flex Framework
- web2.0网站的配色参考方案
- Android还在用Toast?你Out啦,该试试Snackbar了
- 随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客