想知道_MASK词根和和他&的意思,希望有厉害人详解或给个链接


void WWDG_SetWindowValue(uint8_t WindowValue)
{
  __IO uint32_t tmpreg = 0;
  /* Check the parameters */
  assert_param(IS_WWDG_WINDOW_VALUE(WindowValue));
  /* Clear W[6:0] bits */
  tmpreg = WWDG->CFR & CFR_W_MASK;
  /* Set W[6:0] bits according to WindowValue value */
  tmpreg |= WindowValue & (uint32_t) BIT_MASK;
  /* Store the new value */
  WWDG->CFR = tmpreg;
}

想知道_MASK词根和和他&的意思,希望有厉害人详解或给个链接

_MASK是一个后缀,通常用于定义位掩码。 在这种情况下,CFR_W_MASK和BIT_MASK变量是位掩码,用于清除或设置特定位。

&运算符是按位与运算符,它比较两个数的二进制表示并返回其中设置为1的位。 所以在代码中tmpreg &= CFR_W_MASK;这句话就是把tmpreg中CFR_W_MASK这些位清零了。

tmpreg |= WindowValue & (uint32_t) BIT_MASK;这句话就是将tmpreg和WindowValue & BIT_MASK这些位进行或运算。

更多关于位运算符的知识可以参考这个链接 https://www.cnblogs.com/xishanju/p/8972697.html