小螞蟻 STM32埠重對映 驅動蜂鳴器

2021-08-03 05:57:13 字數 848 閱讀 4259

最近,在做一塊繼電器控制的板子(stm32f103),通過採集資料,資料分析,做出判斷,控制繼電器開/閉狀態,遇到乙個很簡單確經常容易忽略的問題;蜂鳴器驅動io電壓始終在1v左右,導致9013s無法導通,無法形成迴路,蜂鳴器沒工作,原理如下:

最開始,一直沒考慮程式的問題,擔心偏置電阻有問題,也排除過是三極體損壞,,反覆焊接測試,均會出現無法導通,最後,改用pmos來驅動,但是依然無效;當時很疑惑,微控制器io控制肯定沒問題,初始化完全ok,但是最後在反覆審視電路圖的時候發現,io使用的pa15,截圖如下:

好吧,原來預設是jtag功能,換句話說它不是一般的io,需要做重新對映!

問題確認了,開始改:

涉及函式如下:

rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);   //開啟時鐘

gpio_pinremapconfig(gpio_remap_swj_disable,enable);  // 注意!詞語局會導致無法燒寫,禁用了jtag swd;如果仍想繼續燒寫,需要將boot0拉高,boot1拉低,此時,可以燒寫做更改;

gpio_pinremapconfig(gpio_remap_swj_jtagdisable,enable);  //最終鎖定使用次函式來實現普通io功能,第一jtag不常用,禁用了不影響,並且保留了swd燒寫模式,因此,作為最佳初始化pa15的途徑;

最後,感慨一下,做了很多年硬體,當你有一天突然發現乙個蜂鳴器居然不想了,真的是會開始質疑自己的設計,質疑自己的一切認知,有種重新再去看電路分析的衝動!

設計為場景而生,無所謂高階低端!

STM32埠復用 埠重對映

埠復用功能 stm32有很多的內部外設,這些外設的外部引腳都是與gpio復用的。也就是說,乙個gpio如果可以復用為內部外設的功能引腳,那麼當這個gpio作為內部外設使用的時候,就叫做復用。譬如,mcu都有串列埠,stm32有好幾個串列埠。比如說stm32f103zet6有5個串列埠,我們可以查手冊...

STM32 埠重對映基礎知識

一 埠重對映 二 引腳重對映配置過程 串列埠1為例 使能gpio時鐘 重對映後的io 使能功能外設時鐘 例如串列埠io 使能afio時鐘。重對映必須使能afio時鐘 rcc apb2periphclockcmd rcc apb2periph afio,enable 開啟重對映 gpio pinrem...

STM32埠復用和重對映

stm32的引腳可設定為可設定為 普通io功能 復用功能 重對映功能。不過普通io功能 復用功能用得比較多。復用 在tsm32裡面,大部分的引腳都是有gpio復用功能,也就是說,乙個 gpio如果可以復用為內建外設的功能引腳,那麼當這個 gpio 作為內建外設使用的時候,就叫做復用。例如圖下方框 串...