如果您的代碼中不小心將SWD口對應(yīng)的管腳功能設(shè)置為非SWD口,您需要:
● 用燒寫器(不是CDK中的flash操作)將芯片代碼擦除
● 換芯片
為了避免在調(diào)試期間出現(xiàn)這樣的誤操作,我們建議您在代碼啟動時,加入2~3s的delay,以保證在重新上電后,CDK有足夠的時間獲得芯片的控制。
某些芯片(如APT32F102x系列),支持多組SWD。芯片出廠時會選擇其中之一作為默認(rèn)SWD口。如果實際應(yīng)用時,這組默認(rèn)的SWD口需要用作其他功能,此時就需要更改芯片POR時的SWD口。
更改的方式有兩種。
1、改寫IO控制寄存器(CONLR/CONHR),將目標(biāo)管腳的功能設(shè)為SWDIO和SWDCLK。設(shè)置完成后,SWD即刻轉(zhuǎn)移到目標(biāo)管腳上。
2、改寫USER OPTION的內(nèi)容,這種更改將會改變芯片上電時默認(rèn)的SWD口。
下圖為APT32F102x系列的USER OPTION配置值和SWD重映射端口的關(guān)系圖:
USER OPTION的設(shè)置方式有三種:
APT當(dāng)前芯片(APT32F101,APT32F172)的SWD口在POR時都會出現(xiàn)200us~150ms的高電平。
(APT32F102x系列、APT32S003是PA0.5和PA0.12)
這個高電平不是管腳的輸出,而是為了兼容測試模式,POR后持續(xù)了一段時間的上拉狀態(tài)。
如果這個狀態(tài)影響到了實際應(yīng)用,可以參考的解決方案是加下拉電阻。
注:內(nèi)部上拉電阻在40Kohm左右,可以根據(jù)應(yīng)用加適當(dāng)?shù)南吕娮瑁ㄈ?Kohm)。
默認(rèn)的驅(qū)動代碼中,
1. 所有中斷具有相同的優(yōu)先級(最高優(yōu)先級0)
2. 中斷嵌套功能是使能的
所以當(dāng)一個系統(tǒng)開啟多個中斷之后,這些中斷之間可能會互相嵌套。這樣一來,一些對時序敏感的中斷執(zhí)行就會出現(xiàn)和預(yù)料結(jié)果不一樣的情況。比如一些通信模塊和touch同時開啟中斷,一旦通信模塊中斷處理時被touch的中斷嵌套,就可能導(dǎo)致通信失敗。
在這樣的應(yīng)用場景下,需要調(diào)高關(guān)鍵模塊的中斷優(yōu)先級,或者調(diào)低次要模塊的中斷優(yōu)先級??梢酝ㄟ^修改NVIC中的IPR寄存器實現(xiàn)。具體代碼根據(jù)驅(qū)動版本不同,
● 可能在apt32fxxx_ck801.c中
● 也可能在core_801.h中