当前位置: 首页 > news >正文

如何加快门户网站建设方案可以做软件的网站有哪些功能吗

如何加快门户网站建设方案,可以做软件的网站有哪些功能吗,网站怎么做子分类,建筑工程资料网站文章目录共同点不同点USART_GetITStatus函数详解USART_GetFlagStatus函数共同点 都能访问串口的SR寄存器 不同点 USART_GetFlagStatus(USART_TypeDef USARTx, uint16_t USART_FLAG):* 该函数只判断标志位(访问串口的SR寄存器)。在没有使能…

文章目录

    • 共同点
    • 不同点
    • USART_GetITStatus函数详解
    • USART_GetFlagStatus函数

共同点

都能访问串口的SR寄存器

不同点

USART_GetFlagStatus(USART_TypeDef USARTx, uint16_t USART_FLAG):*
该函数只判断标志位(访问串口的SR寄存器)。在没有使能相应的中断函数时,通常使用该函数来判断标志位是否置1
USART_GetITStatus(USART_TypeDef USARTx, uint16_t USART_IT) :*
不仅会判断标志位是否置1(访问串口的SR寄存器),同时还会判断是否使能了相应的中断(访问串口的CR1寄存器)。所以在串口中断函数中,如果要获取中断标志位,通常使用该函数。USART_GetITStatus判定的是事件标志和使能控制位,这两个位同时为1返回值才为1

USART_GetITStatus函数详解

#define USART_IT_PE                          ((uint16_t)0x0028)
#define USART_IT_TXE                         ((uint16_t)0x0727)
#define USART_IT_TC                          ((uint16_t)0x0626)
#define USART_IT_RXNE                        ((uint16_t)0x0525)
#define USART_IT_ORE_RX                      ((uint16_t)0x0325) /* In case interrupt is generated if the RXNEIE bit is set */
#define USART_IT_IDLE                        ((uint16_t)0x0424)
#define USART_IT_LBD                         ((uint16_t)0x0846)
#define USART_IT_CTS                         ((uint16_t)0x096A)
#define USART_IT_ERR                         ((uint16_t)0x0060)
#define USART_IT_ORE_ER                      ((uint16_t)0x0360) /* In case interrupt is generated if the EIE bit is set */
#define USART_IT_NE                          ((uint16_t)0x0260)
#define USART_IT_FE                          ((uint16_t)0x0160)
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)
{uint32_t bitpos = 0x00, itmask = 0x00, usartreg = 0x00;ITStatus bitstatus = RESET;/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_GET_IT(USART_IT)); /* The CTS interrupt is not available for UART4 and UART5 */ if (USART_IT == USART_IT_CTS){assert_param(IS_USART_1236_PERIPH(USARTx));} /* Get the USART register index */usartreg = (((uint8_t)USART_IT) >> 0x05);/* Get the interrupt position */itmask = USART_IT & IT_MASK;itmask = (uint32_t)0x01 << itmask;if (usartreg == 0x01) /* The IT  is in CR1 register */{itmask &= USARTx->CR1;}else if (usartreg == 0x02) /* The IT  is in CR2 register */{itmask &= USARTx->CR2;}else /* The IT  is in CR3 register */{itmask &= USARTx->CR3;}bitpos = USART_IT >> 0x08;bitpos = (uint32_t)0x01 << bitpos;bitpos &= USARTx->SR;if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET)){bitstatus = SET;}else{bitstatus = RESET;}return bitstatus;  
}

以RXNE为例:

在这里插入图片描述
在这里插入图片描述

一开始是把USART_IT_RXNE 0x0505写成2进制,然后只要它的低八位,然后低八位右移5位,然后得到usartreg的值为0b001,然后单击鼠标可以找到IT_MASK的值,它与我们的USART_IT相与得到它的值为5,接下来就是IT_MASK等于0x01左移5位,为什么是5位,因为要判定RXNEIE,他就是bit5。我们得到了IT_MASK的第5位为1,然后和CR1寄存器相与,进而判定RXNEIE是不是1itmask &= USARTx->CR1;也就是判断是否打开了中断。接下来就是通过bitpos &= USARTx->SR;判断下面寄存器SR的第五位。

综上所述


USART_GetITStatus判定的是事件标志和使能控制位,这两个位同时为1返回值才为1,
在这里插入图片描述

在这里插入图片描述

USART_GetFlagStatus函数

#define USART_FLAG_CTS                       ((uint16_t)0x0200)
#define USART_FLAG_LBD                       ((uint16_t)0x0100)
#define USART_FLAG_TXE                       ((uint16_t)0x0080)
#define USART_FLAG_TC                        ((uint16_t)0x0040)
#define USART_FLAG_RXNE                      ((uint16_t)0x0020)
#define USART_FLAG_IDLE                      ((uint16_t)0x0010)
#define USART_FLAG_ORE                       ((uint16_t)0x0008)
#define USART_FLAG_NE                        ((uint16_t)0x0004)
#define USART_FLAG_FE                        ((uint16_t)0x0002)
#define USART_FLAG_PE                        ((uint16_t)0x0001)
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)
{FlagStatus bitstatus = RESET;/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_FLAG(USART_FLAG));/* The CTS flag is not available for UART4 and UART5 */if (USART_FLAG == USART_FLAG_CTS){assert_param(IS_USART_1236_PERIPH(USARTx));} if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET){bitstatus = SET;}else{bitstatus = RESET;}return bitstatus;
}

假设判定的是RXNE 标志位:

#define USART_FLAG_RXNE ((uint16_t)0x0020) if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET) {
bitstatus = SET; }

这不就是判定的SR寄存器的bit5-RXNE 标志位是不是1
在这里插入图片描述
在这里插入图片描述

转载不声明,谭泥小几及

http://www.15wanjia.com/news/163575.html

相关文章:

  • 网站开发维护招聘网站换服务器要怎么做
  • 大公司网站色彩设计双语版网站案例
  • 网站概要设计模板软件之家
  • 本地做网站绑定域名公司网站要备案么
  • 让人做网站 需要准备什么店铺logo图片免费生成女士
  • 电影网站这么做关键词心知天气Wordpress
  • 鞋行业的网站建设wordpress 4.8 主题
  • 网站导航设计应注意哪些问题深圳比较出名的外贸公司
  • 电商设计网站有哪些功能模块骑行网站模板
  • 电子商务毕业设计设计网站建设h5模板素材
  • 潍坊做网站哪家好网页个人主页设计
  • 有了域名之后怎么做自己的网站重庆相亲网
  • 网站开发与设计总结地图网站怎么做
  • 网站建设租用服务器专做毕业设计的网站
  • 电商网站怎么做与众不同托管经营
  • 视频变成网站怎么做的网站建设规划书中包含内容
  • 服装网站建设网推广普通话活动
  • 防下载 的视频网站 怎么做如何将自己做的网站上传
  • 浏阳做网站的有哪几家淘宝做网站的
  • 海外购物app排行榜前十名seo分析报告怎么写
  • 多与pR值高的网站做链接云服务器怎么建立网站
  • 怎样使用网站模板wordpress仪表盘美化
  • 郑州网站建设知名公司排名广州cms建站系统
  • 一个完整的网站设计需要的技术wordpress 订单管理
  • 网站制作与网站建设宁波市铁路建设指挥部网站
  • 赣州销售网站安庆建设银行网站
  • 建网站需要注意的问题关键词怎么优化
  • 网站静态代码检查 站长工具博物馆网站 微信 微博 建设方案
  • 怎么登录企业网站中关村手机在线官网
  • 承德网站制作与建设wordpress制作下拉菜单