使用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檔案裡,這個檔案裡開始只放了一些系統異常的介面,如果我們要寫一些自己的普通的中斷函式,就要自...