STM32 Time pwm 輸入檢測

2021-07-29 10:06:32 字數 1584 閱讀 8952

pwm輸入檢測是輸入捕獲的乙個特例,可以測量頻率與占空比

與輸入捕獲不同的是pwm輸入模式會將同乙個輸入訊號(ti1或ti2)連線到兩個捕獲裝置(ic1和ic2)。這兩個捕獲裝置乙個捕獲上公升沿乙個捕獲下降沿。ti1fp1、ti2fp2它們中的乙個被選擇為觸發輸入且從模式控制器被配置為復位模式。

注意:只有ti1fp1和ti2fp2連到了從模式控制器,所以pwm輸入模式只能使用timx_ch1 /timx_ch2訊號。

1

//timer4 ch2測週期,ch1測占空比,pb7引腳來輸入2//

這個捕捉的週期的範圍是1-65535us,如果需要測更高頻率的話更改裡面的兩種方式:3//

1,tim_timebasestructure.tim_prescaler =(72-1);更改分配係數調整精度4//

溢位計數也可以使用

5void tim4_ch2_ch1_pb7_pwminput_init(void)6

1

void tim4_irqhandler(void)2

910if(tim_getitstatus(tim4,tim_it_cc1)!=reset)

1115

16if(tim_getitstatus(tim4,tim_it_cc2)!=reset)

1722

23if(tim_getitstatus(tim4,tim_it_cc4)!=reset)

24

2728 }

注意,如果用ch2測量頻率,ch1測量占空比的話,只需要設定ch2,開啟cc2中斷即可,測量頻率的chx設定為上公升沿捕獲,

設定函式為: tim_pwmiconfig(tim4, &tim4_icinitstructure);

而不是tim_icinit(tim4, &tim4_icinitstructure);如果選擇這個函式初始化的話還需要設定ch1。

同樣如果是ch2測量頻率的話tim_ts_ti2fp2,tim_selectinputtrigger(tim4, tim_ts_ti2fp2);     //選擇有效輸入端

如果ch1測量頻率則為tim_ts_ti1fp1

下面是timer3 配置ch1頻率,ch2占空比

1

//timer3 ch1測週期,ch2測占空比,pa6引腳來輸入2//

這個捕捉的週期的範圍是1-65535us,如果需要測更高頻率的話更改裡面的兩種方式:3//

1,tim_timebasestructure.tim_prescaler =(72-1);更改分配係數調整精度4//

溢位計數也可以使用

5void tim3_ch1_ch2_pa6_pwminput_init(void)6

1

void tim3_irqhandler(void)2

910if(tim_getitstatus(tim3,tim_it_cc1)!=reset)

1115

16if(tim_getitstatus(tim3,tim_it_cc2)!=reset)

1721

2223 }

stm32 工業按鍵檢測 STM32按鍵的檢測

stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。以下是乙個比較典型的例子 利用按鍵控制led key.件 ifndef key h define key h include sys.h definekey0 gpio rea...

stm32 輸入捕獲

根據定時器的計數頻率,我們就可以算出t1 t2的時間,從而得到高電平脈寬 計算公式 n arr ccrx2首先設定定時器通道為上公升沿捕獲,這樣在t1時刻,就會捕獲到當前的cnt值,然後立即清零cnt,並設定定時器通道為下降沿捕獲,這樣到t2時刻,又會發生捕獲事件,得到此時的cnt值,記為ccrx2...

stm32按鍵輸入

對於上乙個實驗流水燈來說,這一次的實驗是獲取輸入的乙個小demo。在課堂上,看老師除錯的時候,只要有輸入則輸入暫存器idr的值就會改變,所以想要獲得輸入只需要迴圈去獲取idr的值即可。在stm32的庫中有乙個讀取輸入資訊的函式 uint8 t gpio readinputdatabit gpio t...