STM32小問題-複用調試接口JTAG/SWD爲普通GPIO


這幾天做畢業設計,按鍵模塊用到了PA14和PA15這兩個IO口(由於IO是引出到拓展板上,所以剛開始並不知道PA14和PA15是被調試接口占用了)。設置好相應的寄存器後發現只有PA15正常按下能被拉低,而PA14用萬用表檢測始終處於低電平狀態。剛開始我以爲這個管腳壞了,就想着設置成輸出高電平試試,結果可想而知,查看手冊後發現在在復位後JTAG接口的PA14被設置爲下拉了,所以按鍵讀回來的永遠是低電平。
癥結所在
後來發現核心板上PA15引腳連接到了JTAG接口就想能不能通過複用把這幾個口解放出來,畢竟在正常應用中調試接口是不工作的,還不如利用起來(其實是我懶得再改板子PCB了),後來查看手冊發現真的可以複用起來。

手冊描述如下
STM32中文參考手冊

手冊給了我們提示,只要設置AFIO的MAPP寄存器中的SWJ_CFG[2:0]這兩位就能改變映射關係,所以只要能改變這個寄存器就OK啦。

具體的映射關係設置如下:
調試接口映射關係圖

複用重映射和調試I/O配置寄存器(AFIO_MAPR)

SWJ_CFG[2:0]的描述如下:
這裏寫圖片描述

只要設置這三位爲100,就能關閉調試接口,其所佔用的IO就變成普通的GPIO了,這就達到了我的目的。既然找到了方法,那解決的辦法就簡單了。

    //重映射JTAG/SWD接口爲普通GPIO
    RCC->APB2ENR|=1;
    AFIO->MAPR&=0xf8ffffff;
    AFIO->MAPR|=0x04000000;

很簡單,至於爲什麼AFIO->MAPR這麼設置,只要看懂手冊就行啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章