STM32 埠初始化引發的思考

2021-08-18 03:24:14 字數 656 閱讀 7324

哎,歲月不等人,奈何人生有限,學習無涯。好了,話不多說,直入今天的主題。

問題描述:

在做乙個bcm專案時發現乙個問題,那就是在上電的瞬間,發現燈關有閃爍的情況,從現象來看,應該就是bcm控制器在初始化的過程中埠的預設值,導致了外部燈光的閃爍。

問題解決:

首先宣告下,我是一名硬體工程師,但是在大多數人說解決不了這個問題的時候,我打算試一下。怎麼試,當然是寫幾條**驗證了,硬體工程師會寫**?對,我的近期目標就是成為乙個會寫硬體驅動程式的軟硬體工程師,哈哈哈哈。

一般來說我們配置乙個io口為輸出的順序為(以stm32 為例)

1:開啟埠時鐘。

2:配置埠的方向為輸出、輸出的模式、輸出的速率為50m(假定)。

3:寫odr的值

以上為一般的io口輸出的配置方式,但是我們忽略了乙個問題,那就是埠暫存器是有預設值的。如上的配置方式會導致在2之後,埠就會輸出乙個低電平。如果外圍的電路正好是低電平有效,那麼此時就一定會出現乙個閃爍的情況。為了避免這樣的問題,我們必須改變埠配置的順序。注意先配置時鐘這是必須的,因為只有在時鐘開啟的情況下,才允許對時鐘下面的暫存器進行讀寫操作。那麼就只有更改2,3的順序了。實驗證明更改了2,3的順序此問題的確得到解決。

由此:在暫存器的配置中,暫存器的預設值也是很重要的,需要特別的留意,不然就會出現某些問題。

stm32埠初始化

今天上課,點亮數碼管,gpio初始化後,數碼管上有一段亂碼。要讓這亂碼消失掉,需要改變gpio初始化的順序。在gpio埠使能後,要加odr 埠暫存器 控制 gpio inittypedef gpio initstructure 定義乙個結構體 rcc apb2periphclockcmd rcc a...

STM32初始化SD卡流程

1,初始化sdio外設,關閉sdio時鐘。2,上電,開啟時鐘,注意此時時鐘應不能超過400khz,且此時是只有一位資料線,要到初始化完成後再調時鐘與資料線寬度。3,延時最低74個時鐘週期。使時鐘與sd卡穩定,否則會出錯。4,傳送cmd0,需要返回0x01,進入idle狀態 5,為了區別sd卡是2.0...

stm32的初始化注意事項

這是乙個卑微電子資訊學員的開始 寒假開始了,卑微電子資訊學員開始了stm32的學習過程。一.通過stm32的引腳測量正波長和占空比的初始化操作 1.以時鐘1為輸出 以時鐘2為輸入 一.通過stm32的引腳測量正波長和占空比的函式 1.hal tim readcapturedvalue htim2,t...