新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2019-9-20
- 在线时间
- 2 小时
|
1金钱
我用以下代码开启TIM2_ETR的外部计数功能,结果通过正点原子的探索者F407开放板的WK_UP按键送入高电平脉冲,结果从主程序中读 num=TIM_GetCounter(TIM2);
指令,num一直为零,求助原子哥!为啥外部中断模式2的无触发脉冲计数??
void TIM2_Int_Init(u32 arr,u16 psc)
{
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_ICInitTypeDef TIM_ICInitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //PA5~7òy½Å
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //êäèë
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN; //éÏà-êäèë
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure); //3õê¼»ˉGPIOA
GPIO_PinAFConfig(GPIOA, GPIO_Pin_0,GPIO_AF_TIM2);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); ///ê1ÄüTIM3ê±Öó
TIM_DeInit(TIM2);
TIM_TimeBaseInitStructure.TIM_Period = arr; //×Ô¶ˉÖØ×°ÔØÖμ
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //¶¨ê±Æ÷·ÖÆμ
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //ÏòéϼÆêyÄ£ê½
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; //2»·ÖÆμ
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//3õê¼»ˉTIM2
//TIM_SelectInputTrigger(TIM2, TIM_TS_ETRF);
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //ÔêDí¶¨ê±Æ÷3¸üDÂÖD
NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //¶¨ê±Æ÷3ÖD¶Ï
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //ÇàÕ¼óÅÏè¼¶1
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x00; //×óóÅÏè¼¶3
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,
TIM_ExtTRGPolarity_Inverted,0);
TIM_CounterModeConfig(TIM2,TIM_CounterMode_Up);
TIM_SetCounter(TIM2, 0);
TIM_Cmd(TIM2,ENABLE); //ê1Äü¶¨ê±Æ÷3
}
|
|