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