本文作者:Miler Shao 某工程師利用STM8S芯片開發產品,想用定時器定時觸發ADC采樣。技術資料上也說是可以通過TIM1的TRGO觸發AD采樣,可發現根本不定時采樣。 他確認正確配置了TIM1并使其正常工作,定時溢出,同時在ADC相關寄存器里也做了外部觸發使能和觸發源[TIM1 TRGO]的選擇。 
按理說,到此應該可以正常定時AD采樣了,可往往好事多磨。結果并不是所期待的定時AD采樣。
后來發現問題出在TRGO事件這個地方,誤以為TIM1每次溢出就會產生所期待的TRGO事件。其實,事實并非如此。 
顯然,對于TIM1,TRGO的事件源有多個選項可以選擇,默認狀態時只有RESET事件才產生TRGO ,這分明不是當事人所期望的,應該配置為UPDATE 事件才合適。客戶工程師增加相關代碼后正常運作。 說實在的,對于操作寄存器的人來說,尤其頭次使用該功能的話的確容易出現類似上面的疏忽。當然,如果用STM32系列的MCU做同樣的事情,也有類似的配置問題,即除了使能外部觸發和選擇外部觸發事件TRGO外,還要記得對TRGO事件的進一步選擇配置,默認的可能并非你要的。 |