问题:为什么要重复再次强调一遍(uint16_t)

tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1PE);

问题:为什么要重复再次强调一遍(uint16_t)

这句代码是在将值类型转换为 uint16_t 类型,重复强调一遍是为了强制进行类型转换,并且避免隐式类型转换导致结果不正确。因为运算符优先级问题,所以这样写可以避免意外的错误。

是强制类型转换,保证变量类型的作用
操作符 ~ 通常是用于整型数据类型

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^