1. 程式人生 > >stm32如何實現PWM輸出及週期內ADC取樣

stm32如何實現PWM輸出及週期內ADC取樣

1.TIM1 通道一設定為PWM模式, 通道3設定為Timing模式,同時允許TIM_IT_Update和TIM_IT_CC3更新中斷;

2.stm32的ADC有三種方法:(取樣方法三 TIM8+ADC1+DMA2)

    A、使用定時器中斷每隔一定時間進行ADC轉換,這樣每次都必須讀ADC的資料暫存器,非常浪費時間!

    B、把ADC設定成連續轉換模式,同時對應的DMA通道開啟迴圈模式,這樣ADC就一直在進行資料採集然後通過DMA把資料搬運至記憶體。但是這樣做的話還得加一個定時中斷,用來定時讀取記憶體中的資料!

    C、使用ADC的定時器觸發ADC轉換的功能,然後使用DMA進行資料的搬運!這樣只要設定好定時器的觸發間隔,就能實現ADC定時取樣轉換的功能,然後可以在程式的死迴圈中一直檢測DMA轉換完成標誌,然後進行資料的讀取,或者使能DMA轉換完成中斷,這樣每次轉換完成就會產生中斷。

3. 工作流程為:當發生TIM_IT_Update中斷時使能TIM8,開始ADC取樣;當發生TIM_IT_CC3中斷時失能TIM8,停止ADC取樣。這樣就可以實現一個PWM波內取樣,可以用於PWM觸發發射訊號,ADC取樣回波訊號,還計算從發射到回波訊號的時間。流程圖如下。