STM32 TIM測 輸入信號(hào)的 頻率
說 不進(jìn)中斷 等等基本功能沒實(shí)現(xiàn)ok的,查看:
STM32 外設(shè)配置關(guān)鍵步驟
務(wù)必仔細(xì)瞅瞅…
TIM輸入捕獲兩種模式:
1. PWM輸入模式
2. 輸入捕獲模式
調(diào)試記錄PWM輸入模式:
該模式的理解:
stm32的PWM輸入捕獲模式
僅適用于通道1、 2
從輸入捕獲中斷說起…
從TIM3 CH1輸入信號(hào),
..............if(TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)//{ic1=TIM_GetCapture1(TIM3)+1;//周期ic2=TIM_GetCapture2(TIM3)+1;//脈沖寬度floatpulse=ic2/(float)ic1;//占空比FAN_Frequency=(u32)1000000/ic1;//頻率}//TIM_SetCounter(TIM3,0);TIM_ClearFlag(TIM3,TIM_FLAG_CC1);TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);//清楚TIM的中斷待處理位..........123456789101112
注:
- 計(jì)數(shù)器從0計(jì)數(shù),需要+1處理;
- “FAN_Frequency = (u32)1000000 /ic1;” 的1000000,取自基時(shí)鐘72分頻以后的時(shí)鐘頻率,為1M。如:進(jìn)行配置,取72M;36分頻,取2M;
外設(shè)TIM3配置:
捕獲法
voidTIM3_Configuration(void){...RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);TIM_InternalClockConfig(TIM3);TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=72-1;TIM_TimeBaseStructure.TIM_Period=0xffff;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);TIM_ICInitTypeDefTIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;TIM_ICInitStructure.TIM_ICFilter=0x00;//TIM_ICInit(TIM3,&TIM_ICInitStructure);TIM_PWMIConfig(TIM3,&TIM_ICInitStructure);TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);.....}12345678910111213141516171819202122232425262728
注:
TIM_PWMIConfig(TIM3, &TIM_ICInitStructure); //TIM_ICInitStructure參數(shù)的配置函數(shù)
TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);
此四行代碼為 PWM輸入捕獲模式標(biāo)配;
關(guān)于TIM_ICInitStructure參數(shù)的配置函數(shù)還有:
TIM_ICInit(TIM3, &TIM_ICInitStructure);
區(qū)別就是是否設(shè)置另外一個(gè)通道的/* Select the Opposite Input Polarity/和/Select the Opposite Input */ 反向捕獲邊沿、另一個(gè)擇TIMx_CCRx的有效輸入。這里將TIMx_CCR2有效輸入選擇至TI1上。
只是測頻率的話,無傷大雅。
詳見:數(shù)據(jù)手冊(cè) + 固件庫源碼。
適用于全部通道。
TIM設(shè)置,代碼注釋貼上來都是亂碼,就直接截圖啦。
這里使用TIM_ICInit(TIM3, &TIM_ICInitStructure);進(jìn)行配置。
中斷代碼如下:
以上僅供參考,多退少補(bǔ)…