使用STM32的TIMER進行外部計數

2021-10-12 05:48:10 字數 2578 閱讀 9607

使用etr引腳的輸入訊號作為計數時鐘,本例程使用timer 2,其etr輸入引腳為pa1,該引腳工作模式為輸

入模式,timer的工作模式為從模式;另外使用pc6輸出一模擬方波時鐘訊號。

測試時將pc6與pa1短接。(使用者也可另外連線乙個時鐘訊號到pa1引腳上。)

**見下:

int main(void)

unsigned char i_loop;

unsigned char n_counter;

#ifdef debug

debug();

#endif

rcc_configuration();       // system clocks configuration

nvic_configuration();       // nvic configuration

gpio_configuration();       // configure the gpio ports

tim_timebasestructure.tim_period = 0xffff;

tim_timebasestructure.tim_prescaler = 0x00;

tim_timebasestructure.tim_clockdivision = 0x0;

tim_timebasestructure.tim_countermode = tim_countermode_up;

tim_timebaseinit(tim2, &tim_timebasestructure);       // time base configuration

tim_etrclockmode2config(tim2, tim_exttrgpsc_off, tim_exttrgpolarity_noninverted, 0);

tim_setcounter(tim2, 0);

tim_cmd(tim2, enable);

for(i_loop = 0; i_loop < 100; i_loop ++) {

gpio_setbits(gpioc, gpio_pin_6);

delay(10);

gpio_resetbits(gpioc, gpio_pin_6);

delay(10);

n_counter = tim_getcounter(tim2);

while (1) {

前三行進行了時鐘、中斷、和i/o口的配置。然後進行timer的基本配置,計數器自動裝載值為0xffff,計

數頻率不分頻,定時器時鐘(ck_int)頻率與數字濾波器(etr,tix)使用的取樣頻率之間的分頻比為1,計數

器向上計數。

tim_etrclockmode2config(tim2, tim_exttrgpsc_off, tim_exttrgpolarity_noninverted, 0);

使用etr時鐘作為計數時鐘需要設定為外部時鐘模式2,故呼叫該函式,

在設定時

1、關閉預分頻:tim_exttrgpsc_off。可選項:

tim_exttrgpsc_off     0x0000

tim_exttrgpsc_div2    0x1000 

tim_exttrgpsc_div4    0x2000

tim_exttrgpsc_div8    0x3000

2、外部觸發極性etr不反相,高電平或上公升沿有效:tim_exttrgpolarity_noninverted。可選項:

tim_exttrgpolarity_inverted和tim_exttrgpolarity_noninverted。

3、外部觸發無濾波器:0000。

可選項:

0:無濾波器,以fdts取樣

1:取樣頻率fsampling=fck_int,n=2

2:取樣頻率fsampling=fck_int,n=4

3:取樣頻率fsampling=fck_int,n=8

4:取樣頻率fsampling=fdts/2,n=6

5:取樣頻率fsampling=fdts/2,n=8

6:取樣頻率fsampling=fdts/4,n=6

7:取樣頻率fsampling=fdts/4,n=8

8:取樣頻率fsampling=fdts/8,n=6

9:取樣頻率fsampling=fdts/8,n=8

10:取樣頻率fsampling=fdts/16,n=5

11:取樣頻率fsampling=fdts/16,n=6

12:取樣頻率fsampling=fdts/16,n=8

13:取樣頻率fsampling=fdts/32,n=5

14:取樣頻率fsampling=fdts/32,n=6

15:取樣頻率fsampling=fdts/32,n=8

tim_setcounter(tim2, 0);

初始化timer的計數器初始值為0;

tim_cmd(tim2, enable);

啟動timer2,模擬乙個方波時鐘訊號,輸出100個clock在pc6上。此時pa1接收到該波形,timer2開始計數,計數結果儲存在timer的計數暫存器(counter register)中。通過tim_getcounter(tim2)讀出

使用mbed進行STM32板子的開發

keil太難用!keil太難用!keil太難用!keil點亮乙個燈都超麻煩,什麼鬼東西。mbed可以網路程式設計,打破了mac和windows的壁壘!寫好,編譯,然後下下來,在拖到板子裡。就直接燒進去了!mbed有自己封裝好的庫,mbed.h 可以使用c 來寫 過載好爽啊!總之,arm的開發可以和a...

STM32使用小結

1 韌體庫函式組織規則 stm32韌體庫使用手冊的中文翻譯版 系統 源程式檔案和標頭檔案命名都以 stm32f10x 作為開頭,例如 stm32f10x conf.h。常量僅被應用於乙個檔案的,定義於該檔案中 被應用於多個檔案的,在對應標頭檔案中定義。所有常量都由英文本母大寫書寫。暫存器作為常量處理...

stm32之NVIC的使用

nvic nested vectored interrupt controller 巢狀向量中斷控制器 nvic主要用於對一些中斷的處理,在stm32中,中斷服務程式統一放在乙個 stm32f10x it.c檔案裡,這個檔案裡開始只放了一些系統異常的介面,如果我們要寫一些自己的普通的中斷函式,就要自...