新手上路
- 积分
- 28
- 金钱
- 28
- 注册时间
- 2017-12-21
- 在线时间
- 6 小时
|
1金钱
我用TIM3_ETR(PD2)左外部脉冲计数器,发现没有外部脉冲,自己计数,是我哪儿设置不对?
//////////////////////////////////////////////////////////////////////////
//TIM3 etr 对应PD2,左行走电机FG计数
//计数器初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_ETR_Counter_Config(u32 arr,u32 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //TIM3时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //使能PORTD时钟
// 配置PA5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100M时钟速度
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource2,GPIO_AF_TIM3);
// 配置定时器为外部脉冲计数模式
TIM_DeInit(TIM3); // 将TIM3寄存器重设为缺省值
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler = psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // Time base configuration
// 设置外部计数参数
TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 3); //不滤波,上升沿计数
TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);//计数模式
FG_LeftWingCounter_Set(0);
TIM_Cmd(TIM3, ENABLE); // 使能定时器
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|