樓主,請問TIM2的配置不一樣嗎?我這么配置 讀取的數據一直為0呢
void TIM2_Int_Init(void) //配置 TIM2_CH1_ETR 為外部脈沖計數
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); //使能GPIOA,使能AFIO時鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //使能定時器2
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE); //默認 TIM2_ETR 端口為 PA0, 不需要映射
//配置TIMER2作為計數器
TIM_DeInit(TIM2); //缺省模式
//初始化定時器2 TIM2
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //設定計數器自動重裝值
TIM_TimeBaseStructure.TIM_Prescaler =0; //預分頻器
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
//TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //允許定時器2更新中斷
TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); //外部時鐘輸入2,上升沿觸發,無濾波
TIM_SetCounter(TIM2,0); //清楚計數器
TIM_Cmd(TIM2,ENABLE); //使能定時器
} |