如果您的代碼中不小心將SWD口對應的管腳功能設置為非SWD口,您需要:
● 用燒寫器(不是CDK中的flash操作)將芯片代碼擦除
● 換芯片
為了避免在調(diào)試期間出現(xiàn)這樣的誤操作,我們建議您在代碼啟動時,加入2~3s的delay,以保證在重新上電后,CDK有足夠的時間獲得芯片的控制。
某些芯片(如APT32F102x系列),支持多組SWD。芯片出廠時會選擇其中之一作為默認SWD口。如果實際應用時,這組默認的SWD口需要用作其他功能,此時就需要更改芯片POR時的SWD口。
更改的方式有兩種。
1、改寫IO控制寄存器(CONLR/CONHR),將目標管腳的功能設為SWDIO和SWDCLK。設置完成后,SWD即刻轉(zhuǎn)移到目標管腳上。
2、改寫USER OPTION的內(nèi)容,這種更改將會改變芯片上電時默認的SWD口。
下圖為APT32F102x系列的USER OPTION配置值和SWD重映射端口的關(guān)系圖:
USER OPTION的設置方式有三種:
APT當前芯片(APT32F101,APT32F172)的SWD口在POR時都會出現(xiàn)200us~150ms的高電平。
(APT32F102x系列、APT32S003是PA0.5和PA0.12)
這個高電平不是管腳的輸出,而是為了兼容測試模式,POR后持續(xù)了一段時間的上拉狀態(tài)。
如果這個狀態(tài)影響到了實際應用,可以參考的解決方案是加下拉電阻。
注:內(nèi)部上拉電阻在40Kohm左右,可以根據(jù)應用加適當?shù)南吕娮瑁ㄈ?Kohm)。
默認的驅(qū)動代碼中,
1. 所有中斷具有相同的優(yōu)先級(最高優(yōu)先級0)
2. 中斷嵌套功能是使能的
所以當一個系統(tǒng)開啟多個中斷之后,這些中斷之間可能會互相嵌套。這樣一來,一些對時序敏感的中斷執(zhí)行就會出現(xiàn)和預料結(jié)果不一樣的情況。比如一些通信模塊和touch同時開啟中斷,一旦通信模塊中斷處理時被touch的中斷嵌套,就可能導致通信失敗。
在這樣的應用場景下,需要調(diào)高關(guān)鍵模塊的中斷優(yōu)先級,或者調(diào)低次要模塊的中斷優(yōu)先級??梢酝ㄟ^修改NVIC中的IPR寄存器實現(xiàn)。具體代碼根據(jù)驅(qū)動版本不同,
● 可能在apt32fxxx_ck801.c中
● 也可能在core_801.h中
實現(xiàn)前提:CDK工程目錄包含工程用到的全部文件(*.c, *.h. *.s, *.ld, *.a, .etc,.),即不可以有CDK安裝目錄下的文件。
1、在linux上安裝編譯所需的工具套件
● 下載linux下的工具到安裝目錄。 https://occ.t-head.cn/community/download?id=3885366095506644992
參考ReleaseNotes.pdf,根據(jù)linux系統(tǒng)類型下載合適的elfabiv2, 如:64位機選擇 csky-elfabiv2-tools-x86_64-minilibc-20210423.tar
● 解壓:art -zxf tar.gz
● 將安裝目錄下的bin目錄加到環(huán)境變量PATH中,即完成工具套件的安裝。
2、確保在工程在windows CDK IDE中編譯一次。注意:CDK需要2.8.x版本及以上。
3、 刪除或屏蔽與__rt_entry相關(guān)的所有內(nèi)容。__rt_entry.o是一個CDK調(diào)試需要的一個文件,與工程的目標文件沒有關(guān)系。
- 修改apt32fxxx.mk文件,一般和xxx.cdkproj在同一個目錄下
- 修改apt32fxxx.txt文件,一般和xxx.cdkproj在同一個目錄下
4、屏蔽腳本文件(apt32fxxx.mk)中checksum相關(guān)內(nèi)容(如果有的話)。
5、將CDK工程完全copy到linux系統(tǒng)中。
6、在apt32fxxx.mk文件所在的目錄運行: make -f apt32xxx.mk
之后就可以通過修改mk文件的一些參數(shù),調(diào)整編譯和連接的選項了。