STM32在不支援5V輸入IO口輸入5V電平帶來的奇怪現象

hizrd發表於2024-05-23

  今天在使用stm32微控制器的時候,發現了一個奇怪的現象,偵錯程式經常識別不到微控制器,給微控制器重新上電後有時就正常,但重新下載又無法識別。剛開始以為是偵錯程式壞了,於是更換了偵錯程式,但沒有換偵錯程式的杜邦線,還是相同的問題,因此把偵錯程式故障排除了。然後又嘗試了降低SW頻率、更換除錯線,問題還是依舊。
  最後把懷疑物件轉移到了微控制器上。我把偵錯程式接到另外一個微控制器核心板上,多次除錯都能正常識別。於是便認為是微控制器的問題。然後更換了一個核心板,把原來的線路都連線到了新的核心板上。又進行了幾次除錯之後,發現原來的問題又出現了。這時,我便無法理解這奇怪的現象了。
  我又想到,微控制器除了無法被偵錯程式識別還有另一個奇怪的現象,就是有一個定時器會自己停止,在除錯時檢視定時器使能暫存器是使能的,但時定時器並沒有計數。根據這些現象,我感覺微控制器似乎是被什麼東西給干擾了。這時,我想到了我給微控制器定時器輸入的一個輸入捕獲是5V的電平,這個訊號是過零比較器的輸出訊號,一個頻率1K的訊號。雖然這個引腳是不支援5V電平輸入的,但是因為之前了在單片非5V忍受的引腳輸入過5V的訊號,當時並沒有遇到問題,所以我也就沒有對這個訊號處理就直接輸入給微控制器了,然後我把這個IO上串連了一個5.1K電阻再接入原來的訊號,所有的故障都消失了。
  這次經歷讓我意識到,一些看似沒多大問題的不規範做法可能會給我們帶來一些隱患。在這裡我使用透過電阻給IO輸入5V訊號,雖然解決了問題,但這樣的操作也是不可取的,是我為了偷懶的做法。還有,意外停止的定時器並不是輸入捕獲5V訊號的那一個定時器,這種找不到規律的現象也說明可能是遇到了干擾。
  對這個問題簡單的記錄一下,希望可以對大家提供一些幫助。

相關文章