初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2019-12-12
- 在线时间
- 9 小时
|
1金钱
大佬们这段代码是和编码器有关的函数,其中设置了两个中断,更新中断和触发中断,请问触发中断是有什么用呢
感谢解答
- AFIO->MAPR|=1<<8; //01部分重映射
- RCC->APB1ENR|=1<<0; //TIM2时钟使能
- RCC->APB2ENR|=1<<2; //使能PORTA时钟
- RCC->APB2ENR|=1<<3; //使能PORTB时钟
- GPIOA->CRH&=0X0FFFFFFF;//PA15
- GPIOA->CRH|=0X40000000;//浮空输入
-
- GPIOB->CRL&=0XFFFF0FFF;//PB3
- GPIOB->CRL|=0X00004000;//浮空输入
- <font color="red"> TIM2->DIER|=1<<0; //允许更新中断
- TIM2->DIER|=1<<6; //允许触发中断</font>
- MY_NVIC_Init(1,3,TIM2_IRQn,1);//抢占优先级1,子优先级3;分组1
- TIM2->PSC = 0x0;//预分频器
- TIM2->ARR = ENCODER_TIM_PERIOD;//设定计数器自动重装值65535
- TIM2->CR1 &=~(3<<8);// 选择时钟分频:不分频
- TIM2->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
-
- TIM2->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
- TIM2->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
- TIM2->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
- TIM2->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
- // TIM2->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
- TIM2->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
- TIM2->CR1 |= 0x01; //CEN=1,使能定时器
复制代码
|
|