产品概述

  • SWD口被改怎么办?

    如果您的代码中不小心将SWD口对应的管脚功能设置为非SWD口,您需要:

    ● 用烧写器(不是CDK中的flash操作)将芯片代码擦除

    ● 换芯片

    为了避免在调试期间出现这样的误操作,我们建议您在代码启动时,加入2~3s的delay,以保证在重新上电后,CDK有足够的时间获得芯片的控制。

  • 如何改SWD口?

    某些芯片(如APT32F102x系列),支持多组SWD。芯片出厂时会选择其中之一作为默认SWD口。如果实际应用时,这组默认的SWD口需要用作其他功能,此时就需要更改芯片POR时的SWD口。


    更改的方式有两种。

    1、改写IO控制寄存器(CONLR/CONHR),将目标管脚的功能设为SWDIO和SWDCLK。设置完成后,SWD即刻转移到目标管脚上。

    2、改写USER OPTION的内容,这种更改将会改变芯片上电时默认的SWD口。


    下图为APT32F102x系列的USER OPTION配置值和SWD重映射端口的关系图:

    USER OPTION的设置方式有三种:

  • SWD上拉毛刺

    APT当前芯片(APT32F101,APT32F172)的SWD口在POR时都会出现200us~150ms的高电平。

    (APT32F102x系列、APT32S003是PA0.5和PA0.12)


    这个高电平不是管脚的输出,而是为了兼容测试模式,POR后持续了一段时间的上拉状态。

    如果这个状态影响到了实际应用,可以参考的解决方案是加下拉电阻。


    注:内部上拉电阻在40Kohm左右,可以根据应用加适当的下拉电阻(如1Kohm)。

  • 如何调整中断优先级?

    默认的驱动代码中,

    1. 所有中断具有相同的优先级(最高优先级0)

    2. 中断嵌套功能是使能的

    所以当一个系统开启多个中断之后,这些中断之间可能会互相嵌套。这样一来,一些对时序敏感的中断执行就会出现和预料结果不一样的情况。比如一些通信模块和touch同时开启中断,一旦通信模块中断处理时被touch的中断嵌套,就可能导致通信失败。


    在这样的应用场景下,需要调高关键模块的中断优先级,或者调低次要模块的中断优先级。可以通过修改NVIC中的IPR寄存器实现。具体代码根据驱动版本不同,


    ● 可能在apt32fxxx_ck801.c中

    ● 也可能在core_801.h中

  • 如何在linux下编译windows CDK生成的工程?

    实现前提:CDK工程目录包含工程用到的全部文件(*.c, *.h. *.s, *.ld, *.a, .etc,.),即不可以有CDK安装目录下的文件。


    1、在linux上安装编译所需的工具套件

    ● 下载linux下的工具到安装目录。 https://occ.t-head.cn/community/download?id=3885366095506644992

    参考ReleaseNotes.pdf,根据linux系统类型下载合适的elfabiv2, 如:64位机选择 csky-elfabiv2-tools-x86_64-minilibc-20210423.tar


    ● 解压:art -zxf tar.gz

    ● 将安装目录下的bin目录加到环境变量PATH中,即完成工具套件的安装。

    2、确保在工程在windows CDK IDE中编译一次。注意:CDK需要2.8.x版本及以上。

    3、 删除或屏蔽与__rt_entry相关的所有内容。__rt_entry.o是一个CDK调试需要的一个文件,与工程的目标文件没有关系。

    - 修改apt32fxxx.mk文件,一般和xxx.cdkproj在同一个目录下

    - 修改apt32fxxx.txt文件,一般和xxx.cdkproj在同一个目录下

    4、屏蔽脚本文件(apt32fxxx.mk)中checksum相关内容(如果有的话)。

    5、将CDK工程完全copy到linux系统中。

    6、在apt32fxxx.mk文件所在的目录运行: make -f apt32xxx.mk



    之后就可以通过修改mk文件的一些参数,调整编译和连接的选项了。