求助tim5->ccer &= 0<<5和tim5->ccer |= ~(1<<5)有什么区别

2019-07-21 01:01发布

大哥们,我在写电容输入捕获的时候,沿上升沿捕获,需要把TIM5->CCER的第五位写0。用tim5->ccer &= 0<<5这样子跑不出来,换成tim5->ccer |= ~(1<<5)是可以的,
void capa_init(u16 arr,u16 psc)

{
//浮空输入,用于输入捕获
RCC->APB1ENR |=1<<3;//使能tim5时钟
RCC->APB2ENR |= 1<<2;
TIM5->ARR = arr;
TIM5->PSC =psc;
TIM5->CCMR1 &= 0x00ff;
TIM5->CCMR1 |= 0x0100;
// TIM5->CCMR1|=1<<8;  //CC2S=01  选择输入端 IC2 映射到 TI2 上   
// TIM5->CCMR1|=0<<12;  //IC2F=0011 配置输入滤波器 8 个定时器时钟周期滤波   
// TIM5->CCMR1|=0<<10;  //IC2PS=00  配置输入分频,不分频

TIM5->CCER |= 1<<4;
TIM5->CCER &= ~(1<<5);
// TIM5->CCER |= 0<<5;

GPIOA->CRL &= 0xffffff0f;
GPIOA->CRL |= 0x00000040;
TIM5->CR1 |= 0x01;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。