stm32库函数谁能分析下语句?

2019-08-18 19:06发布

USART_ClearITPendingBit(USART1,USART_IT_RXNE);   
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT)
{
  uint16_t bitpos = 0x00, itmask = 0x00;
  if (USART_IT == USART_IT_CTS)
  {
    assert_param(IS_USART_123_PERIPH(USARTx));
  }   
  bitpos = USART_IT >> 0x08;
  itmask = ((uint16_t)0x01 << (uint16_t)bitpos);
  USARTx->SR = (uint16_t)~itmask;
}
意思应该是把RXNE位清零,具体是怎么执行的呢?
#define USART1              ((USART_TypeDef *) USART1_BASE)
#define USART_IT_RXNE                        ((uint16_t)0x0525)

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
12778298
2019-08-18 19:34
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG) {   /* Check the parameters */   assert_param(IS_USART_ALL_PERIPH(USARTx));   assert_param(IS_USART_CLEAR_FLAG(USART_FLAG));   /* The CTS flag is not available for UART4 and UART5 */   if ((USART_FLAG & USART_FLAG_CTS) == USART_FLAG_CTS)   {     assert_param(IS_USART_123_PERIPH(USARTx));   }        USARTx->SR = (uint16_t)~USART_FLAG; }

一周热门 更多>