如果您的(de)代碼中不小心將SWD口對(dui)應的(de)管腳(jiao)功能設置為非SWD口,您需要:
● 用(yong)燒(shao)寫器(不是CDK中的flash操作)將芯片代碼擦除
● 換(huan)芯片(pian)
為了避免在調試期間出現這樣的(de)誤操(cao)作,我們建(jian)議您(nin)在代碼啟動(dong)時,加入(ru)2~3s的(de)delay,以保證在重(zhong)新(xin)上電后,CDK有足夠的(de)時間獲得芯(xin)片的(de)控制。
某些芯片(如(ru)APT32F102x系列),支持多組SWD。芯片出(chu)廠時(shi)會(hui)選擇其中(zhong)之一作(zuo)為默(mo)認SWD口(kou)(kou)。如(ru)果實(shi)際應用(yong)時(shi),這(zhe)組默(mo)認的(de)SWD口(kou)(kou)需要用(yong)作(zuo)其他功能,此時(shi)就(jiu)需要更改芯片POR時(shi)的(de)SWD口(kou)(kou)。
更(geng)改的方式有(you)兩種。
1、改寫IO控制寄存器(qi)(CONLR/CONHR),將(jiang)目(mu)標(biao)管腳的功能設(she)為SWDIO和(he)SWDCLK。設(she)置(zhi)完成后,SWD即刻(ke)轉移到目(mu)標(biao)管腳上。
2、改(gai)寫USER OPTION的內(nei)容,這種更改(gai)將會(hui)改(gai)變芯片上電時默認的SWD口。
下(xia)圖為APT32F102x系列的USER OPTION配置值和(he)SWD重映(ying)射(she)端(duan)口的關(guan)系圖:
USER OPTION的設置(zhi)方式有(you)三種(zhong):
APT當(dang)前芯片(APT32F101,APT32F172)的(de)SWD口在POR時(shi)都(dou)會(hui)出現(xian)200us~150ms的(de)高(gao)電(dian)平。
(APT32F102x系列、APT32S003是PA0.5和PA0.12)
這個高電平不是管腳的輸出,而是為了(le)兼容測試模式(shi),POR后持續(xu)了(le)一段時間的上拉狀態。
如(ru)果這個狀(zhuang)態影(ying)響到了(le)實(shi)際(ji)應用,可以參考的解決(jue)方(fang)案是加(jia)下(xia)拉電阻。
注(zhu):內部上拉電阻(zu)在40Kohm左右,可以根據應用加適當的下拉電阻(zu)(如(ru)1Kohm)。
默認的驅動(dong)代碼(ma)中(zhong),
1. 所有中斷具有相同(tong)的優先(xian)級(最高優先(xian)級0)
2. 中斷嵌套(tao)功能是(shi)使能的
所(suo)以當(dang)一個系統開啟(qi)多(duo)個中(zhong)(zhong)斷(duan)之(zhi)后,這些(xie)(xie)(xie)中(zhong)(zhong)斷(duan)之(zhi)間可能會(hui)互相(xiang)嵌(qian)套(tao)。這樣(yang)一來,一些(xie)(xie)(xie)對(dui)時序敏感的(de)中(zhong)(zhong)斷(duan)執行(xing)就會(hui)出(chu)現和(he)預料(liao)結果(guo)不一樣(yang)的(de)情況(kuang)。比如一些(xie)(xie)(xie)通(tong)信(xin)(xin)模(mo)塊和(he)touch同時開啟(qi)中(zhong)(zhong)斷(duan),一旦通(tong)信(xin)(xin)模(mo)塊中(zhong)(zhong)斷(duan)處(chu)理時被(bei)touch的(de)中(zhong)(zhong)斷(duan)嵌(qian)套(tao),就可能導致通(tong)信(xin)(xin)失敗。
在這樣的(de)(de)應用場景下,需要(yao)(yao)調(diao)高關鍵模(mo)(mo)塊(kuai)的(de)(de)中(zhong)斷(duan)優(you)先級(ji),或者調(diao)低(di)次要(yao)(yao)模(mo)(mo)塊(kuai)的(de)(de)中(zhong)斷(duan)優(you)先級(ji)。可以(yi)通過修改NVIC中(zhong)的(de)(de)IPR寄存器實現(xian)。具體代碼(ma)根(gen)據驅動版(ban)本不同,
● 可能在apt32fxxx_ck801.c中
● 也(ye)可能在core_801.h中