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