新手入门
- 积分
- 14
- 金钱
- 14
- 注册时间
- 2019-10-21
- 在线时间
- 2 小时
|
楼主想用定时器2作为“接口定时器”来连接霍尔传感器,接收霍尔信号,PA15,PB3,PB10作为霍尔传感器的接口,然后用另一个定时器每隔40ms中断,采集一次定时器2接收的霍尔信号的数量。但是可能定时器2的初始化有问题,一直接收不到霍尔传感器发来的信号,有没有哪位大神帮忙看下代码哪里出错了
void Encoder_Init_TIM2(void)
{ RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR|=1<<8;
AFIO->MAPR|=1<<9; //11完全重映射
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;//浮空输入
GPIOB->CRH&=0XFFFFF0FF;//PB10
GPIOB->CRH|=0X00000400;//浮空输入
TIM2->DIER|=1<<0; //允许更新中断
TIM2->DIER|=1<<6; //允许触发中断
MY_NVIC_Init(0,3,TIM2_IRQn,2);
TIM2->PSC = 0X0;//预分频器
TIM2->ARR = 0XFFFE;//设定计数器自动重装值
TIM2->CR1 &=~(3<<8);// 选择时钟分频,不分频
TIM2->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
TIM2->CR2 |=1<<7; //TIMx_CH1、TIMx_CH2、TIMx_CH3引脚经异或后连到TI1输入
TIM2->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM2->CCMR1|=7<<12; //通道 2为PWM2模式并为具有要求的延时
TIM2->CR2&=5<<4;//选择OCR2作为TRGO上的触发输出
TIM2->CR1 |= 0x01; //CEN=1,使能定时器
}
|
|