FAQ

小技巧

请善用 搜索功能 ,搜索快捷键 Ctrl + F

KEIL 4 补丁包 和 KEIL5 补丁包 通用么?

  • 不通用,请安装KEIL 对应版本的对应补丁包。

KEIL 5 补丁包安装路径不对怎么办?

  • 电脑曾经安装过多个KEIL 5,没有正常删除,所以注册表有多个路径。请全部删除后,重新安装一个唯一版本。

Holtek e-Link32 Pro 需要再单独安装驱动么?

  • 开发环境安装时自带驱动,不需要另外安装驱动。

为什么创建/移动工程后,部分文件出现黄色感叹号,编译提示 No such file or directory

No such file or directory

No such file or directory

  • 因为移动工程后,工程内对应文件的相对路径发现改变,会造成 include 的文件路径不对,产生此错误;

    • 请将工程放置在对应路径。

    • 如需要更改新路径,需将原工程内文件全部删除后重新再添加,并在更改工程的 Include Path 内对应路径 。

Include Path

Include Path

为什么在工程内添加文件后,编译提示 No such file or directory

  • 添加文件在工程的 Include Path 外,将添加文件的路径,添加到工程的 Include Path 内。

Include Path

Include Path

如何更换固件库内创建工程的HT32型号?

  • 请参考 工程创建失败处理

  • 因涉及固件库版本&工程更新,迁移方法变更,更建议使用 HT32_CodeConfig 重新生成工程,再进行代码移植。

使用 KEIL 配置向导x.c 里面直接修改值有什么区别?

  • 没有差别, KEIL 配置向导 中修改的参数,其实也是修改 x.c 文档里面的参数。

配置 启动文件初始化文件 后,为什么编译会出现 #error 提示?

  • 为了防止配置参数设置错误,会有编译器错误提醒用户配置错误,可以根据错误提示来排查错误的配置。

  • 如图就是PLL的CK_VCO设置的参数不在范围内,按照范围设置参数即可。

**#error** 提示

#error 提示

为什么使用HT32 开发板 调试程序正常,但是相同程序下载到新做的PCBA上无法运行?

  • 进入仿真模式,对程序进行 debug ,如发现程序运行卡在 初始化文件 中此函数(如图),实际为等待 HSE 启动成功。

等待 **HSE** 启动成功

等待 HSE 启动成功

  • 使用官方范例工程,时钟配置默认使用 HSE ,如新做的PCBA没有设计晶振,就会卡在等待 HSE 启动的函数里面。

  • 初始化文件 中,将 时钟源HSE 切换到内部 HSI 即可。

切换到内部 **HSI**

切换到内部 HSI

  • 进入仿真模式,对程序进行 debug ,如发现程序运行卡其他 启动文件初始化文件 ,请联系HOLTEK FAE 进行解决。

  • 如可进入仿真模式可正常运行,但是直接运行无法运行,请检查 HT32 BOOT 引脚配置,上电瞬间 BOOT 应该为高电平,详细请参考 HT32_BOOT

如何修改 HT32 范例工程 HSE 的外部晶振频率?

  • 可在 IDE 全局宏定义进行修改,如使用 KEIL5 将 HSE 参数修改为 16MHz, 则加入 ,HSE_VALUE=16000000

**HSE** 修改频率(KEIL5)

HSE 修改频率(KEIL5)

在程序中,如何得知现在HT32的主时钟频率(主频)是多少MHz?

  • 首先,应保证CKCU配置和实际硬件相匹配,如使用 HSE 则要保证 HSE 晶振频率和硬件对应,请参考上一条FAQ。

  • 可在程序中使用 SystemCoreClock 变量,获得当前主时钟频率(主频),单位 Hz

**HSE** 修改参数(KEIL5)

HSE 修改参数(KEIL5)

在进行Debug时,进入Debug模式就会提示断开SWD通讯?

  • 程序打开了 WDT 功能,进入 Debug 模式时,造成 WDT 溢出造成程序从头开始运行。Debug时关闭 WDT 功能即可。

  • 程序运行时, SWD 调试接口复用为其他功能,造成 SWD 调试通讯失败。建议Debug时先屏蔽 SWD 复用功能 功能即可。

  • 程序运行时,进入了 深度睡眠(DeepSleep)/暂停模式(Stop) ,造成 SWD 失能,调试通讯失败。建议Debug时先屏蔽 StopDeepSleep 模式功能即可。

