STM32時鐘配置、GPIO配置
阿新 • • 發佈:2019-01-30
2017年11月13日 13:37 天氣:多雲,反正是看不到黨的光輝。。。。
今天在配置STM32的時鐘和GPIO時,發現了一個現象:GPIO埠的時鐘使能訊號必須在GPIO的配置之前,否則GPIO就無法正確的輸出訊號。
發現這個現象的過程也是無心之舉,我原本是把開啟GPIO埠的時鐘語句放在了時鐘配置函式當中,因為那個暫存器就是在時鐘暫存器那一章節。然而我發現GPIO所對應的LED根本就不能按照程式正確的輸出,要麼全部是高,要麼全部是低電平。
經過對比示例程式我發現我的程式在邏輯上是沒有任何的問題的,只是有些配置的語句可能先後順序有點不一樣,但是不影響。最後就定位到了那個RCC_APB2ENR暫存器,這個暫存器中可以配置GPIO埠的時鐘使能訊號,我發現配置RCC_APB2ENR暫存器的語句放在不同的位置時,程式最後的表現結果不一樣,左後就得出了上面的結論。然後,我把原本正常的示例程式按照上面的結論修改配置RCC_APB2ENR暫存器在程式中的位置,發現確實是這樣子的,由於資料手冊沒有看的很仔細,只是按照我以前的開發經驗在進行配置,所以不知道資料手冊當中有沒有後指出。
不管資料手冊當中有指出來,並且如果真的是與那個配置語句的位置有關,都讓我覺得這個設計真的很奇葩。