FAQ ================================ .. tip:: 请善用 **搜索功能** ,搜索快捷键 **Ctrl + F** 。 .. _project_patch_faq : KEIL 4 补丁包 和 KEIL5 补丁包 通用么? ---------------------------------------------------------------------------------------------------------- - 不通用,请安装KEIL 对应版本的对应补丁包。 KEIL 5 补丁包安装路径不对怎么办? ---------------------------------------------------------------------------------------------------------- - 电脑曾经安装过多个KEIL 5,没有正常删除,所以注册表有多个路径。请全部删除后,重新安装一个唯一版本。 Holtek e-Link32 Pro 需要再单独安装驱动么? ---------------------------------------------------------------------------------------------------------- - 开发环境安装时自带驱动,不需要另外安装驱动。 HT32 支持 J-Link J-FLASH 吗? ---------------------------------------------------------------------------------------------------------- - 支持,请安装 J-Link 补丁包, J-Link 补丁包在 :ref:`资料包 ` 的补丁文件夹中。 .. _project_create_faq : 为什么创建/移动工程后,部分文件出现黄色感叹号,编译提示 ``No such file or directory`` ? ---------------------------------------------------------------------------------------------------------- .. figure:: ../_static/image/FAQ/image010.png :width: 80% :align: center :alt: No such file or directory No such file or directory - 因为移动工程后,工程内对应文件的相对路径发现改变,会造成 ``include`` 的文件路径不对,产生此错误; - 请将工程放置在对应路径。 - 如需要更改新路径,需将原工程内文件全部删除后重新再添加,并在更改工程的 ``Include Path`` 内对应路径 。 .. figure:: ../_static/image/FAQ/image011.png :width: 80% :align: center :alt: Include Path Include Path 为什么在工程内添加文件后,编译提示 ``No such file or directory`` ? ---------------------------------------------------------------------------------------------------------- - 添加文件在工程的 ``Include Path`` 外,将添加文件的路径,添加到工程的 ``Include Path`` 内。 .. figure:: ../_static/image/FAQ/image011.png :width: 80% :align: center :alt: Include Path Include Path 如何更换固件库内创建工程的HT32型号? ---------------------------------------------------------------------------------------------------------- - 请参考 :ref:`工程创建失败处理 ` 。 - 因涉及固件库版本&工程更新,迁移方法变更,更建议使用 **HT32_CodeConfig** 重新生成工程,再进行代码移植。 .. _project_startup_faq : 使用 **KEIL 配置向导** 和 ``x.c`` 里面直接修改值有什么区别? ---------------------------------------------------------------------------------------------------------- - 没有差别, **KEIL 配置向导** 中修改的参数,其实也是修改 ``x.c`` 文档里面的参数。 配置 **启动文件** 或 **初始化文件** 后,为什么编译会出现 **#error** 提示? ---------------------------------------------------------------------------------------------------------- - 为了防止配置参数设置错误,会有编译器错误提醒用户配置错误,可以根据错误提示来排查错误的配置。 - 如图就是PLL的CK_VCO设置的参数不在范围内,按照范围设置参数即可。 .. figure:: ../_static/image/FAQ/image001.png :width: 80% :align: center :alt: **#error** 提示 **#error** 提示 为什么使用HT32 开发板 调试程序正常,但是相同程序下载到新做的PCBA上无法运行? ---------------------------------------------------------------------------------------------------------- - 进入仿真模式,对程序进行 debug ,如发现程序运行卡在 **初始化文件** 中此函数(如图),实际为等待 **HSE** 启动成功。 .. figure:: ../_static/image/FAQ/image002.png :width: 80% :align: center :alt: 等待 **HSE** 启动成功 等待 **HSE** 启动成功 - 使用官方范例工程,时钟配置默认使用 **HSE** ,如新做的PCBA没有设计晶振,就会卡在等待 **HSE** 启动的函数里面。 - 在 **初始化文件** 中,将 **时钟源** 从 **HSE** 切换到内部 **HSI** 即可。 .. figure:: ../_static/image/FAQ/image003.png :width: 80% :align: center :alt: 切换到内部 **HSI** 切换到内部 **HSI** - 进入仿真模式,对程序进行 debug ,如发现程序运行卡其他 **启动文件** 或 **初始化文件** ,请联系HOLTEK FAE 进行解决。 - 如可进入仿真模式可正常运行,但是直接运行无法运行,请检查 HT32 BOOT 引脚配置,上电瞬间 BOOT 应该为高电平,详细请参考 :ref:`HT32_BOOT ` 。 如何修改 HT32 范例工程 **HSE** 的外部晶振频率? ---------------------------------------------------------------------------------------------------------- - 可在 IDE 全局宏定义进行修改,如使用 KEIL5 将 **HSE** 参数修改为 16MHz, 则加入 ``,HSE_VALUE=16000000`` 。 .. figure:: ../_static/image/FAQ/image004.png :width: 80% :align: center :alt: **HSE** 修改频率(KEIL5) **HSE** 修改频率(KEIL5) 在程序中,如何得知现在HT32的主时钟频率(主频)是多少MHz? ---------------------------------------------------------------------------------------------------------- - 首先,应保证CKCU配置和实际硬件相匹配,如使用 **HSE** 则要保证 **HSE** 晶振频率和硬件对应,请参考上一条FAQ。 - 可在程序中使用 ``SystemCoreClock`` 变量,获得当前主时钟频率(主频),单位 ``Hz`` 。 .. figure:: ../_static/image/FAQ/image005.png :width: 80% :align: center :alt: **HSE** 修改参数(KEIL5) **HSE** 修改参数(KEIL5) 在进行Debug时,进入Debug模式就会提示断开SWD通讯? ---------------------------------------------------------------------------------------------------------- - 程序打开了 **WDT** 功能,进入 Debug 模式时,造成 **WDT** 溢出造成程序从头开始运行。Debug时关闭 **WDT** 功能即可。 - 程序运行时, **SWD** 调试接口复用为其他功能,造成 **SWD** 调试通讯失败。建议Debug时先屏蔽 **SWD** 复用功能 功能即可。 - 程序运行时,进入了 **深度睡眠(DeepSleep)/暂停模式(Stop)** ,造成 **SWD** 失能,调试通讯失败。建议Debug时先屏蔽 **Stop** 或 **DeepSleep** 模式功能即可。 在进行Debug时,设置断点或暂停时,程序会经常从头开始跑? ---------------------------------------------------------------------------------------------------------- - 因为打开了 **WDT** 功能,在 Debug 断点或暂停时, **WDT** 溢出造成程序从头开始运行。Debug时关闭 **WDT** 功能即可。 .. _project_debug_faq : 为什么在 KEIL 点击 **下载** 或 **调试** 时,会弹出窗口 ``Error:Flash Download failed Could not load file`` ? ----------------------------------------------------------------------------------------------------------------------------- - 错误提示 ``Could not load file`` ,原因是 KEIL 找不到下载的 **x.hex** 档案,请检查工程是否正常编译并生成了 **x.hex** 档案。 .. figure:: ../_static/image/FAQ/image030.png :width: 80% :align: center :alt: Error:Flash Download failed Could not load file Error:Flash Download failed Could not load file 为什么在 KEIL 点击 **下载** 或 **调试** 时,会弹出窗口 ``RDDI-DAP Error`` ? ---------------------------------------------------------------------------------------------------------- - 窗口提示 ``RDDI-DAP Error`` , 原因是 **Debugger调试器** 没有找到MCU的 **SWD** 调试接口,请检查以下原因: - MCU没有供电或没有运行,请检查MCU供电是否正常( **Debugger调试器** 默认不对外供电); - 请检查 HT32 以下硬件状态是否正常: - VDD/VDDIO/AVDD/VBAT/VLCD pin 电压应在正常工作电压之内。 - LDO pin 电压应为1.5V,且外接电容材质和规格符合规格。 - nRST pin 电平应为高电平(VDD)。 - BOOT pin 电平应为为高电平(VDD/VDDIO)。 - **Debugger调试器** 和 **MCU SWD** 调试接口接线错误或接触不良,请检查SWD接线,缩短连接线,并使用万用表测量是否导通。 - **MCU SWD** 调试接口失能,程序复用为 **GPIO** 或 进入了 **深度睡眠(DeepSleep)/暂停模式(Stop)** , :ref:`仿真时复位一次 ` 或 :ref:`全片擦除一次 ` 再进行调试。 - **Debugger调试器** 配置错误,如选择应 ``SW`` 调试接口,并降低调试接口速度到 ``500KHz``, 详细请参考 :ref:`IDE Debugger配置 ` - 如以上全部不行,请更换MCU再尝试,可能为MCU已经损坏或焊接短路问题。 .. figure:: ../_static/image/FAQ/image031.png :width: 80% :align: center :alt: RDDI-DAP Error RDDI-DAP Error 为什么在 KEIL 点击 **下载** 或 **调试** 时,会弹出窗口 ``Device could not be powered up`` ? ---------------------------------------------------------------------------------------------------------- - 同上一个问题解决方法。 .. figure:: ../_static/image/FAQ/image030.png :width: 80% :align: center :alt: Device could not be powered up Device could not be powered up 为什么在 KEIL 打开 **Debug** 时,发现没有检测到 **SW Device** ? ---------------------------------------------------------------------------------------------------------- - 同上一个问题解决方法。 .. figure:: ../_static/image/FAQ/image034.png :width: 80% :align: center :alt: SW Device failed SW Device failed 为什么在 KEIL 点击 **下载** 或 **调试** 时,会弹出窗口 ``Error:Flash Download failed -"Cortex-Mxx"`` ? -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 窗口提示 ``Error:Flash Download failed -"Cortex-Mxx"`` , 并再提示 ``No Algorithm found for`` - 原因为 KEIL5 ``Programming Algorithm`` 未配置,请参考 :ref:`Programming Algorithm配置 ` .. figure:: ../_static/image/FAQ/image033.png :width: 80% :align: center :alt: Flash Download failed Flash Download failed 为什么在 KEIL 点击 **下载** 或 **调试** 时,之前可以正常烧录并运行,但是现在再点击会提示错误? ---------------------------------------------------------------------------------------------------------- - HT32 FLASH 最后一页为 **Option区域** ,如HT32 FLASH操作 误写 **Option区域** 则会造成 HT32 FLASH 写保护,造成烧录错误,可通过 :ref:`全片擦除一次 ` 来解锁保护。 - 请检查程序中 FLASH 操作是否有误操作到 **Option区域** 。 - 请检查之前烧录时,是否有 **锁IC** 操作。 .. _example_iap_ap_faq : IAP_AP 工程中,如果 **IAP程序** 大小有变动,需要做哪些修改? ---------------------------------------------------------------------------------------------------------- - 需要修改固件关联的 ``linker.lin`` 文件,和 程序关联的 ``ht32_board_config.h`` 文件,改为现在 **IAP程序** 空间大小。 - 请参考 :doc:`../Software/example_iap_ap` 。 IAP_AP 工程中,如何确认程序大小有没有超出 MCU FLASH 大小? ---------------------------------------------------------------------------------------------------------- - **AP工程** 生成的 **IAP_AP.hex** 包含 **IAP&AP程序**,点击 **批编译**, **AP工程** 编译后的程序大小就是 **IAP&AP程序** 大小,如无报错,即是没有超出FLASH范围。 .. figure:: ../_static/image/FAQ/image020.png :width: 30% :align: center :alt: 批编译 批编译 .. figure:: ../_static/image/FAQ/image021.png :width: 80% :align: center :alt: 编译信息 编译信息 IAP_AP 工程中,如何在仿真中,查看 **AP区域** 的数据? ---------------------------------------------------------------------------------------------------------- - 可在仿真模式下,使用 **Memory** 窗口,查看MCU内部FLASH数据,找到0x0000_1000地址(工程默认AP程序开始地址),此数据和AP.bin数据应一致。 .. figure:: ../_static/image/FAQ/image022.png :width: 80% :align: center :alt: **Memory** 窗口 **AP区域** 数据 **Memory** 窗口 **AP区域** 数据 为什么编译工程后无法生成 **x.bin/x.hex** ? ---------------------------------------------------------------------------------------------------------- - 请检查工程编译是否有错,如果编译没有程序问题,请注意 **固件库** 文件路径不能有 **中文** 、 **空格** 和 **特殊符号** 如何查看程序使用的 ROM/RAM 情况? ------------------------------------------------------- - 需对程序先进行编译,且编译通过。 - 在编译生成的 **x.map** 文件,可以查到ROM/RAM使用情况。 - 如使用范例工程, **x.map** 文件地址 ``...\MDK_ARMv5\HT32\52352\List\HT32.map`` .. figure:: ../_static/image/FAQ/HT32_MAP.png :width: 80% :align: center :alt: ROM/RAM ROM/RAM 如何查看程序使用的 栈 ``Stack`` 情况? ------------------------------------------------------- - 需对程序先进行编译,且编译通过。 - 在编译生成的 **x.htm** 文件,可以查到 栈 ``Stack`` 使用情况。 - 如使用范例工程, **x.map** 文件地址 ``...\MDK_ARMv5\HT32\52352\Obj\HT32.html`` .. figure:: ../_static/image/FAQ/HT32_STACK.png :width: 80% :align: center :alt: Stack Stack .. warning:: 因中断函数发生不可知,无法完全计算出 栈 ``Stack`` 情况,建议以此基础增大 栈 ``Stack`` 空间大小。 HT32 **EMC** 性能差,如何优化? ------------------------------------------------------- - 请注意 HT32 最小系统Layout是否按照PCB Layout要求进行,详细参考 :ref:`PCB Layout ` 。 - HT32 **GPIO** 走线如有 **串接电阻** ,如无特殊要求,请靠近 **GPIO** 端,可增强抗干扰能力。 - HT32 未使用的 **GPIO** 处于 **浮空状态(Floating)**,导致抗干扰能力弱,请配置为 **固定电平** 状态,建议配置为 **输出低电平**。 - HT32 受干扰的 **GPIO** 可以配置输出能力,其默认为 **4mA 普通驱动能力**,可设置为 **16mA 强驱动能力**,增强抗干扰能力。 - 如以上方法均无法解决,请考虑 Holtek FAE 技术支持。 HT32 通讯接口(UART/SPI/I2C....)容易受到外部干扰,如何优化? ------------------------------------------------------------------------ - 软件:HT32 **GPIO** 可以配置输出能力,其默认为 **4mA 普通驱动能力**,可设置为 **16mA 强驱动能力**,增强抗干扰能力。 - 硬件:PCB Layout 时,应避免频率较高的信号走线互相平行,增加串扰。应尽量走线垂直,减少平行长度。 - 硬件:通讯接口 增加 **串联电阻** 减少高速信号的反射; 增加 **小电容去耦(e.g. 100pf)** 减少高频干扰; 增加 **上拉电阻** 增大回路电流。 - 如以上方法均无法解决,请考虑 Holtek FAE 技术支持。