tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1PE);
问题:为什么要重复再次强调一遍(uint16_t)
这句代码是在将值类型转换为 uint16_t 类型,重复强调一遍是为了强制进行类型转换,并且避免隐式类型转换导致结果不正确。因为运算符优先级问题,所以这样写可以避免意外的错误。
是强制类型转换,保证变量类型的作用操作符 ~ 通常是用于整型数据类型