怎样用寄存器方式对TIM进行编码器模式初始化,比如说TIM4,我写的有问题没?
void COUNT_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<2; //TIM4时钟使能
GPIOB->CRL&=0XF0FFFFFF;//PB6输入,TIM4—CH1
GPIOB->CRL|=0X04000000;//浮空输入
GPIOB->CRL&=0X0FFFFFFF;//PB7输入,TIM4—CH2
GPIOB->CRL|=0X40000000;//浮空输入
TIM4->ARR=arr;//设定计数器自动重装值(400脉冲)
TIM4-> SC=psc;//预分频器不分频
TIM4->SMCR|=3<<0; //编码器模式,SMS=011,T1,T2X4模式
TIM4->CCMR1|=1<<0; //IC1映射到TI1
TIM4->CCMR1|=1<<8; //IC2映射到TI2
TIM4->CCER|=0<<1; //IC1FP1未反转,IC1FP1=TI1
TIM4->CCER|=0<<5; //IC2FP2未反转,IC2FP2=TI2
// TIM4->DIER|=1<<0; //允许更新中断
TIM4->CR1=0x8000; //ARPE使能 ?
TIM4->CR1|=0x01; //使能定时器4
// MY_NVIC_Init(1,3,TIM4_IRQChannel,2);//抢占1,子优先级3,组2
}
还请问,设置好后,从哪读取脉冲数,圈数,如何计算速度的?
|