这个程序是做数字音量控制那种编码器用的,不是测速那种,不过只要懂了这个,测速那种也差不多了,自己调试了半天走了一点歪路,其实很简单,实际可用
#define TM1UPDATE_VECT 0x0D
#pragma vector = TM1UPDATE_VECT
__interrupt void TIM1_UPDATE_ISR( void )
{
TIM1->SR1 = 0; // clear overflow flag
if(TIM1->CR1 & 0x10)
{
f_direct = 0; //逆时针转
f_encoder_1;
}
else
{
f_direct = 1; //顺时针转
f_encoder_1;
}
}
void Encoder_Init_Configuration(void)
{
TIM1->SMCR |= 0X01; //工作在编码器模式1
TIM1->CCMR1 |= 0X1; //CC1 MAP TI1FP1 CH1
TIM1->CCMR2 |= 0X1; //CC2 MAP TI2FP2 CH2
TIM1->ARRH = 0X00; // 重载系数
TIM1->ARRL = 0X01;
TIM1->IER |=0X1; //开中断
TIM1->CR1 =0X1; //启动计数
}
|