定時(shí)器-輸入捕獲
輸入捕獲工作過程
一句話總結(jié)工作過程:通過檢測(cè)TIMx_CHx上的邊沿信號(hào),在邊沿信號(hào)發(fā)生跳變(比如上升沿/下降沿)的時(shí)候,將當(dāng)前定時(shí)器的值(TIMx_CNT)存放到對(duì)應(yīng)的捕獲/比較寄存器(TIMxCCRx)里面,完成一次捕獲。
步驟1:設(shè)置輸入捕獲濾波器(通道1為例)
輸入捕獲1濾波器ICIF[3:0],這個(gè)用來設(shè)置輸入采樣頻率和數(shù)字濾波器長(zhǎng)度。其中, fck_INT是定時(shí)器的輸入頻率(TIMxCLK),一般為72Mhz,而 fDTS 則是根據(jù)TIMx_CR1的CKD[1:0]的設(shè)置來確定的,如果CKD[1:0]設(shè)置為00,那么fDTS=fck_INT。N值就是濾波長(zhǎng)度,舉個(gè)簡(jiǎn)單的例子:假設(shè)ICIF[3:0]=0011,并設(shè)置IC1映射到通道1上,且為上升沿觸發(fā),那么在捕獲到上升沿的時(shí)候,再以fck_INT的頻率,連續(xù)采樣到8次通道1的電平,如果都是高電平,則說明這是一個(gè)有效的觸發(fā),就會(huì)觸發(fā)輸入捕獲中斷(如果開啟了的話)。這樣可以濾除那些高電平脈寬低于8個(gè)采樣周期的脈沖信號(hào),從而達(dá)到濾波的效果。這里,我們不做濾波處理,所以設(shè)置ICIF[3:0]=0000,只要采集到上升沿,就觸發(fā)捕獲。
連續(xù)采集8次通道1的電平,起濾波的作用
步驟2:設(shè)置輸入捕獲極性(通道1為例)
步驟3:設(shè)置輸入捕獲映射通道(通道1為例)
一般情況下通道1映射到IC1,通道2映射到IC2
步驟四:設(shè)置輸入捕獲分頻器(通道1為例)
步驟五:捕獲到有效信號(hào)可以開啟中斷
輸入捕獲通道初始化函數(shù):
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
結(jié)構(gòu)體類型
typedef struct
{
uint16_t TIM_Channel; //捕獲通道1-4
uint16_t TIM_ICPolarity; //捕獲極性
uint16_t TIM_ICSelection; //映射關(guān)系
uint16_t TIM_ICPrescaler; //分頻系數(shù)
uint16_t TIM_ICFilter; //濾波器
} TIM_ICInitTypeDef;
初始化例子
TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTl;
TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM5_ICInitStructure.TIM_ICFilter = Ox00;
TIM_ICInit(TIM5,&TIM5_ICInitStructure);
通道極性設(shè)置獨(dú)立函數(shù):
void TIM_OCxPolarityConfig(TIM_TypeDef* TIMx,uint16_t TIM_OCPolarity
獲取通道捕獲值
uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);
輸入捕獲的一般配置步驟:
1、初始化定時(shí)器和通道對(duì)應(yīng)IO的時(shí)鐘。
2、初始化IO口,模式為輸入: GPIO Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PAO輸入
3、初始化定時(shí)器ARR, PSC
TIM_TimeBaselnit();
4、初始化輸入捕獲通道
TIM_ICInit();
5、如果要開啟捕獲中斷
TIM_ITConfig();
NVIC_Init();
6、使能定時(shí)器
TIM_Cmd();
7、編寫中斷服務(wù)函數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-608425.html
TIMx_IRQHandler();
實(shí)驗(yàn)?zāi)康模簻y(cè)量信號(hào)的脈沖寬度
文章來源地址http://www.zghlxwxcb.cn/news/detail-608425.html
到了這里,關(guān)于STM32定時(shí)器-輸入捕獲的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!