是位操作还是字节操作?

2019-03-23 20:28发布

在看STM8L的库函数时有个地方不太理解,想请教一下。
void TIM4_ClearITPendingBit(TIM4_IT_TypeDef TIM4_IT)
{
    assert_param(IS_TIM4_IT(TIM4_IT));
    TIM4->SR1 = (uint8_t)(~(uint8_t)TIM4_IT);
}
typedef enum
{
    TIM4_IT_Update = ((uint8_t)0x01), /*!< Update Interrupt*/
    TIM4_IT_Trigger = ((uint8_t)0x40) /*!< Trigger  Interrupt*/
}TIM4_IT_TypeDef;

问题:
1.TIM4->SR1 = (uint8_t)(~(uint8_t)TIM4_IT);此句进行的是位操作吗?怎么理解?
2.TIM4_IT_Update= ((uint8_t)0x01), 此句是位定义吗?
3.按照我的理解清除标志位应该是TIM4->SR1 ^= (uint8_t)TIM4_IT;请问这样写有什么问题吗?
Thank you very much!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。