在进行Debug时,设置断点或暂停时,程序会经常从头开始跑?

  • 因为打开了 WDT 功能,在 Debug 断点或暂停时, WDT 溢出造成程序从头开始运行。Debug时关闭 WDT 功能即可。

为什么在 KEIL 点击 下载调试 时,会弹出窗口 Error:Flash Download failed Could not load file ?

  • 错误提示 Could not load file ,原因是 KEIL 找不到下载的 x.hex 档案,请检查工程是否正常编译并生成了 x.hex 档案。

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)仿真时复位一次全片擦除一次 再进行调试。

    • Debugger调试器 配置错误,如选择应 SW 调试接口,并降低调试接口速度到 500KHz, 详细请参考 IDE Debugger配置

    • 如以上全部不行,请更换MCU再尝试,可能为MCU已经损坏或焊接短路问题。

RDDI-DAP Error

RDDI-DAP Error

为什么在 KEIL 点击 下载调试 时,会弹出窗口 Device could not be powered up

  • 同上一个问题解决方法。

Device could not be powered up

Device could not be powered up

为什么在 KEIL 打开 Debug 时,发现没有检测到 SW Device

  • 同上一个问题解决方法。

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 未配置,请参考 Programming Algorithm配置

Flash Download failed

Flash Download failed

为什么在 KEIL 点击 下载调试 时,之前可以正常烧录并运行,但是现在再点击会提示错误?

  • HT32 FLASH 最后一页为 Option区域 ,如HT32 FLASH操作 误写 Option区域 则会造成 HT32 FLASH 写保护,造成烧录错误,可通过 全片擦除一次 来解锁保护。

  • 请检查程序中 FLASH 操作是否有误操作到 Option区域

  • 请检查之前烧录时,是否有 锁IC 操作。

IAP_AP 工程中,如果 IAP程序 大小有变动,需要做哪些修改?

  • 需要修改固件关联的 linker.lin 文件,和 程序关联的 ht32_board_config.h 文件,改为现在 IAP程序 空间大小。

  • 请参考 范例说明 : IAP_AP

IAP_AP 工程中,如何确认程序大小有没有超出 MCU FLASH 大小?

  • AP工程 生成的 IAP_AP.hex 包含 IAP&AP程序,点击 批编译AP工程 编译后的程序大小就是 IAP&AP程序 大小,如无报错,即是没有超出FLASH范围。

批编译

批编译

编译信息

编译信息

IAP_AP 工程中,如何在仿真中,查看 AP区域 的数据?

  • 可在仿真模式下,使用 Memory 窗口,查看MCU内部FLASH数据,找到0x0000_1000地址(工程默认AP程序开始地址),此数据和AP.bin数据应一致。

**Memory** 窗口 **AP区域** 数据

Memory 窗口 AP区域 数据

为什么编译工程后无法生成 x.bin/x.hex ?

  • 请检查工程编译是否有错,如果编译没有程序问题,请注意 固件库 文件路径不能有 中文空格特殊符号

如何查看程序使用的 ROM/RAM 情况?

  • 需对程序先进行编译,且编译通过。

  • 在编译生成的 x.map 文件,可以查到ROM/RAM使用情况。

  • 如使用范例工程, x.map 文件地址 ...\MDK_ARMv5\HT32\52352\List\HT32.map

ROM/RAM

ROM/RAM

如何查看程序使用的 栈 Stack 情况?

  • 需对程序先进行编译,且编译通过。

  • 在编译生成的 x.htm 文件,可以查到 栈 Stack 使用情况。

  • 如使用范例工程, x.map 文件地址 ...\MDK_ARMv5\HT32\52352\Obj\HT32.html

Stack

Stack

警告

因中断函数发生不可知,无法完全计算出 栈 Stack 情况,建议以此基础增大 栈 Stack 空间大小。

HT32 EMC 性能差,如何优化?

  • 请注意 HT32 最小系统Layout是否按照PCB Layout要求进行,详细参考 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 技术支持。