STM32單個定時器四通道輸入捕獲

2021-09-02 15:24:08 字數 2642 閱讀 1149

//定時器2通道1輸入捕獲配置

//arr:自動重灌值

//psc:時鐘預分頻數

void tim2_cap_init(u16 arr,u16 psc)

//捕獲狀態

//[7]:0,沒有成功的捕獲;1,成功捕獲到一次.

//[6]:0,還沒捕獲到高電平;1,已經捕獲到高電平了.

//[5:0]:捕獲高電平後溢位的次數

u8 tim2ch1_capture_sta=0; //輸入捕獲狀態

u16 tim2ch1_capture_val; //輸入捕獲值

//定時器2中斷服務程式

void tim2_irqhandler(void)

else tim2ch1_capture_sta++;

} } if(tsr&0x02)//捕獲1發生捕獲事件

else //還未開始,第一次捕獲上公升沿

}

} tim2->sr=0;//清除中斷標誌位

}

int main(void)

}}

//定時器2通道1-4輸入捕獲配置

//arr:自動重灌值

//psc:時鐘預分頻數

void tim2_cap_init(u16 arr,u16 psc)

//捕獲狀態

//[7]:0,沒有成功的捕獲;1,成功捕獲到一次.

//[6]:0,還沒捕獲到高電平;1,已經捕獲到高電平了.

//[5:0]:捕獲高電平後溢位的次數

//ch1

u8 tim2ch1_capture_sta=0; //輸入捕獲狀態

u16 tim2ch1_capture_date2; //資料2

u16 tim2ch1_capture_date1; //資料1

//ch2

u8 tim2ch2_capture_sta=0; //輸入捕獲狀態

u16 tim2ch2_capture_date2; //資料2

u16 tim2ch2_capture_date1; //資料1

//ch3

u8 tim2ch3_capture_sta=0; //輸入捕獲狀態

u16 tim2ch3_capture_date2; //資料2

u16 tim2ch3_capture_date1; //資料1

//ch4

u8 tim2ch4_capture_sta=0; //輸入捕獲狀態

u16 tim2ch4_capture_date2; //資料2

u16 tim2ch4_capture_date1; //資料1

//定時器2中斷服務程式

void tim2_irqhandler(void)

else tim2ch1_capture_sta++;

} } if(tsr&0x02)//捕獲1發生捕獲事件

else //還未開始,第一次捕獲上公升沿

}

} //ch2中斷處理

if((tim2ch2_capture_sta&0x80)==0)//還未成功捕獲

else tim2ch2_capture_sta++;

} } if(tsr&0x04)//捕獲1發生捕獲事件

else //還未開始,第一次捕獲上公升沿

}

} //ch3中斷處理

if((tim2ch3_capture_sta&0x80)==0)//還未成功捕獲

else tim2ch3_capture_sta++;

} } if(tsr&0x08)//捕獲1發生捕獲事件

else //還未開始,第一次捕獲上公升沿

}

} //ch4中斷處理

if((tim2ch4_capture_sta&0x80)==0)//還未成功捕獲

else tim2ch4_capture_sta++;

} } if(tsr&0x10)//捕獲1發生捕獲事件

else //還未開始,第一次捕獲上公升沿

}

} tim2->sr=0;//清除中斷標誌位

}

int main(void)

if(tim2ch2_capture_sta&0x80) //成功捕獲到了一次高電平

if(tim2ch3_capture_sta&0x80) //成功捕獲到了一次高電平

if(tim2ch4_capture_sta&0x80) //成功捕獲到了一次高電平

printf("\r\n");

led=!led;

delay_ms(10);

} }

stm32單個定時器多通道輸入捕獲

這是用stm32的timer2的通道3和通道4同事捕獲 訊號,顯示高電平的時間,在keil4.7中編譯。tim icinittypedef tim2 icinitstructure 2 1 void tim2 cap init u16 arr,u16 psc 2 void tim2 irqhandl...

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...

stm32的定時器

stm32一共有8個都為16位的定時器。其中tim6 tim7是基本定時器 tim2 tim3 tim4 tim5是通用定時器 tim1和tim8是高階定時器。1.基本定時器 基本定時器tim6和tim7只具備最基本的定時功能,就是累加的時鐘脈衝數超過預定值時,能觸發中斷或觸發dma請求。由於在晶元...