浏览代码

[ht32][drv]新增了CAN、USB和SDIO的驱动文件

QTbin 3 月之前
父节点
当前提交
3436aa64cb
共有 100 个文件被更改,包括 13609 次插入2112 次删除
  1. 1 0
      .github/workflows/bsp_buildings.yml
  2. 217 43
      bsp/ht32/ht32f12366/.config
  3. 2 2
      bsp/ht32/ht32f12366/README.md
  4. 3 0
      bsp/ht32/ht32f12366/SConstruct
  5. 121 2
      bsp/ht32/ht32f12366/applications/test.c
  6. 136 1
      bsp/ht32/ht32f12366/board/Kconfig
  7. 4 0
      bsp/ht32/ht32f12366/board/inc/board.h
  8. 60 5
      bsp/ht32/ht32f12366/board/inc/ht32_msp.h
  9. 26 26
      bsp/ht32/ht32f12366/board/inc/ht32f1xxxx_01_usbdconf.h
  10. 43 5
      bsp/ht32/ht32f12366/board/src/ht32_msp.c
  11. 246 262
      bsp/ht32/ht32f12366/project.uvoptx
  12. 111 416
      bsp/ht32/ht32f12366/project.uvprojx
  13. 130 17
      bsp/ht32/ht32f12366/rtconfig.h
  14. 1 1
      bsp/ht32/ht32f12366/template.uvoptx
  15. 3 3
      bsp/ht32/ht32f12366/template.uvprojx
  16. 216 42
      bsp/ht32/ht32f52352/.config
  17. 2 2
      bsp/ht32/ht32f52352/README.md
  18. 3 0
      bsp/ht32/ht32f52352/SConstruct
  19. 95 7
      bsp/ht32/ht32f52352/applications/test.c
  20. 134 0
      bsp/ht32/ht32f52352/board/Kconfig
  21. 26 26
      bsp/ht32/ht32f52352/board/inc/ht32f5xxxx_01_usbdconf.h
  22. 214 218
      bsp/ht32/ht32f52352/project.uvoptx
  23. 103 403
      bsp/ht32/ht32f52352/project.uvprojx
  24. 131 15
      bsp/ht32/ht32f52352/rtconfig.h
  25. 3 3
      bsp/ht32/ht32f52352/template.uvprojx
  26. 18 0
      bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml
  27. 1326 0
      bsp/ht32/ht32f53252/.config
  28. 12 0
      bsp/ht32/ht32f53252/Kconfig
  29. 108 0
      bsp/ht32/ht32f53252/README.md
  30. 15 0
      bsp/ht32/ht32f53252/SConscript
  31. 63 0
      bsp/ht32/ht32f53252/SConstruct
  32. 26 0
      bsp/ht32/ht32f53252/applications/SConscript
  33. 37 0
      bsp/ht32/ht32f53252/applications/main.c
  34. 941 0
      bsp/ht32/ht32f53252/applications/test.c
  35. 449 0
      bsp/ht32/ht32f53252/board/Kconfig
  36. 27 0
      bsp/ht32/ht32f53252/board/SConscript
  37. 56 0
      bsp/ht32/ht32f53252/board/inc/board.h
  38. 111 0
      bsp/ht32/ht32f53252/board/inc/ht32_can_config.h
  39. 368 0
      bsp/ht32/ht32f53252/board/inc/ht32_msp.h
  40. 453 0
      bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_01_usbdconf.h
  41. 569 0
      bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_02_usbdconf.h
  42. 556 0
      bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_conf.h
  43. 28 0
      bsp/ht32/ht32f53252/board/linker_scripts/link.icf
  44. 156 0
      bsp/ht32/ht32f53252/board/linker_scripts/link.lds
  45. 15 0
      bsp/ht32/ht32f53252/board/linker_scripts/link.sct
  46. 17 0
      bsp/ht32/ht32f53252/board/src/board.c
  47. 272 0
      bsp/ht32/ht32f53252/board/src/ht32_msp.c
  48. 二进制
      bsp/ht32/ht32f53252/figures/board.jpg
  49. 1203 0
      bsp/ht32/ht32f53252/project.uvoptx
  50. 2234 0
      bsp/ht32/ht32f53252/project.uvprojx
  51. 394 0
      bsp/ht32/ht32f53252/rtconfig.h
  52. 152 0
      bsp/ht32/ht32f53252/rtconfig.py
  53. 179 0
      bsp/ht32/ht32f53252/template.uvoptx
  54. 391 0
      bsp/ht32/ht32f53252/template.uvprojx
  55. 1 0
      bsp/ht32/libraries/.ignore_format.yml
  56. 82 5
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/Release_Notes.txt
  57. 1 27
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/SConscript
  58. 20 15
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Include/ht32f1xxxx_01.h
  59. 50 30
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12345.s
  60. 25 5
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12364.s
  61. 50 30
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12365_66.s
  62. 50 30
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f165x.s
  63. 50 30
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f1xxxx_01.s
  64. 25 5
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f1xxxx_03.s
  65. 18 18
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/CodeSourcery/startup_ht32f1xxxx_cs3_01.s
  66. 18 18
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/GCC/startup_ht32f1xxxx_gcc_01.s
  67. 26 26
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/IAR/startup_ht32f1xxxx_iar_01.s
  68. 18 18
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/emStudio/startup_ht32f1xxxx_es_01.s
  69. 7 2
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_cm3_misc.h
  70. 13 5
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_dependency.h
  71. 12 12
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_time.h
  72. 8 8
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_aes.h
  73. 3 3
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_flash.h
  74. 2 2
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_lib.h
  75. 3 3
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_rtc.h
  76. 9 9
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_spi.h
  77. 17 17
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_tm.h
  78. 3 3
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_usart.h
  79. 11 8
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_wdt.h
  80. 95 2
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32_cm3_misc.c
  81. 23 23
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_aes.c
  82. 52 52
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_ckcu.c
  83. 2 4
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_rtc.c
  84. 9 2
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_spi.c
  85. 5 5
      bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_wdt.c
  86. 273 8
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/Release_Notes.txt
  87. 1 28
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/SConscript
  88. 65 88
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Include/ht32f5xxxx_01.h
  89. 25 9
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_hf5032.s
  90. 25 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f0006.s
  91. 25 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f0008.s
  92. 28 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50020_30.s
  93. 29 9
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50220_30.s
  94. 29 9
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50231_41.s
  95. 25 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50343.s
  96. 29 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50431_41.s
  97. 29 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50442_52.s
  98. 25 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52142.s
  99. 43 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52220_30.s
  100. 43 5
      bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52231_41.s

+ 1 - 0
.github/workflows/bsp_buildings.yml

@@ -101,6 +101,7 @@ jobs:
                 - "rm48x50"
                 - "ht32/ht32f52352"
                 - "ht32/ht32f12366"
+                - "ht32/ht32f53252"
                 - "w60x"
                 - "essemi/es32f0654"
                 - "essemi/es32f365x"

+ 217 - 43
bsp/ht32/ht32f12366/.config

@@ -1,15 +1,117 @@
+
 #
-# Automatically generated file; DO NOT EDIT.
-# RT-Thread Configuration
+# RT-Thread Kernel
 #
 
 #
-# RT-Thread Kernel
+# klibc options
+#
+
+#
+# rt_vsnprintf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set
+# end of rt_vsnprintf options
+
+#
+# rt_vsscanf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set
+# end of rt_vsscanf options
+
+#
+# rt_memset options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set
+# end of rt_memset options
+
+#
+# rt_memcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set
+# end of rt_memcpy options
+
+#
+# rt_memmove options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set
+# end of rt_memmove options
+
+#
+# rt_memcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set
+# end of rt_memcmp options
+
+#
+# rt_strstr options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set
+# end of rt_strstr options
+
+#
+# rt_strcasecmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set
+# end of rt_strcasecmp options
+
+#
+# rt_strncpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set
+# end of rt_strncpy options
+
+#
+# rt_strcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set
+# end of rt_strcpy options
+
+#
+# rt_strncmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set
+# end of rt_strncmp options
+
+#
+# rt_strcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set
+# end of rt_strcmp options
+
+#
+# rt_strlen options
 #
+# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set
+# end of rt_strlen options
+
+#
+# rt_strnlen options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set
+# end of rt_strnlen options
+
+# CONFIG_RT_UTEST_TC_USING_KLIBC is not set
+# end of klibc options
+
 CONFIG_RT_NAME_MAX=8
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
-# CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
+# CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_AMP is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_CPUS_NR=1
@@ -19,26 +121,24 @@ CONFIG_RT_THREAD_PRIORITY_32=y
 # CONFIG_RT_THREAD_PRIORITY_256 is not set
 CONFIG_RT_THREAD_PRIORITY_MAX=32
 CONFIG_RT_TICK_PER_SECOND=1000
-CONFIG_RT_USING_OVERFLOW_CHECK=y
+# CONFIG_RT_USING_OVERFLOW_CHECK is not set
 CONFIG_RT_USING_HOOK=y
 CONFIG_RT_HOOK_USING_FUNC_PTR=y
 # CONFIG_RT_USING_HOOKLIST is not set
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
-CONFIG_IDLE_THREAD_STACK_SIZE=256
+CONFIG_IDLE_THREAD_STACK_SIZE=512
 # CONFIG_RT_USING_TIMER_SOFT is not set
+# CONFIG_RT_USING_CPU_USAGE_TRACER is not set
 
 #
-# kservice optimization
+# kservice options
 #
-# CONFIG_RT_KSERVICE_USING_STDLIB is not set
-# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
 # CONFIG_RT_USING_TINY_FFS is not set
-# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
-CONFIG_RT_USING_DEBUG=y
-CONFIG_RT_DEBUGING_COLOR=y
-CONFIG_RT_DEBUGING_CONTEXT=y
-# CONFIG_RT_DEBUGING_AUTO_INIT is not set
+# end of kservice options
+
+# CONFIG_RT_USING_DEBUG is not set
+# CONFIG_RT_USING_CI_ACTION is not set
 
 #
 # Inter-Thread communication
@@ -50,6 +150,7 @@ CONFIG_RT_USING_MAILBOX=y
 CONFIG_RT_USING_MESSAGEQUEUE=y
 # CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set
 # CONFIG_RT_USING_SIGNALS is not set
+# end of Inter-Thread communication
 
 #
 # Memory Management
@@ -68,21 +169,21 @@ CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
 # CONFIG_RT_USING_MEMTRACE is not set
 # CONFIG_RT_USING_HEAP_ISR is not set
 CONFIG_RT_USING_HEAP=y
+# end of Memory Management
+
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
 # CONFIG_RT_USING_THREADSAFE_PRINTF is not set
-# CONFIG_RT_USING_SCHED_THREAD_CTX is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="usart0"
 CONFIG_RT_VER_NUM=0x50200
 # CONFIG_RT_USING_STDC_ATOMIC is not set
 CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32
-# CONFIG_RT_USING_CACHE is not set
+# end of RT-Thread Kernel
+
 CONFIG_RT_USING_HW_ATOMIC=y
-# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set
-# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -117,12 +218,15 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y
 # DFS: device virtual file system
 #
 # CONFIG_RT_USING_DFS is not set
+# end of DFS: device virtual file system
+
 # CONFIG_RT_USING_FAL is not set
 
 #
 # Device Drivers
 #
 # CONFIG_RT_USING_DM is not set
+# CONFIG_RT_USING_DEV_BUS is not set
 CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_UNAMED_PIPE_NUMBER=64
 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
@@ -131,53 +235,40 @@ CONFIG_RT_USING_SERIAL_V1=y
 # CONFIG_RT_USING_SERIAL_V2 is not set
 CONFIG_RT_SERIAL_USING_DMA=y
 CONFIG_RT_SERIAL_RB_BUFSZ=64
+# CONFIG_RT_USING_SERIAL_BYPASS is not set
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_CPUTIME is not set
-CONFIG_RT_USING_I2C=y
-# CONFIG_RT_I2C_DEBUG is not set
-CONFIG_RT_USING_I2C_BITOPS=y
-# CONFIG_RT_I2C_BITOPS_DEBUG is not set
-# CONFIG_RT_USING_SOFT_I2C is not set
+# CONFIG_RT_USING_I2C is not set
 # CONFIG_RT_USING_PHY is not set
-CONFIG_RT_USING_ADC=y
+# CONFIG_RT_USING_PHY_V2 is not set
+# CONFIG_RT_USING_ADC is not set
 # CONFIG_RT_USING_DAC is not set
 # CONFIG_RT_USING_NULL is not set
 # CONFIG_RT_USING_ZERO is not set
 # CONFIG_RT_USING_RANDOM is not set
 # CONFIG_RT_USING_PWM is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+# CONFIG_RT_USING_INPUT_CAPTURE is not set
 # CONFIG_RT_USING_MTD_NOR is not set
 # CONFIG_RT_USING_MTD_NAND is not set
 # CONFIG_RT_USING_PM is not set
 # CONFIG_RT_USING_RTC is not set
 # CONFIG_RT_USING_SDIO is not set
-CONFIG_RT_USING_SPI=y
-# CONFIG_RT_USING_SPI_BITOPS is not set
-# CONFIG_RT_USING_QSPI is not set
-# CONFIG_RT_USING_SPI_MSD is not set
-# CONFIG_RT_USING_SFUD is not set
-# CONFIG_RT_USING_ENC28J60 is not set
-# CONFIG_RT_USING_SPI_WIFI is not set
-CONFIG_RT_USING_WDT=y
+# CONFIG_RT_USING_SPI is not set
+# CONFIG_RT_USING_WDT is not set
 # CONFIG_RT_USING_AUDIO is not set
 # CONFIG_RT_USING_SENSOR is not set
 # CONFIG_RT_USING_TOUCH is not set
 # CONFIG_RT_USING_LCD is not set
 # CONFIG_RT_USING_HWCRYPTO is not set
-# CONFIG_RT_USING_PULSE_ENCODER is not set
-# CONFIG_RT_USING_INPUT_CAPTURE is not set
-# CONFIG_RT_USING_DEV_BUS is not set
 # CONFIG_RT_USING_WIFI is not set
+# CONFIG_RT_USING_BLK is not set
 # CONFIG_RT_USING_VIRTIO is not set
 CONFIG_RT_USING_PIN=y
 # CONFIG_RT_USING_KTIME is not set
 # CONFIG_RT_USING_HWTIMER is not set
-
-#
-# Using USB
-#
-# CONFIG_RT_USING_USB is not set
-# CONFIG_RT_USING_USB_HOST is not set
-# CONFIG_RT_USING_USB_DEVICE is not set
+# CONFIG_RT_USING_CHERRYUSB is not set
+# end of Device Drivers
 
 #
 # C/C++ and POSIX layer
@@ -195,6 +286,8 @@ CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y
 CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8
 CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0
 CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
+# end of Timezone and Daylight Saving Time
+# end of ISO-ANSI C layer
 
 #
 # POSIX (Portable Operating System Interface) layer
@@ -216,7 +309,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # Socket is in the 'Network' category
 #
+# end of Interprocess Communication (IPC)
+# end of POSIX (Portable Operating System Interface) layer
+
 # CONFIG_RT_USING_CPLUSPLUS is not set
+# end of C/C++ and POSIX layer
 
 #
 # Network
@@ -225,12 +322,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_NETDEV is not set
 # CONFIG_RT_USING_LWIP is not set
 # CONFIG_RT_USING_AT is not set
+# end of Network
 
 #
 # Memory protection
 #
 # CONFIG_RT_USING_MEM_PROTECTION is not set
 # CONFIG_RT_USING_HW_STACK_GUARD is not set
+# end of Memory protection
 
 #
 # Utilities
@@ -242,12 +341,25 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_RESOURCE_ID is not set
 # CONFIG_RT_USING_ADT is not set
 # CONFIG_RT_USING_RT_LINK is not set
+# end of Utilities
+
 # CONFIG_RT_USING_VBUS is not set
 
+#
+# Using USB legacy version
+#
+# CONFIG_RT_USING_USB_HOST is not set
+# CONFIG_RT_USING_USB_DEVICE is not set
+# end of Using USB legacy version
+
+# CONFIG_RT_USING_FDT is not set
+# end of RT-Thread Components
+
 #
 # RT-Thread Utestcases
 #
 # CONFIG_RT_USING_UTESTCASES is not set
+# end of RT-Thread Utestcases
 
 #
 # RT-Thread online packages
@@ -256,7 +368,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # IoT - internet of things
 #
-# CONFIG_PKG_USING_LWIP is not set
 # CONFIG_PKG_USING_LORAWAN_DRIVER is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
 # CONFIG_PKG_USING_UMQTT is not set
@@ -279,27 +390,35 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # Marvell WiFi
 #
 # CONFIG_PKG_USING_WLANMARVELL is not set
+# end of Marvell WiFi
 
 #
 # Wiced WiFi
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
+# end of Wiced WiFi
+
 # CONFIG_PKG_USING_RW007 is not set
 
 #
 # CYW43012 WiFi
 #
 # CONFIG_PKG_USING_WLAN_CYW43012 is not set
+# end of CYW43012 WiFi
 
 #
 # BL808 WiFi
 #
 # CONFIG_PKG_USING_WLAN_BL808 is not set
+# end of BL808 WiFi
 
 #
 # CYW43439 WiFi
 #
 # CONFIG_PKG_USING_WLAN_CYW43439 is not set
+# end of CYW43439 WiFi
+# end of Wi-Fi
+
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -322,6 +441,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# end of IoT Cloud
+
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
@@ -365,6 +486,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
 # CONFIG_PKG_USING_LHC_MODBUS is not set
 # CONFIG_PKG_USING_QMODBUS is not set
+# end of IoT - internet of things
 
 #
 # security packages
@@ -375,6 +497,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_YD_CRYPTO is not set
+# end of security packages
 
 #
 # language packages
@@ -390,18 +513,22 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PARSON is not set
+# end of JSON: JavaScript Object Notation, a lightweight data-interchange format
 
 #
 # XML: Extensible Markup Language
 #
 # CONFIG_PKG_USING_SIMPLE_XML is not set
 # CONFIG_PKG_USING_EZXML is not set
+# end of XML: Extensible Markup Language
+
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_PIKASCRIPT is not set
 # CONFIG_PKG_USING_RTT_RUST is not set
+# end of language packages
 
 #
 # multimedia packages
@@ -413,12 +540,15 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_LVGL is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+# end of LVGL: powerful and easy-to-use embedded GUI library
 
 #
 # u8g2: a monochrome graphic library
 #
 # CONFIG_PKG_USING_U8G2_OFFICIAL is not set
 # CONFIG_PKG_USING_U8G2 is not set
+# end of u8g2: a monochrome graphic library
+
 # CONFIG_PKG_USING_OPENMV is not set
 # CONFIG_PKG_USING_MUPDF is not set
 # CONFIG_PKG_USING_STEMWIN is not set
@@ -438,6 +568,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_3GPP_AMRNB is not set
+# end of multimedia packages
 
 #
 # tools packages
@@ -487,6 +618,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_VOFA_PLUS is not set
 # CONFIG_PKG_USING_RT_TRACE is not set
 # CONFIG_PKG_USING_ZDEBUG is not set
+# end of tools packages
 
 #
 # system packages
@@ -498,6 +630,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_RT_MEMCPY_CM is not set
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
+# end of enhanced kernel services
+
 # CONFIG_PKG_USING_AUNITY is not set
 
 #
@@ -506,6 +640,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
 # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
 # CONFIG_PKG_USING_QFPLIB_M3 is not set
+# end of acceleration: Assembly language or algorithmic acceleration packages
 
 #
 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
@@ -516,6 +651,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_CMSIS_NN is not set
 # CONFIG_PKG_USING_CMSIS_RTOS1 is not set
 # CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
 
 #
 # Micrium: Micrium software products porting for RT-Thread
@@ -526,6 +662,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
+# end of Micrium: Micrium software products porting for RT-Thread
+
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
 # CONFIG_PKG_USING_LITEOS_SDK is not set
 # CONFIG_PKG_USING_TZ_DATABASE is not set
@@ -573,6 +711,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_RTP is not set
 # CONFIG_PKG_USING_REB is not set
 # CONFIG_PKG_USING_R_RHEALSTONE is not set
+# end of system packages
 
 #
 # peripheral libraries and drivers
@@ -589,6 +728,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set
 # CONFIG_PKG_USING_STM32WB55_SDK is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
+# end of STM32 HAL & SDK Drivers
 
 #
 # Infineon HAL Packages
@@ -603,6 +743,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_INFINEON_CSDIDAC is not set
 # CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set
 # CONFIG_PKG_USING_INFINEON_USBDEV is not set
+# end of Infineon HAL Packages
+
 # CONFIG_PKG_USING_BLUETRUM_SDK is not set
 # CONFIG_PKG_USING_EMBARC_BSP is not set
 # CONFIG_PKG_USING_ESP_IDF is not set
@@ -612,9 +754,12 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
+# end of Kendryte SDK
+
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+# end of HAL & SDK Drivers
 
 #
 # sensors drivers
@@ -684,6 +829,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_PAJ7620 is not set
 # CONFIG_PKG_USING_STHS34PF80 is not set
+# end of sensors drivers
 
 #
 # touch drivers
@@ -698,6 +844,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_XPT2046_TOUCH is not set
 # CONFIG_PKG_USING_CST816X is not set
 # CONFIG_PKG_USING_CST812T is not set
+# end of touch drivers
+
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -771,6 +919,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_BT_MX01 is not set
 # CONFIG_PKG_USING_RGPOWER is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
+# end of peripheral libraries and drivers
 
 #
 # AI packages
@@ -785,6 +934,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
 # CONFIG_PKG_USING_R_TINYMAIX is not set
+# end of AI packages
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -795,6 +945,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# end of Signal Processing and Control Algorithm Packages
 
 #
 # miscellaneous packages
@@ -803,6 +954,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # project laboratory
 #
+# end of project laboratory
 
 #
 # samples: kernel and components samples
@@ -811,6 +963,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
 # CONFIG_PKG_USING_NETWORK_SAMPLES is not set
 # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+# end of samples: kernel and components samples
 
 #
 # entertainment: terminal games and other interesting software packages
@@ -827,6 +980,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_MORSE is not set
 # CONFIG_PKG_USING_TINYSQUARE is not set
+# end of entertainment: terminal games and other interesting software packages
+
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -860,6 +1015,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_SOEM is not set
 # CONFIG_PKG_USING_QPARAM is not set
 # CONFIG_PKG_USING_CorevMCU_CLI is not set
+# end of miscellaneous packages
 
 #
 # Arduino libraries
@@ -875,6 +1031,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set
 # CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
 # CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
+# end of Projects and Demos
 
 #
 # Sensors
@@ -1015,6 +1172,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
 # CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
 # CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set
+# end of Sensors
 
 #
 # Display
@@ -1026,6 +1184,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
 # CONFIG_PKG_USING_SEEED_TM1637 is not set
+# end of Display
 
 #
 # Timing
@@ -1034,6 +1193,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
+# end of Timing
 
 #
 # Data Processing
@@ -1042,6 +1202,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
 # CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set
 # CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set
+# end of Data Processing
 
 #
 # Data Storage
@@ -1052,6 +1213,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
+# end of Communication
 
 #
 # Device Control
@@ -1063,12 +1225,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set
 # CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
+# end of Device Control
 
 #
 # Other
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
+# end of Other
 
 #
 # Signal IO
@@ -1081,10 +1245,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
+# end of Signal IO
 
 #
 # Uncategorized
 #
+# end of Arduino libraries
+# end of RT-Thread online packages
+
 CONFIG_SOC_FAMILY_HT32=y
 CONFIG_SOC_SERIES_HT32F1=y
 
@@ -1103,11 +1271,13 @@ CONFIG_CORTEX_M3=y
 # CONFIG_SOC_HT32F12345 is not set
 # CONFIG_SOC_HT32F12364 is not set
 CONFIG_SOC_HT32F12366=y
+# end of Chip Configuration
 
 #
 # Onboard Peripheral Drivers
 #
 # CONFIG_BSP_USING_TEST is not set
+# end of Onboard Peripheral Drivers
 
 #
 # On-chip Peripheral Drivers
@@ -1123,7 +1293,11 @@ CONFIG_BSP_USING_USART0_NAME="usart0"
 # CONFIG_BSP_USING_I2C is not set
 # CONFIG_BSP_USING_ADC is not set
 # CONFIG_BSP_USING_WDT is not set
+# CONFIG_BSP_USING_SDIO is not set
+# CONFIG_BSP_USING_USBD is not set
+# end of On-chip Peripheral Drivers
 
 #
 # Board extended module Drivers
 #
+# end of Hardware Drivers Config

+ 2 - 2
bsp/ht32/ht32f12366/README.md

@@ -41,8 +41,8 @@ ESK32-30105使用32位ARM® Cortex®-M3高性能、低功耗单片机HT32F12366
 | UART | 支持  | UART0/1 |
 | SPI | 支持  | SPI0/1 |
 | I2C | 支持  | 硬件 I2C0/1 |
-| ADC | 暂不支持  |     |
-| WDT | 暂不支持  |     |
+| ADC | 支持  |     |
+| WDT | 支持  |     |
 
 ## 使用说明
 

+ 3 - 0
bsp/ht32/ht32f12366/SConstruct

@@ -53,6 +53,9 @@ rtconfig.BSP_LIBRARY_TYPE = ht32_library
 # include libraries
 objs.extend(SConscript(os.path.join(libraries_path_prefix, ht32_library, 'SConscript')))
 
+# include usb libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'usbd_library', 'SConscript')))
+
 # include drivers
 objs.extend(SConscript(os.path.join(libraries_path_prefix, 'ht32_drivers', 'SConscript')))
 

+ 121 - 2
bsp/ht32/ht32f12366/applications/test.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006-2024, RT-Thread Development Team
+ * Copyright (c) 2006-2025, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -58,10 +58,18 @@ static struct rt_semaphore rx_sem;
 static rt_mutex_t task_mutex = RT_NULL; /* task mutex */
 
 /* device handle */
+#ifdef BSP_USING_UART
 static rt_device_t serial;
+#endif
+#ifdef BSP_USING_WDT
 static rt_device_t wdt_dev;
+#endif
+#ifdef BSP_USING_I2C
 struct rt_i2c_bus_device *i2c_dev;
+#endif
+#ifdef BSP_USING_SPI
 static struct rt_spi_device *spi_dev;
+#endif
 
 /* In-file function declarations */
 static void sys_run_dir(void *parameter);
@@ -90,6 +98,7 @@ int task_registration(void)
 INIT_BOARD_EXPORT(task_registration);
 
 /* System operation indicator */
+#ifdef BSP_USING_GPIO
 static void sys_run_dir(void *parameter)
 {
     rt_uint32_t e;
@@ -301,7 +310,9 @@ static int gpio_input_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(gpio_input_task, gpio input task operation);
+#endif
 /* uart test */
+#ifdef BSP_USING_UART
 static rt_err_t uart_iqr_handle(rt_device_t dev, rt_size_t size)
 {
     /* Serial port callback function */
@@ -396,7 +407,9 @@ static int uart_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(uart_task, uart device sample);
+#endif
 /* hw/sw iic test */
+#ifdef BSP_USING_I2C
 static void i2c_thread(void *parameter)
 {
     uint8_t write_addr = 0x00;
@@ -497,7 +510,9 @@ static int i2c_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(i2c_task, i2c device sample);
+#endif
 /* spi test */
+#ifdef BSP_USING_SPI
 static void spi_thread(void *parameter)
 {
     rt_uint8_t w25x_read_id = 0x9F;
@@ -584,7 +599,9 @@ static int spi_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(spi_task, spi device sample);
+#endif
 /* adc test */
+#ifdef BSP_USING_ADC
 static void adc_test(void *parameter)
 {
     rt_uint32_t adc0_ch11_val,adc0_ch12_val;
@@ -640,8 +657,9 @@ static int adc_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(adc_task, adc task operation);
-
+#endif
 /* wdt test */
+#ifdef BSP_USING_WDT
 static void wdt_test(void)
 {
     rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
@@ -712,5 +730,106 @@ static int wdt_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(wdt_task, wdt task operation);
+#endif
+/* usbd test */
+#ifdef BSP_USING_USBD
+static void usbd_test(void *parameter)
+{
+    rt_device_t dev = RT_NULL;
+    char dev_name[] = "vcom";
+    char buf[] = "usbd vcom test!\r\n";
+
+    dev = rt_device_find(dev_name);
+
+    if (dev)
+    {
+        rt_device_open(dev, RT_DEVICE_FLAG_RDWR);
+    }
+    else
+    {
+        rt_kprintf("Device with name %s not found.\n",dev_name);
+        rt_thread_t tid = rt_thread_self();
+        rt_thread_delete(tid);
+    }
+    while (1)
+    {
+        rt_device_write(dev, 0, buf, rt_strlen(buf));
+        rt_thread_mdelay(500);
+    }
+}
+
+static int usbd_task(int argc, char *argv[])
+{
+    rt_err_t ret = -RT_ERROR;
 
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            /* Gpio input test tasks */
+            rt_thread_t usbd_vcom_task = rt_thread_create("usbd_vcom_task",
+                                            usbd_test, RT_NULL,
+                                            THREAD_STACK_SIZE,
+                                            THREAD_PRIORITY, THREAD_TIMESLICE);
+            if (usbd_vcom_task != RT_NULL)
+            {
+                rt_thread_startup(usbd_vcom_task);
+                rt_kprintf("The usbd vcom task is registered.\n");
+            }
+            else
+            {
+                rt_kprintf("usbd vcom task registration failed.\n");
+            }
+            ret = RT_EOK;
+        }
+        else if(rt_strcmp(argv[1],"stop") == 0)
+        {
+            ret = RT_EOK;
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s stop\n",__func__);
+    }
+    return ret;
+}
+MSH_CMD_EXPORT(usbd_task, usbd task operation);
+#endif
+#ifdef BSP_USING_SDIO
+int mnt_init(void)
+{
+    rt_device_t dev = RT_NULL;
+    char dev_name[] = BSP_USING_SDIO_NAME;
+    rt_thread_mdelay(1000);
+
+    dev = rt_device_find(dev_name);
+    if(dev)
+    {
+        if(dfs_mount("sd0","/","elm",0,0) == RT_EOK)
+        {
+            rt_kprintf("dfs mount success!\r\n");
+        }
+        else
+        {
+            rt_kprintf("dfs mount failed!\r\n");
+            rt_kprintf("Formatting the SD card!\r\n");
+            dfs_mkfs("elm",dev_name);
+            if(dfs_mount("sd0","/","elm",0,0) == RT_EOK)
+            {
+                rt_kprintf("dfs mount success!\r\n");
+            }
+            else
+            {
+                rt_kprintf("dfs mount failed!\r\n");
+                rt_kprintf("Exit SD card mount!\r\n");
+            }
+        }
+    }
+    return 0;
+}
+INIT_FS_EXPORT(mnt_init);
+#endif /* BSP_USING_SDIO */
 #endif /* BSP_USING_TEST */

+ 136 - 1
bsp/ht32/ht32f12366/board/Kconfig

@@ -126,7 +126,7 @@ menu "On-chip Peripheral Drivers"
     menuconfig BSP_USING_UART
         bool "Enable UART"
         default n
-        select RT_USING_SERIAL
+        select RT_USING_SERIAL if BSP_USING_UART
         if BSP_USING_UART
             config BSP_USING_USART0
                 bool "Enable USART0"
@@ -306,6 +306,141 @@ menu "On-chip Peripheral Drivers"
         depends on BSP_USING_WDT
         string "wdt device name"
         default "wdt"
+
+    menuconfig BSP_USING_CAN
+        bool "Enable CAN"
+        depends on SOC_HT32F53241 || SOC_HT32F53242 || SOC_HT32F53252
+        default n
+        select RT_USING_CAN if BSP_USING_CAN
+        config BSP_USING_CAN_NAME
+        depends on BSP_USING_CAN
+        string "can device name"
+        default "can"
+        if BSP_USING_CAN
+            config CAN_DEFAULT_BASE_CONFIGURATION  
+                choice
+                    prompt "Default CAN baud rate"
+                    default BSP_USING_CAN500kBaud
+                    config BSP_USING_CAN1MBaud
+                        bool "CAN1MBaud"
+                    config BSP_USING_CAN800kBaud
+                        bool "CAN800kBaud"
+                    config BSP_USING_CAN500kBaud
+                        bool "CAN500kBaud"
+                    config BSP_USING_CAN250kBaud
+                        bool "CAN250kBaud"
+                    config BSP_USING_CAN125kBaud
+                        bool "CAN125kBaud"
+                    config BSP_USING_CAN100kBaud
+                        bool "CAN100kBaud"
+                    config BSP_USING_CAN50kBaud
+                        bool "CAN50kBaud"
+                    config BSP_USING_CAN20kBaud
+                        bool "CAN20kBaud"
+                    config BSP_USING_CAN10kBaud
+                        bool "CAN10kBaud"
+                endchoice
+                choice
+                    prompt "Default CAN mode"
+                    default BSP_USING_RT_CAN_MODE_NORMAL
+                    config BSP_USING_RT_CAN_MODE_NORMAL
+                        bool "RT_CAN_MODE_NORMAL"
+                    config BSP_USING_RT_CAN_MODE_LISTEN
+                        bool "RT_CAN_MODE_LISTEN"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACK
+                        bool "RT_CAN_MODE_LOOPBACK"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+                        bool "RT_CAN_MODE_LOOPBACKANLISTEN"
+                endchoice
+
+                config BSP_USING_CAN_BAUD
+                int
+                default 1000000 if BSP_USING_CAN1MBaud
+                default 800000 if BSP_USING_CAN800kBaud
+                default 500000 if BSP_USING_CAN500kBaud
+                default 250000 if BSP_USING_CAN250kBaud
+                default 125000 if BSP_USING_CAN125kBaud
+                default 100000 if BSP_USING_CAN100kBaud
+                default 50000 if BSP_USING_CAN50kBaud
+                default 20000 if BSP_USING_CAN20kBaud
+                default 10000 if BSP_USING_CAN10kBaud
+
+                config BSP_USING_CAN_MODE
+                int
+                default 0 if BSP_USING_RT_CAN_MODE_NORMAL
+                default 1 if BSP_USING_RT_CAN_MODE_LISTEN
+                default 2 if BSP_USING_RT_CAN_MODE_LOOPBACK
+                default 3 if BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+            
+            config CAN_DEFAULT_FILTER_TABLE_CONFIGURATION
+                choice
+                    prompt "Default filter id mode"
+                    default BSP_USING_CAN_STD_ID
+                    config BSP_USING_CAN_STD_ID
+                        bool "CAN_STD_ID"
+                    config BSP_USING_CAN_EXT_ID
+                        bool "CAN_EXT_ID"
+                endchoice
+
+                choice
+                    prompt "Default filter frame mode"
+                    default BSP_USING_CAN_DATA_FRAME
+                    config BSP_USING_CAN_DATA_FRAME
+                        bool "CAN_DATA_FRAME"
+                    config BSP_USING_CAN_REMOTE_FRAME
+                        bool "CAN_REMOTE_FRAME"
+                endchoice
+
+                config BSP_USING_CAN_ID_MODE
+                int
+                default 0 if BSP_USING_CAN_STD_ID
+                default 1 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_FRAME_MODE
+                int
+                default 0 if BSP_USING_CAN_REMOTE_FRAME
+                default 1 if BSP_USING_CAN_DATA_FRAME
+
+                config BSP_USING_CAN_MSG_NUM
+                int "Default filter table number"
+                range 0 31
+                default 0
+
+                config BSP_USING_CAN_ID
+                hex "Default filter arbitration bit(ID)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x541 if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x541 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_MASK
+                hex "Default filter mask bit(MASK)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x7FF if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+
+        endif
+
+    menuconfig BSP_USING_SDIO
+        bool "Enable SDIO"
+        depends on SOC_HT32F12345 || SOC_HT32F12365 || SOC_HT32F12366
+        default n
+        select RT_USING_SDIO if BSP_USING_SDIO
+        select RT_USING_DFS if BSP_USING_SDIO
+        config BSP_USING_SDIO_NAME
+        depends on BSP_USING_SDIO
+        string "sdio device name"
+        default "sd0"
+
+    menuconfig BSP_USING_USBD
+        bool "Enable USB BUS"
+        default n
+        select RT_USING_USB_DEVICE if BSP_USING_USBD
+        config BSP_USING_USBD_NAME
+        depends on BSP_USING_USBD
+        string "usbd device name"
+        default "usbd"
 endmenu
 
 menu "Board extended module Drivers"

+ 4 - 0
bsp/ht32/ht32f12366/board/inc/board.h

@@ -23,6 +23,10 @@
     #include "drv_spi.h"
 #endif
 
+#ifdef BSP_USING_SDIO
+#include "dfs_fs.h"
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif

+ 60 - 5
bsp/ht32/ht32f12366/board/inc/ht32_msp.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006-2024, RT-Thread Development Team
+ * Copyright (c) 2006-2025, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -100,7 +100,7 @@ extern "C" {
     #define HTCFG_UART1_RX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_UART1_RX_GPION)
 
 #endif
-#endif
+#endif  /* BSP_USING_UART */
 
 /* SPI gpio */
 #ifdef BSP_USING_SPI
@@ -156,7 +156,7 @@ extern "C" {
     #define HTCFG_SPI1_MOSI_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SPI1_MOSI_GPION)
 
 #endif
-#endif
+#endif  /* BSP_USING_SPI */
 
 /* I2C gpio */
 #ifdef BSP_USING_I2C_HW
@@ -198,7 +198,8 @@ extern "C" {
     #define HTCFG_I2C1_SDA_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_I2C1_SDA_GPION)
 
 #endif
-#endif
+#endif  /* BSP_USING_I2C_HW */
+
 /* ADC gpio */
 #ifdef BSP_USING_ADC
 #ifdef BSP_USING_ADC0
@@ -335,12 +336,66 @@ extern "C" {
 #define HTCFG_ADC1CH7_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH7_AFION)
 
 #endif
-#endif
+#endif  /* BSP_USING_ADC */
+
+/* SDIO gpio */
+#ifdef BSP_USING_SDIO
+    #define HTCFG_SDIO_IPN                           SDIO
+
+    #define _HTCFG_SDIO_CLK_GPIOX                    A
+    #define _HTCFG_SDIO_CLK_GPION                    5
+
+    #define _HTCFG_SDIO_CMD_GPIOX                    A
+    #define _HTCFG_SDIO_CMD_GPION                    4
+
+    #define _HTCFG_SDIO_DAT0_GPIOX                   C
+    #define _HTCFG_SDIO_DAT0_GPION                   9
+
+    #define _HTCFG_SDIO_DAT1_GPIOX                   C
+    #define _HTCFG_SDIO_DAT1_GPION                   10
+
+    #define _HTCFG_SDIO_DAT2_GPIOX                   C
+    #define _HTCFG_SDIO_DAT2_GPION                   11
+
+    #define _HTCFG_SDIO_DAT3_GPIOX                   C
+    #define _HTCFG_SDIO_DAT3_GPION                   12
+
+    #define HTCFG_SDIO_CLK_GPIO_CLK                  STRCAT2(P,              _HTCFG_SDIO_CLK_GPIOX)
+    #define HTCFG_SDIO_CLK_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_SDIO_CLK_GPIOX)
+    #define HTCFG_SDIO_CLK_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_SDIO_CLK_GPIOX)
+    #define HTCFG_SDIO_CLK_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_CLK_GPION)
+
+    #define HTCFG_SDIO_CMD_GPIO_CLK                  STRCAT2(P,              _HTCFG_SDIO_CMD_GPIOX)
+    #define HTCFG_SDIO_CMD_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_SDIO_CMD_GPIOX)
+    #define HTCFG_SDIO_CMD_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_SDIO_CMD_GPIOX)
+    #define HTCFG_SDIO_CMD_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_CMD_GPION)
+
+    #define HTCFG_SDIO_DAT0_GPIO_CLK                 STRCAT2(P,              _HTCFG_SDIO_DAT0_GPIOX)
+    #define HTCFG_SDIO_DAT0_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SDIO_DAT0_GPIOX)
+    #define HTCFG_SDIO_DAT0_GPIO_PORT                STRCAT2(HT_GPIO,        _HTCFG_SDIO_DAT0_GPIOX)
+    #define HTCFG_SDIO_DAT0_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_DAT0_GPION)
+
+    #define HTCFG_SDIO_DAT1_GPIO_CLK                 STRCAT2(P,              _HTCFG_SDIO_DAT1_GPIOX)
+    #define HTCFG_SDIO_DAT1_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SDIO_DAT1_GPIOX)
+    #define HTCFG_SDIO_DAT1_GPIO_PORT                STRCAT2(HT_GPIO,        _HTCFG_SDIO_DAT1_GPIOX)
+    #define HTCFG_SDIO_DAT1_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_DAT1_GPION)
+
+    #define HTCFG_SDIO_DAT2_GPIO_CLK                 STRCAT2(P,              _HTCFG_SDIO_DAT2_GPIOX)
+    #define HTCFG_SDIO_DAT2_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SDIO_DAT2_GPIOX)
+    #define HTCFG_SDIO_DAT2_GPIO_PORT                STRCAT2(HT_GPIO,        _HTCFG_SDIO_DAT2_GPIOX)
+    #define HTCFG_SDIO_DAT2_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_DAT2_GPION)
+
+    #define HTCFG_SDIO_DAT3_GPIO_CLK                 STRCAT2(P,              _HTCFG_SDIO_DAT3_GPIOX)
+    #define HTCFG_SDIO_DAT3_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SDIO_DAT3_GPIOX)
+    #define HTCFG_SDIO_DAT3_GPIO_PORT                STRCAT2(HT_GPIO,        _HTCFG_SDIO_DAT3_GPIOX)
+    #define HTCFG_SDIO_DAT3_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SDIO_DAT3_GPION)
 
+#endif  /* BSP_USING_SDIO */
 void ht32_usart_gpio_init(void *instance);
 void ht32_spi_gpio_init(void *instance);
 void ht32_hardware_i2c_gpio_init(void *instance);
 void ht32_adc_gpio_init(void *instance,int8_t channel);
+void ht32_sdio_gpio_init(void *instance);
 
 #ifdef __cplusplus
 }

+ 26 - 26
bsp/ht32/ht32f12366/board/inc/ht32f1xxxx_01_usbdconf.h

@@ -58,7 +58,7 @@
 //    <o0.13> Endpoint5 Interrupt Enable (EP5IE)
 //    <o0.14> Endpoint6 Interrupt Enable (EP6IE)
 //    <o0.15> Endpoint7 Interrupt Enable (EP7IE)
-#define _UIER               (0x011D)
+#define _UIER               (0xFF1D)
 //  </h>
 
 
@@ -96,7 +96,7 @@
 /* Endpoint1 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint1 Configuration
-#define _EP1_ENABLE         (0)
+#define _EP1_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -114,7 +114,7 @@
 //    <o0> Endpoint Transfer Type
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP1_TYPR           (3)
+#define _EP1_TYPR           (2)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -123,7 +123,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP1LEN_TMP         (8)
+#define _EP1LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -135,7 +135,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP1_IER            (0x10)
+#define _EP1_IER            (0x12)
 // </h>
 // </e>
 
@@ -144,7 +144,7 @@
 /* Endpoint2 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint2 Configuration
-#define _EP2_ENABLE         (0)
+#define _EP2_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -162,7 +162,7 @@
 //    <o0> Endpoint Transfer Type
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP2_TYPR           (3)
+#define _EP2_TYPR           (2)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -171,7 +171,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP2LEN_TMP         (8)
+#define _EP2LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -183,7 +183,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP2_IER            (0x002)
+#define _EP2_IER            (0x012)
 // </h>
 // </e>
 
@@ -191,7 +191,7 @@
 /* Endpoint3 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint3 Configuration
-#define _EP3_ENABLE         (0)
+#define _EP3_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -218,7 +218,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP3LEN_TMP         (8)
+#define _EP3LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -230,7 +230,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP3_IER            (0x10)
+#define _EP3_IER            (0x12)
 // </h>
 // </e>
 
@@ -238,7 +238,7 @@
 /* Endpoint4 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint4 Configuration
-#define _EP4_ENABLE         (0)
+#define _EP4_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -266,7 +266,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP4LEN_TMP         (8)
+#define _EP4LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -283,7 +283,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP4_IER            (0x02)
+#define _EP4_IER            (0x12)
 // </h>
 // </e>
 
@@ -292,7 +292,7 @@
 /* Endpoint5 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint5 Configuration
-#define _EP5_ENABLE         (0)
+#define _EP5_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -311,7 +311,7 @@
 //      <1=> Isochronous
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP5_TYPR           (3)
+#define _EP5_TYPR           (1)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -320,7 +320,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP5LEN_TMP         (8)
+#define _EP5LEN_TMP         (64)
 
 
 //    <o0> Single/Double Buffer Selection (SDBS)
@@ -338,7 +338,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP5_IER            (0x10)
+#define _EP5_IER            (0x12)
 // </h>
 // </e>
 
@@ -347,7 +347,7 @@
 /* Endpoint6 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint6 Configuration
-#define _EP6_ENABLE         (0)
+#define _EP6_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -366,7 +366,7 @@
 //      <1=> Isochronous
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP6_TYPR           (3)
+#define _EP6_TYPR           (1)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -375,7 +375,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP6LEN_TMP         (8)
+#define _EP6LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -392,7 +392,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP6_IER            (0x02)
+#define _EP6_IER            (0x12)
 // </h>
 // </e>
 
@@ -401,7 +401,7 @@
 /* Endpoint7 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint7 Configuration
-#define _EP7_ENABLE         (0)
+#define _EP7_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -429,7 +429,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP7LEN_TMP         (8)
+#define _EP7LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -446,7 +446,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP7_IER            (0x10)
+#define _EP7_IER            (0x12)
 // </h>
 // </e>
 

+ 43 - 5
bsp/ht32/ht32f12366/board/src/ht32_msp.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006-2024, RT-Thread Development Team
+ * Copyright (c) 2006-2025, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -69,7 +69,7 @@ void ht32_usart_gpio_init(void *instance)
     }
 #endif
 }
-#endif
+#endif  /* BSP_USING_UART */
 
 /* GPIO configuration for SPI */
 #ifdef BSP_USING_SPI
@@ -104,7 +104,7 @@ void ht32_spi_gpio_init(void *instance)
     }
 #endif
 }
-#endif
+#endif  /* BSP_USING_SPI */
 
 /* GPIO configuration for I2C */
 #ifdef BSP_USING_I2C_HW
@@ -135,7 +135,7 @@ void ht32_hardware_i2c_gpio_init(void *instance)
     }
 #endif
 }
-#endif
+#endif  /* BSP_USING_I2C_HW */
 /* GPIO configuration for ADC */
 #ifdef BSP_USING_ADC
 void ht32_adc_gpio_init(void *instance,int8_t channel)
@@ -247,4 +247,42 @@ void ht32_adc_gpio_init(void *instance,int8_t channel)
     }
 #endif
 }
-#endif
+#endif  /* BSP_USING_ADC */
+
+/* GPIO configuration for SDIO */
+#ifdef BSP_USING_SDIO
+void ht32_sdio_gpio_init(void *instance)
+{
+    CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
+    HT_SDIO_TypeDef *sdio_x = (HT_SDIO_TypeDef *)instance;
+    if(HT_SDIO == sdio_x)
+    {
+        CKCUClock.Bit.HTCFG_SDIO_CLK_GPIO_CLK   = 1;
+        CKCUClock.Bit.HTCFG_SDIO_CMD_GPIO_CLK   = 1;
+        CKCUClock.Bit.HTCFG_SDIO_DAT0_GPIO_CLK  = 1;
+        CKCUClock.Bit.HTCFG_SDIO_DAT1_GPIO_CLK  = 1;
+        CKCUClock.Bit.HTCFG_SDIO_DAT2_GPIO_CLK  = 1;
+        CKCUClock.Bit.HTCFG_SDIO_DAT3_GPIO_CLK  = 1;
+        CKCUClock.Bit.SDIO                      = 1;
+        CKCUClock.Bit.PDMA                      = 1;
+        CKCUClock.Bit.AFIO                      = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+
+        /* Configure SDIO pins                                                                                    */
+        AFIO_GPxConfig(HTCFG_SDIO_CLK_GPIO_ID, HTCFG_SDIO_CLK_GPIO_PIN, AFIO_FUN_SDIO);
+        AFIO_GPxConfig(HTCFG_SDIO_CMD_GPIO_ID, HTCFG_SDIO_CMD_GPIO_PIN, AFIO_FUN_SDIO);
+        AFIO_GPxConfig(HTCFG_SDIO_DAT0_GPIO_ID, HTCFG_SDIO_DAT0_GPIO_PIN, AFIO_FUN_SDIO);
+        AFIO_GPxConfig(HTCFG_SDIO_DAT1_GPIO_ID, HTCFG_SDIO_DAT1_GPIO_PIN, AFIO_FUN_SDIO);
+        AFIO_GPxConfig(HTCFG_SDIO_DAT2_GPIO_ID, HTCFG_SDIO_DAT2_GPIO_PIN, AFIO_FUN_SDIO);
+        AFIO_GPxConfig(HTCFG_SDIO_DAT3_GPIO_ID, HTCFG_SDIO_DAT3_GPIO_PIN, AFIO_FUN_SDIO);
+        /* 配置SDIO引脚驱动能力 */
+        GPIO_DriveConfig(HTCFG_SDIO_CLK_GPIO_PORT, HTCFG_SDIO_CLK_GPIO_PIN, GPIO_DV_8MA);
+        GPIO_DriveConfig(HTCFG_SDIO_CMD_GPIO_PORT, HTCFG_SDIO_CMD_GPIO_PIN, GPIO_DV_8MA);
+        GPIO_DriveConfig(HTCFG_SDIO_DAT0_GPIO_PORT, HTCFG_SDIO_DAT0_GPIO_PIN, GPIO_DV_8MA);
+        GPIO_DriveConfig(HTCFG_SDIO_DAT1_GPIO_PORT, HTCFG_SDIO_DAT1_GPIO_PIN, GPIO_DV_8MA);
+        GPIO_DriveConfig(HTCFG_SDIO_DAT2_GPIO_PORT, HTCFG_SDIO_DAT2_GPIO_PIN, GPIO_DV_8MA);
+        GPIO_DriveConfig(HTCFG_SDIO_DAT3_GPIO_PORT, HTCFG_SDIO_DAT3_GPIO_PIN, GPIO_DV_8MA);
+
+    }
+}
+#endif /* BSP_USING_SDIO */

+ 246 - 262
bsp/ht32/ht32f12366/project.uvoptx

@@ -73,7 +73,7 @@
         <LExpSel>0</LExpSel>
       </OPTXL>
       <OPTFL>
-        <tvExp>1</tvExp>
+        <tvExp>0</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
@@ -186,18 +186,6 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>applications\test.c</PathWithFileName>
-      <FilenameWithoutPath>test.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
   </Group>
 
   <Group>
@@ -208,7 +196,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>3</FileNumber>
+      <FileNumber>2</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -220,7 +208,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
+      <FileNumber>3</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -232,7 +220,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>5</FileNumber>
+      <FileNumber>4</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -244,7 +232,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>6</FileNumber>
+      <FileNumber>5</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -256,7 +244,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>7</FileNumber>
+      <FileNumber>6</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -268,7 +256,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -280,7 +268,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>9</FileNumber>
+      <FileNumber>8</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -292,7 +280,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>10</FileNumber>
+      <FileNumber>9</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -312,7 +300,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -324,55 +312,31 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c-bit-ops.c</PathWithFileName>
-      <FilenameWithoutPath>i2c-bit-ops.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c_core.c</PathWithFileName>
-      <FilenameWithoutPath>i2c_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c_dev.c</PathWithFileName>
-      <FilenameWithoutPath>i2c_dev.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_comm.c</PathWithFileName>
+      <FilenameWithoutPath>completion_comm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\ipc\completion.c</PathWithFileName>
-      <FilenameWithoutPath>completion.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_up.c</PathWithFileName>
+      <FilenameWithoutPath>completion_up.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -384,7 +348,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -396,7 +360,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -408,7 +372,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -420,7 +384,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -432,7 +396,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -444,7 +408,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -456,73 +420,25 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\misc\adc.c</PathWithFileName>
-      <FilenameWithoutPath>adc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\pin\pin.c</PathWithFileName>
-      <FilenameWithoutPath>pin.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\serial\serial.c</PathWithFileName>
-      <FilenameWithoutPath>serial.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\spi\spi_core.c</PathWithFileName>
-      <FilenameWithoutPath>spi_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\spi\spi_dev.c</PathWithFileName>
-      <FilenameWithoutPath>spi_dev.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\pin\dev_pin.c</PathWithFileName>
+      <FilenameWithoutPath>dev_pin.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\watchdog\watchdog.c</PathWithFileName>
-      <FilenameWithoutPath>watchdog.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\serial\dev_serial.c</PathWithFileName>
+      <FilenameWithoutPath>dev_serial.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -536,7 +452,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -548,7 +464,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -560,7 +476,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -572,7 +488,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -584,7 +500,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -596,7 +512,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -616,31 +532,31 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\shell.c</PathWithFileName>
-      <FilenameWithoutPath>shell.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\cmd.c</PathWithFileName>
+      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\msh.c</PathWithFileName>
-      <FilenameWithoutPath>msh.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\shell.c</PathWithFileName>
+      <FilenameWithoutPath>shell.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -652,13 +568,13 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\cmd.c</PathWithFileName>
-      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\msh.c</PathWithFileName>
+      <FilenameWithoutPath>msh.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -672,7 +588,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -684,7 +600,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -696,67 +612,67 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\idle.c</PathWithFileName>
-      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\cpu_up.c</PathWithFileName>
+      <FilenameWithoutPath>cpu_up.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\ipc.c</PathWithFileName>
-      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\defunct.c</PathWithFileName>
+      <FilenameWithoutPath>defunct.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\irq.c</PathWithFileName>
-      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\idle.c</PathWithFileName>
+      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\klibc\kstdio.c</PathWithFileName>
-      <FilenameWithoutPath>kstdio.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\ipc.c</PathWithFileName>
+      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\klibc\kstring.c</PathWithFileName>
-      <FilenameWithoutPath>kstring.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\irq.c</PathWithFileName>
+      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -768,7 +684,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -780,7 +696,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -792,7 +708,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -804,7 +720,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -816,7 +732,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -828,7 +744,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -840,7 +756,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -852,7 +768,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -865,14 +781,82 @@
   </Group>
 
   <Group>
-    <GroupName>libcpu</GroupName>
+    <GroupName>klibc</GroupName>
     <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>48</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstdio.c</PathWithFileName>
+      <FilenameWithoutPath>kstdio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>49</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kerrno.c</PathWithFileName>
+      <FilenameWithoutPath>kerrno.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>50</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsnprintf_tiny.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsnprintf_tiny.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>51</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstring.c</PathWithFileName>
+      <FilenameWithoutPath>kstring.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>52</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsscanf.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsscanf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>libcpu</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -883,8 +867,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -895,8 +879,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -907,8 +891,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>56</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -919,8 +903,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -939,43 +923,67 @@
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>58</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2s.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_i2s.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>59</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_mctm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_mctm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_wdt.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_wdt.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_bftm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_bftm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sci.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_sci.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_flash.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_flash.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rstcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_rstcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_tm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_tm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
@@ -987,278 +995,254 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_tm.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_tm.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ebi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_ebi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ckcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_ckcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_exti.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_exti.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usart.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_usart.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_crc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_crc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_aes.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_aes.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rtc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_rtc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_flash.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_flash.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rstcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_rstcu.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_gpio.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_aes.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_aes.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32_cm3_misc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32_cm3_misc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Source\system_ht32f1xxxx_02.c</PathWithFileName>
+      <FilenameWithoutPath>system_ht32f1xxxx_02.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_crc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_crc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_cmp.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_cmp.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sdio.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_sdio.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32_cm3_misc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32_cm3_misc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>73</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ebi.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_ebi.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sci.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_sci.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>74</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_cmp.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_cmp.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pwrcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_pwrcu.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>75</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f2xxxx_csif.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f2xxxx_csif.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_spi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_spi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>76</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2c.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_i2c.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_adc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_adc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>77</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_adc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_adc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sdio.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_sdio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>78</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pwrcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_pwrcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usart.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_usart.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>79</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pdma.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_pdma.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ckcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_ckcu.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>80</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Source\system_ht32f1xxxx_02.c</PathWithFileName>
-      <FilenameWithoutPath>system_ht32f1xxxx_02.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_gpio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>81</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_mctm.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_mctm.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pdma.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_pdma.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>82</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_spi.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_spi.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f2xxxx_csif.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f2xxxx_csif.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>83</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_bftm.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_bftm.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_wdt.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_wdt.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>84</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2s.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_i2s.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>85</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_exti.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_exti.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>86</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rtc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f1xxxx_rtc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2c.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f1xxxx_i2c.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>

+ 111 - 416
bsp/ht32/ht32f12366/project.uvprojx

@@ -15,8 +15,8 @@
         <TargetCommonOption>
           <Device>HT32F12366</Device>
           <Vendor>Holtek</Vendor>
-          <PackID>Holtek.HT32_DFP.1.0.19</PackID>
-          <PackURL>http://mcu.holtek.com.tw/pack</PackURL>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
           <Cpu>IRAM(0x20000000,0x20000) IROM(0x00000000,0x3FC00) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -332,10 +332,10 @@
             <v6WtE>0</v6WtE>
             <v6Rtti>0</v6Rtti>
             <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__STDC_LIMIT_MACROS, RT_USING_ARMLIBC, RT_USING_LIBC, USE_HT32F12366_SK, USE_HT32F12365_66, USE_MEM_HT32F12366, __CLK_TCK=RT_TICK_PER_SECOND, USE_HT32_DRIVER, __RTTHREAD__</Define>
+              <MiscControls>--gnu</MiscControls>
+              <Define>__CLK_TCK=RT_TICK_PER_SECOND, USE_HT32_DRIVER, USE_HT32F12366_SK, USE_HT32F12365_66, USE_MEM_HT32F12366, __RTTHREAD__, __STDC_LIMIT_MACROS, RT_USING_LIBC, RT_USING_ARMLIBC</Define>
               <Undefine></Undefine>
-              <IncludePath>..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;..\..\..\include;..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\inc;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\include;..\libraries\ht32_drivers;board\inc;..\..\..\libcpu\arm\common;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;applications;..\libraries\HT32_STD_1xxxx_FWLib\library\CMSIS\Include;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\drivers\include;.;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\poll;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\include;..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Include;..\..\..\components\finsh;..\..\..\components\drivers\spi;..\..\..\components\drivers\include;..\..\..\libcpu\arm\cortex-m3</IncludePath>
+              <IncludePath>..\..\..\libcpu\arm\common;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\posix\io\eventfd;board\inc;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\finsh;..\..\..\components\libc\posix\ipc;..\libraries\usbd_library\inc;..\libraries\ht32_drivers;applications;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\poll;..\..\..\include;..\..\..\components\drivers\smp_call;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\inc;.;..\libraries\HT32_STD_1xxxx_FWLib\library\CMSIS\Include;..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Include;..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\phy;..\..\..\components\drivers\include</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -384,11 +384,6 @@
               <FileType>1</FileType>
               <FilePath>applications\main.c</FilePath>
             </File>
-            <File>
-              <FileName>test.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>applications\test.c</FilePath>
-            </File>
           </Files>
         </Group>
         <Group>
@@ -495,119 +490,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>i2c-bit-ops.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c-bit-ops.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>i2c_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c_core.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>i2c_dev.c</FileName>
+              <FileName>completion_comm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c_dev.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\completion_comm.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -660,9 +545,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>completion.c</FileName>
+              <FileName>completion_up.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\ipc\completion.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\completion_up.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1100,9 +985,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>adc.c</FileName>
+              <FileName>dev_pin.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\misc\adc.c</FilePath>
+              <FilePath>..\..\..\components\drivers\pin\dev_pin.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1155,229 +1040,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>pin.c</FileName>
+              <FileName>dev_serial.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\pin\pin.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>serial.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\serial\serial.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>spi_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\spi\spi_core.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>spi_dev.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\spi\spi_dev.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>watchdog.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\watchdog\watchdog.c</FilePath>
+              <FilePath>..\..\..\components\drivers\serial\dev_serial.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1470,14 +1135,14 @@
           <GroupName>Finsh</GroupName>
           <Files>
             <File>
-              <FileName>shell.c</FileName>
+              <FileName>cmd.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\shell.c</FilePath>
+              <FilePath>..\..\..\components\finsh\cmd.c</FilePath>
             </File>
             <File>
-              <FileName>msh.c</FileName>
+              <FileName>shell.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\msh.c</FilePath>
+              <FilePath>..\..\..\components\finsh\shell.c</FilePath>
             </File>
             <File>
               <FileName>msh_parse.c</FileName>
@@ -1485,9 +1150,9 @@
               <FilePath>..\..\..\components\finsh\msh_parse.c</FilePath>
             </File>
             <File>
-              <FileName>cmd.c</FileName>
+              <FileName>msh.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\cmd.c</FilePath>
+              <FilePath>..\..\..\components\finsh\msh.c</FilePath>
             </File>
           </Files>
         </Group>
@@ -1605,9 +1270,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>idle.c</FileName>
+              <FileName>cpu_up.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\idle.c</FilePath>
+              <FilePath>..\..\..\src\cpu_up.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1660,9 +1325,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>ipc.c</FileName>
+              <FileName>defunct.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\ipc.c</FilePath>
+              <FilePath>..\..\..\src\defunct.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1715,9 +1380,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>irq.c</FileName>
+              <FileName>idle.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\irq.c</FilePath>
+              <FilePath>..\..\..\src\idle.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1770,9 +1435,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>kstdio.c</FileName>
+              <FileName>ipc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\klibc\kstdio.c</FilePath>
+              <FilePath>..\..\..\src\ipc.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1825,9 +1490,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>kstring.c</FileName>
+              <FileName>irq.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\klibc\kstring.c</FilePath>
+              <FilePath>..\..\..\src\irq.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -2376,6 +2041,36 @@
             </File>
           </Files>
         </Group>
+        <Group>
+          <GroupName>klibc</GroupName>
+          <Files>
+            <File>
+              <FileName>kstdio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstdio.c</FilePath>
+            </File>
+            <File>
+              <FileName>kerrno.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kerrno.c</FilePath>
+            </File>
+            <File>
+              <FileName>rt_vsnprintf_tiny.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsnprintf_tiny.c</FilePath>
+            </File>
+            <File>
+              <FileName>kstring.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstring.c</FilePath>
+            </File>
+            <File>
+              <FileName>rt_vsscanf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsscanf.c</FilePath>
+            </File>
+          </Files>
+        </Group>
         <Group>
           <GroupName>libcpu</GroupName>
           <Files>
@@ -2410,24 +2105,24 @@
           <GroupName>Libraries</GroupName>
           <Files>
             <File>
-              <FileName>ht32f1xxxx_wdt.c</FileName>
+              <FileName>ht32f1xxxx_i2s.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_wdt.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2s.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_sci.c</FileName>
+              <FileName>ht32f1xxxx_mctm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sci.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_mctm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_rstcu.c</FileName>
+              <FileName>ht32f1xxxx_bftm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rstcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_bftm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_usbd.c</FileName>
+              <FileName>ht32f1xxxx_flash.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usbd.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_flash.c</FilePath>
             </File>
             <File>
               <FileName>ht32f1xxxx_tm.c</FileName>
@@ -2435,114 +2130,114 @@
               <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_tm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_ckcu.c</FileName>
+              <FileName>ht32f1xxxx_usbd.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ckcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usbd.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_usart.c</FileName>
+              <FileName>ht32f1xxxx_ebi.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usart.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ebi.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_aes.c</FileName>
+              <FileName>ht32f1xxxx_exti.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_aes.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_exti.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_flash.c</FileName>
+              <FileName>ht32f1xxxx_crc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_flash.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_crc.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_gpio.c</FileName>
+              <FileName>ht32f1xxxx_rtc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_gpio.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rtc.c</FilePath>
             </File>
             <File>
-              <FileName>ht32_cm3_misc.c</FileName>
+              <FileName>ht32f1xxxx_rstcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32_cm3_misc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rstcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_crc.c</FileName>
+              <FileName>ht32f1xxxx_aes.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_crc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_aes.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_sdio.c</FileName>
+              <FileName>system_ht32f1xxxx_02.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sdio.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Source\system_ht32f1xxxx_02.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_ebi.c</FileName>
+              <FileName>ht32f1xxxx_cmp.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ebi.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_cmp.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_cmp.c</FileName>
+              <FileName>ht32_cm3_misc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_cmp.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32_cm3_misc.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f2xxxx_csif.c</FileName>
+              <FileName>ht32f1xxxx_sci.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f2xxxx_csif.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sci.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_i2c.c</FileName>
+              <FileName>ht32f1xxxx_pwrcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2c.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pwrcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_adc.c</FileName>
+              <FileName>ht32f1xxxx_spi.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_adc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_spi.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_pwrcu.c</FileName>
+              <FileName>ht32f1xxxx_adc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pwrcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_adc.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_pdma.c</FileName>
+              <FileName>ht32f1xxxx_sdio.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pdma.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_sdio.c</FilePath>
             </File>
             <File>
-              <FileName>system_ht32f1xxxx_02.c</FileName>
+              <FileName>ht32f1xxxx_usart.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\Device\Holtek\HT32F1xxxx\Source\system_ht32f1xxxx_02.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_usart.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_mctm.c</FileName>
+              <FileName>ht32f1xxxx_ckcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_mctm.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_ckcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_spi.c</FileName>
+              <FileName>ht32f1xxxx_gpio.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_spi.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_gpio.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_bftm.c</FileName>
+              <FileName>ht32f1xxxx_pdma.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_bftm.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_pdma.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_i2s.c</FileName>
+              <FileName>ht32f2xxxx_csif.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2s.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f2xxxx_csif.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_exti.c</FileName>
+              <FileName>ht32f1xxxx_wdt.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_exti.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_wdt.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f1xxxx_rtc.c</FileName>
+              <FileName>ht32f1xxxx_i2c.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_rtc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_1xxxx_FWLib\library\HT32F1xxxx_Driver\src\ht32f1xxxx_i2c.c</FilePath>
             </File>
           </Files>
         </Group>

+ 130 - 17
bsp/ht32/ht32f12366/rtconfig.h

@@ -1,29 +1,81 @@
 #ifndef RT_CONFIG_H__
 #define RT_CONFIG_H__
 
-/* Automatically generated file; DO NOT EDIT. */
-/* RT-Thread Configuration */
-
 /* RT-Thread Kernel */
 
+/* klibc options */
+
+/* rt_vsnprintf options */
+
+/* end of rt_vsnprintf options */
+
+/* rt_vsscanf options */
+
+/* end of rt_vsscanf options */
+
+/* rt_memset options */
+
+/* end of rt_memset options */
+
+/* rt_memcpy options */
+
+/* end of rt_memcpy options */
+
+/* rt_memmove options */
+
+/* end of rt_memmove options */
+
+/* rt_memcmp options */
+
+/* end of rt_memcmp options */
+
+/* rt_strstr options */
+
+/* end of rt_strstr options */
+
+/* rt_strcasecmp options */
+
+/* end of rt_strcasecmp options */
+
+/* rt_strncpy options */
+
+/* end of rt_strncpy options */
+
+/* rt_strcpy options */
+
+/* end of rt_strcpy options */
+
+/* rt_strncmp options */
+
+/* end of rt_strncmp options */
+
+/* rt_strcmp options */
+
+/* end of rt_strcmp options */
+
+/* rt_strlen options */
+
+/* end of rt_strlen options */
+
+/* rt_strnlen options */
+
+/* end of rt_strnlen options */
+/* end of klibc options */
 #define RT_NAME_MAX 8
 #define RT_CPUS_NR 1
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
 #define RT_TICK_PER_SECOND 1000
-#define RT_USING_OVERFLOW_CHECK
 #define RT_USING_HOOK
 #define RT_HOOK_USING_FUNC_PTR
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
-#define IDLE_THREAD_STACK_SIZE 256
+#define IDLE_THREAD_STACK_SIZE 512
 
-/* kservice optimization */
+/* kservice options */
 
-#define RT_USING_DEBUG
-#define RT_DEBUGING_COLOR
-#define RT_DEBUGING_CONTEXT
+/* end of kservice options */
 
 /* Inter-Thread communication */
 
@@ -32,6 +84,7 @@
 #define RT_USING_EVENT
 #define RT_USING_MAILBOX
 #define RT_USING_MESSAGEQUEUE
+/* end of Inter-Thread communication */
 
 /* Memory Management */
 
@@ -41,12 +94,14 @@
 #define RT_MEMHEAP_FAST_MODE
 #define RT_USING_SMALL_MEM_AS_HEAP
 #define RT_USING_HEAP
+/* end of Memory Management */
 #define RT_USING_DEVICE
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLE_DEVICE_NAME "usart0"
 #define RT_VER_NUM 0x50200
 #define RT_BACKTRACE_LEVEL_MAX_NR 32
+/* end of RT-Thread Kernel */
 #define RT_USING_HW_ATOMIC
 #define RT_USING_CPU_FFS
 #define ARCH_ARM
@@ -76,6 +131,7 @@
 
 /* DFS: device virtual file system */
 
+/* end of DFS: device virtual file system */
 
 /* Device Drivers */
 
@@ -85,15 +141,8 @@
 #define RT_USING_SERIAL_V1
 #define RT_SERIAL_USING_DMA
 #define RT_SERIAL_RB_BUFSZ 64
-#define RT_USING_I2C
-#define RT_USING_I2C_BITOPS
-#define RT_USING_ADC
-#define RT_USING_SPI
-#define RT_USING_WDT
 #define RT_USING_PIN
-
-/* Using USB */
-
+/* end of Device Drivers */
 
 /* C/C++ and POSIX layer */
 
@@ -105,6 +154,8 @@
 #define RT_LIBC_TZ_DEFAULT_HOUR 8
 #define RT_LIBC_TZ_DEFAULT_MIN 0
 #define RT_LIBC_TZ_DEFAULT_SEC 0
+/* end of Timezone and Daylight Saving Time */
+/* end of ISO-ANSI C layer */
 
 /* POSIX (Portable Operating System Interface) layer */
 
@@ -114,18 +165,30 @@
 
 /* Socket is in the 'Network' category */
 
+/* end of Interprocess Communication (IPC) */
+/* end of POSIX (Portable Operating System Interface) layer */
+/* end of C/C++ and POSIX layer */
 
 /* Network */
 
+/* end of Network */
 
 /* Memory protection */
 
+/* end of Memory protection */
 
 /* Utilities */
 
+/* end of Utilities */
+
+/* Using USB legacy version */
+
+/* end of Using USB legacy version */
+/* end of RT-Thread Components */
 
 /* RT-Thread Utestcases */
 
+/* end of RT-Thread Utestcases */
 
 /* RT-Thread online packages */
 
@@ -136,57 +199,78 @@
 
 /* Marvell WiFi */
 
+/* end of Marvell WiFi */
 
 /* Wiced WiFi */
 
+/* end of Wiced WiFi */
 
 /* CYW43012 WiFi */
 
+/* end of CYW43012 WiFi */
 
 /* BL808 WiFi */
 
+/* end of BL808 WiFi */
 
 /* CYW43439 WiFi */
 
+/* end of CYW43439 WiFi */
+/* end of Wi-Fi */
 
 /* IoT Cloud */
 
+/* end of IoT Cloud */
+/* end of IoT - internet of things */
 
 /* security packages */
 
+/* end of security packages */
 
 /* language packages */
 
 /* JSON: JavaScript Object Notation, a lightweight data-interchange format */
 
+/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */
 
 /* XML: Extensible Markup Language */
 
+/* end of XML: Extensible Markup Language */
+/* end of language packages */
 
 /* multimedia packages */
 
 /* LVGL: powerful and easy-to-use embedded GUI library */
 
+/* end of LVGL: powerful and easy-to-use embedded GUI library */
 
 /* u8g2: a monochrome graphic library */
 
+/* end of u8g2: a monochrome graphic library */
+/* end of multimedia packages */
 
 /* tools packages */
 
+/* end of tools packages */
 
 /* system packages */
 
 /* enhanced kernel services */
 
+/* end of enhanced kernel services */
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
+/* end of acceleration: Assembly language or algorithmic acceleration packages */
 
 /* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
 
+/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
+/* end of Micrium: Micrium software products porting for RT-Thread */
+/* end of system packages */
 
 /* peripheral libraries and drivers */
 
@@ -194,69 +278,94 @@
 
 /* STM32 HAL & SDK Drivers */
 
+/* end of STM32 HAL & SDK Drivers */
 
 /* Infineon HAL Packages */
 
+/* end of Infineon HAL Packages */
 
 /* Kendryte SDK */
 
+/* end of Kendryte SDK */
+/* end of HAL & SDK Drivers */
 
 /* sensors drivers */
 
+/* end of sensors drivers */
 
 /* touch drivers */
 
+/* end of touch drivers */
+/* end of peripheral libraries and drivers */
 
 /* AI packages */
 
+/* end of AI packages */
 
 /* Signal Processing and Control Algorithm Packages */
 
+/* end of Signal Processing and Control Algorithm Packages */
 
 /* miscellaneous packages */
 
 /* project laboratory */
 
+/* end of project laboratory */
+
 /* samples: kernel and components samples */
 
+/* end of samples: kernel and components samples */
 
 /* entertainment: terminal games and other interesting software packages */
 
+/* end of entertainment: terminal games and other interesting software packages */
+/* end of miscellaneous packages */
 
 /* Arduino libraries */
 
 
 /* Projects and Demos */
 
+/* end of Projects and Demos */
 
 /* Sensors */
 
+/* end of Sensors */
 
 /* Display */
 
+/* end of Display */
 
 /* Timing */
 
+/* end of Timing */
 
 /* Data Processing */
 
+/* end of Data Processing */
 
 /* Data Storage */
 
 /* Communication */
 
+/* end of Communication */
 
 /* Device Control */
 
+/* end of Device Control */
 
 /* Other */
 
+/* end of Other */
 
 /* Signal IO */
 
+/* end of Signal IO */
 
 /* Uncategorized */
 
+/* end of Arduino libraries */
+/* end of RT-Thread online packages */
 #define SOC_FAMILY_HT32
 #define SOC_SERIES_HT32F1
 
@@ -267,9 +376,11 @@
 #define SOC_KERNEL
 #define CORTEX_M3
 #define SOC_HT32F12366
+/* end of Chip Configuration */
 
 /* Onboard Peripheral Drivers */
 
+/* end of Onboard Peripheral Drivers */
 
 /* On-chip Peripheral Drivers */
 
@@ -277,8 +388,10 @@
 #define BSP_USING_UART
 #define BSP_USING_USART0
 #define BSP_USING_USART0_NAME "usart0"
+/* end of On-chip Peripheral Drivers */
 
 /* Board extended module Drivers */
 
+/* end of Hardware Drivers Config */
 
 #endif

+ 1 - 1
bsp/ht32/ht32f12366/template.uvoptx

@@ -73,7 +73,7 @@
         <LExpSel>0</LExpSel>
       </OPTXL>
       <OPTFL>
-        <tvExp>1</tvExp>
+        <tvExp>0</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>

+ 3 - 3
bsp/ht32/ht32f12366/template.uvprojx

@@ -15,8 +15,8 @@
         <TargetCommonOption>
           <Device>HT32F12366</Device>
           <Vendor>Holtek</Vendor>
-          <PackID>Holtek.HT32_DFP.1.0.19</PackID>
-          <PackURL>http://mcu.holtek.com.tw/pack</PackURL>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
           <Cpu>IRAM(0x20000000,0x20000) IROM(0x00000000,0x3FC00) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -332,7 +332,7 @@
             <v6WtE>0</v6WtE>
             <v6Rtti>0</v6Rtti>
             <VariousControls>
-              <MiscControls></MiscControls>
+              <MiscControls>--gnu</MiscControls>
               <Define></Define>
               <Undefine></Undefine>
               <IncludePath></IncludePath>

+ 216 - 42
bsp/ht32/ht32f52352/.config

@@ -1,15 +1,117 @@
+
 #
-# Automatically generated file; DO NOT EDIT.
-# RT-Thread Configuration
+# RT-Thread Kernel
 #
 
 #
-# RT-Thread Kernel
+# klibc options
+#
+
+#
+# rt_vsnprintf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set
+# end of rt_vsnprintf options
+
+#
+# rt_vsscanf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set
+# end of rt_vsscanf options
+
+#
+# rt_memset options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set
+# end of rt_memset options
+
+#
+# rt_memcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set
+# end of rt_memcpy options
+
+#
+# rt_memmove options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set
+# end of rt_memmove options
+
+#
+# rt_memcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set
+# end of rt_memcmp options
+
+#
+# rt_strstr options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set
+# end of rt_strstr options
+
+#
+# rt_strcasecmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set
+# end of rt_strcasecmp options
+
+#
+# rt_strncpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set
+# end of rt_strncpy options
+
+#
+# rt_strcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set
+# end of rt_strcpy options
+
+#
+# rt_strncmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set
+# end of rt_strncmp options
+
+#
+# rt_strcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set
+# end of rt_strcmp options
+
+#
+# rt_strlen options
 #
+# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set
+# end of rt_strlen options
+
+#
+# rt_strnlen options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set
+# end of rt_strnlen options
+
+# CONFIG_RT_UTEST_TC_USING_KLIBC is not set
+# end of klibc options
+
 CONFIG_RT_NAME_MAX=8
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
-# CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
+# CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_AMP is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_CPUS_NR=1
@@ -19,23 +121,24 @@ CONFIG_RT_THREAD_PRIORITY_32=y
 # CONFIG_RT_THREAD_PRIORITY_256 is not set
 CONFIG_RT_THREAD_PRIORITY_MAX=32
 CONFIG_RT_TICK_PER_SECOND=1000
-CONFIG_RT_USING_OVERFLOW_CHECK=y
+# CONFIG_RT_USING_OVERFLOW_CHECK is not set
 CONFIG_RT_USING_HOOK=y
 CONFIG_RT_HOOK_USING_FUNC_PTR=y
 # CONFIG_RT_USING_HOOKLIST is not set
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
-CONFIG_IDLE_THREAD_STACK_SIZE=256
+CONFIG_IDLE_THREAD_STACK_SIZE=512
 # CONFIG_RT_USING_TIMER_SOFT is not set
+# CONFIG_RT_USING_CPU_USAGE_TRACER is not set
 
 #
-# kservice optimization
+# kservice options
 #
-# CONFIG_RT_KSERVICE_USING_STDLIB is not set
-# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
 # CONFIG_RT_USING_TINY_FFS is not set
-# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+# end of kservice options
+
 # CONFIG_RT_USING_DEBUG is not set
+# CONFIG_RT_USING_CI_ACTION is not set
 
 #
 # Inter-Thread communication
@@ -47,6 +150,7 @@ CONFIG_RT_USING_MAILBOX=y
 CONFIG_RT_USING_MESSAGEQUEUE=y
 # CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set
 # CONFIG_RT_USING_SIGNALS is not set
+# end of Inter-Thread communication
 
 #
 # Memory Management
@@ -65,22 +169,20 @@ CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
 # CONFIG_RT_USING_MEMTRACE is not set
 # CONFIG_RT_USING_HEAP_ISR is not set
 CONFIG_RT_USING_HEAP=y
+# end of Memory Management
+
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
 # CONFIG_RT_USING_THREADSAFE_PRINTF is not set
-# CONFIG_RT_USING_SCHED_THREAD_CTX is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="usart1"
 CONFIG_RT_VER_NUM=0x50200
 # CONFIG_RT_USING_STDC_ATOMIC is not set
 CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32
-# CONFIG_RT_USING_CACHE is not set
-# CONFIG_RT_USING_HW_ATOMIC is not set
-# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set
-# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
-# CONFIG_RT_USING_CPU_FFS is not set
+# end of RT-Thread Kernel
+
 CONFIG_ARCH_ARM=y
 CONFIG_ARCH_ARM_CORTEX_M=y
 CONFIG_ARCH_ARM_CORTEX_M0=y
@@ -90,7 +192,7 @@ CONFIG_ARCH_ARM_CORTEX_M0=y
 #
 CONFIG_RT_USING_COMPONENTS_INIT=y
 CONFIG_RT_USING_USER_MAIN=y
-CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=1024
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
 CONFIG_RT_USING_MSH=y
@@ -114,12 +216,15 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y
 # DFS: device virtual file system
 #
 # CONFIG_RT_USING_DFS is not set
+# end of DFS: device virtual file system
+
 # CONFIG_RT_USING_FAL is not set
 
 #
 # Device Drivers
 #
 # CONFIG_RT_USING_DM is not set
+# CONFIG_RT_USING_DEV_BUS is not set
 CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_UNAMED_PIPE_NUMBER=64
 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
@@ -128,53 +233,40 @@ CONFIG_RT_USING_SERIAL_V1=y
 # CONFIG_RT_USING_SERIAL_V2 is not set
 # CONFIG_RT_SERIAL_USING_DMA is not set
 CONFIG_RT_SERIAL_RB_BUFSZ=64
+# CONFIG_RT_USING_SERIAL_BYPASS is not set
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_CPUTIME is not set
-CONFIG_RT_USING_I2C=y
-# CONFIG_RT_I2C_DEBUG is not set
-CONFIG_RT_USING_I2C_BITOPS=y
-# CONFIG_RT_I2C_BITOPS_DEBUG is not set
-# CONFIG_RT_USING_SOFT_I2C is not set
+# CONFIG_RT_USING_I2C is not set
 # CONFIG_RT_USING_PHY is not set
-CONFIG_RT_USING_ADC=y
+# CONFIG_RT_USING_PHY_V2 is not set
+# CONFIG_RT_USING_ADC is not set
 # CONFIG_RT_USING_DAC is not set
 # CONFIG_RT_USING_NULL is not set
 # CONFIG_RT_USING_ZERO is not set
 # CONFIG_RT_USING_RANDOM is not set
 # CONFIG_RT_USING_PWM is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+# CONFIG_RT_USING_INPUT_CAPTURE is not set
 # CONFIG_RT_USING_MTD_NOR is not set
 # CONFIG_RT_USING_MTD_NAND is not set
 # CONFIG_RT_USING_PM is not set
 # CONFIG_RT_USING_RTC is not set
 # CONFIG_RT_USING_SDIO is not set
-CONFIG_RT_USING_SPI=y
-# CONFIG_RT_USING_SPI_BITOPS is not set
-# CONFIG_RT_USING_QSPI is not set
-# CONFIG_RT_USING_SPI_MSD is not set
-# CONFIG_RT_USING_SFUD is not set
-# CONFIG_RT_USING_ENC28J60 is not set
-# CONFIG_RT_USING_SPI_WIFI is not set
-CONFIG_RT_USING_WDT=y
+# CONFIG_RT_USING_SPI is not set
+# CONFIG_RT_USING_WDT is not set
 # CONFIG_RT_USING_AUDIO is not set
 # CONFIG_RT_USING_SENSOR is not set
 # CONFIG_RT_USING_TOUCH is not set
 # CONFIG_RT_USING_LCD is not set
 # CONFIG_RT_USING_HWCRYPTO is not set
-# CONFIG_RT_USING_PULSE_ENCODER is not set
-# CONFIG_RT_USING_INPUT_CAPTURE is not set
-# CONFIG_RT_USING_DEV_BUS is not set
 # CONFIG_RT_USING_WIFI is not set
+# CONFIG_RT_USING_BLK is not set
 # CONFIG_RT_USING_VIRTIO is not set
 CONFIG_RT_USING_PIN=y
 # CONFIG_RT_USING_KTIME is not set
 # CONFIG_RT_USING_HWTIMER is not set
-
-#
-# Using USB
-#
-# CONFIG_RT_USING_USB is not set
-# CONFIG_RT_USING_USB_HOST is not set
-# CONFIG_RT_USING_USB_DEVICE is not set
+# CONFIG_RT_USING_CHERRYUSB is not set
+# end of Device Drivers
 
 #
 # C/C++ and POSIX layer
@@ -192,6 +284,8 @@ CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y
 CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8
 CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0
 CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
+# end of Timezone and Daylight Saving Time
+# end of ISO-ANSI C layer
 
 #
 # POSIX (Portable Operating System Interface) layer
@@ -213,7 +307,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # Socket is in the 'Network' category
 #
+# end of Interprocess Communication (IPC)
+# end of POSIX (Portable Operating System Interface) layer
+
 # CONFIG_RT_USING_CPLUSPLUS is not set
+# end of C/C++ and POSIX layer
 
 #
 # Network
@@ -222,12 +320,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_NETDEV is not set
 # CONFIG_RT_USING_LWIP is not set
 # CONFIG_RT_USING_AT is not set
+# end of Network
 
 #
 # Memory protection
 #
 # CONFIG_RT_USING_MEM_PROTECTION is not set
 # CONFIG_RT_USING_HW_STACK_GUARD is not set
+# end of Memory protection
 
 #
 # Utilities
@@ -239,12 +339,25 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_RESOURCE_ID is not set
 # CONFIG_RT_USING_ADT is not set
 # CONFIG_RT_USING_RT_LINK is not set
+# end of Utilities
+
 # CONFIG_RT_USING_VBUS is not set
 
+#
+# Using USB legacy version
+#
+# CONFIG_RT_USING_USB_HOST is not set
+# CONFIG_RT_USING_USB_DEVICE is not set
+# end of Using USB legacy version
+
+# CONFIG_RT_USING_FDT is not set
+# end of RT-Thread Components
+
 #
 # RT-Thread Utestcases
 #
 # CONFIG_RT_USING_UTESTCASES is not set
+# end of RT-Thread Utestcases
 
 #
 # RT-Thread online packages
@@ -253,7 +366,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # IoT - internet of things
 #
-# CONFIG_PKG_USING_LWIP is not set
 # CONFIG_PKG_USING_LORAWAN_DRIVER is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
 # CONFIG_PKG_USING_UMQTT is not set
@@ -276,27 +388,35 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # Marvell WiFi
 #
 # CONFIG_PKG_USING_WLANMARVELL is not set
+# end of Marvell WiFi
 
 #
 # Wiced WiFi
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
+# end of Wiced WiFi
+
 # CONFIG_PKG_USING_RW007 is not set
 
 #
 # CYW43012 WiFi
 #
 # CONFIG_PKG_USING_WLAN_CYW43012 is not set
+# end of CYW43012 WiFi
 
 #
 # BL808 WiFi
 #
 # CONFIG_PKG_USING_WLAN_BL808 is not set
+# end of BL808 WiFi
 
 #
 # CYW43439 WiFi
 #
 # CONFIG_PKG_USING_WLAN_CYW43439 is not set
+# end of CYW43439 WiFi
+# end of Wi-Fi
+
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -319,6 +439,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# end of IoT Cloud
+
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
@@ -362,6 +484,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
 # CONFIG_PKG_USING_LHC_MODBUS is not set
 # CONFIG_PKG_USING_QMODBUS is not set
+# end of IoT - internet of things
 
 #
 # security packages
@@ -372,6 +495,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_YD_CRYPTO is not set
+# end of security packages
 
 #
 # language packages
@@ -387,18 +511,22 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PARSON is not set
+# end of JSON: JavaScript Object Notation, a lightweight data-interchange format
 
 #
 # XML: Extensible Markup Language
 #
 # CONFIG_PKG_USING_SIMPLE_XML is not set
 # CONFIG_PKG_USING_EZXML is not set
+# end of XML: Extensible Markup Language
+
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_PIKASCRIPT is not set
 # CONFIG_PKG_USING_RTT_RUST is not set
+# end of language packages
 
 #
 # multimedia packages
@@ -410,12 +538,15 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_LVGL is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+# end of LVGL: powerful and easy-to-use embedded GUI library
 
 #
 # u8g2: a monochrome graphic library
 #
 # CONFIG_PKG_USING_U8G2_OFFICIAL is not set
 # CONFIG_PKG_USING_U8G2 is not set
+# end of u8g2: a monochrome graphic library
+
 # CONFIG_PKG_USING_OPENMV is not set
 # CONFIG_PKG_USING_MUPDF is not set
 # CONFIG_PKG_USING_STEMWIN is not set
@@ -435,6 +566,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_3GPP_AMRNB is not set
+# end of multimedia packages
 
 #
 # tools packages
@@ -484,6 +616,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_VOFA_PLUS is not set
 # CONFIG_PKG_USING_RT_TRACE is not set
 # CONFIG_PKG_USING_ZDEBUG is not set
+# end of tools packages
 
 #
 # system packages
@@ -495,6 +628,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_RT_MEMCPY_CM is not set
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
+# end of enhanced kernel services
+
 # CONFIG_PKG_USING_AUNITY is not set
 
 #
@@ -503,6 +638,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
 # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
 # CONFIG_PKG_USING_QFPLIB_M3 is not set
+# end of acceleration: Assembly language or algorithmic acceleration packages
 
 #
 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
@@ -513,6 +649,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_CMSIS_NN is not set
 # CONFIG_PKG_USING_CMSIS_RTOS1 is not set
 # CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
 
 #
 # Micrium: Micrium software products porting for RT-Thread
@@ -523,6 +660,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
+# end of Micrium: Micrium software products porting for RT-Thread
+
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
 # CONFIG_PKG_USING_LITEOS_SDK is not set
 # CONFIG_PKG_USING_TZ_DATABASE is not set
@@ -570,6 +709,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_RTP is not set
 # CONFIG_PKG_USING_REB is not set
 # CONFIG_PKG_USING_R_RHEALSTONE is not set
+# end of system packages
 
 #
 # peripheral libraries and drivers
@@ -586,6 +726,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set
 # CONFIG_PKG_USING_STM32WB55_SDK is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
+# end of STM32 HAL & SDK Drivers
 
 #
 # Infineon HAL Packages
@@ -600,6 +741,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_INFINEON_CSDIDAC is not set
 # CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set
 # CONFIG_PKG_USING_INFINEON_USBDEV is not set
+# end of Infineon HAL Packages
+
 # CONFIG_PKG_USING_BLUETRUM_SDK is not set
 # CONFIG_PKG_USING_EMBARC_BSP is not set
 # CONFIG_PKG_USING_ESP_IDF is not set
@@ -609,9 +752,12 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
+# end of Kendryte SDK
+
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+# end of HAL & SDK Drivers
 
 #
 # sensors drivers
@@ -681,6 +827,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_PAJ7620 is not set
 # CONFIG_PKG_USING_STHS34PF80 is not set
+# end of sensors drivers
 
 #
 # touch drivers
@@ -695,6 +842,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_XPT2046_TOUCH is not set
 # CONFIG_PKG_USING_CST816X is not set
 # CONFIG_PKG_USING_CST812T is not set
+# end of touch drivers
+
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -767,6 +916,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_BT_MX01 is not set
 # CONFIG_PKG_USING_RGPOWER is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
+# end of peripheral libraries and drivers
 
 #
 # AI packages
@@ -781,6 +931,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
 # CONFIG_PKG_USING_R_TINYMAIX is not set
+# end of AI packages
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -791,6 +942,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# end of Signal Processing and Control Algorithm Packages
 
 #
 # miscellaneous packages
@@ -799,6 +951,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # project laboratory
 #
+# end of project laboratory
 
 #
 # samples: kernel and components samples
@@ -807,6 +960,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
 # CONFIG_PKG_USING_NETWORK_SAMPLES is not set
 # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+# end of samples: kernel and components samples
 
 #
 # entertainment: terminal games and other interesting software packages
@@ -823,6 +977,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_MORSE is not set
 # CONFIG_PKG_USING_TINYSQUARE is not set
+# end of entertainment: terminal games and other interesting software packages
+
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -856,6 +1012,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_SOEM is not set
 # CONFIG_PKG_USING_QPARAM is not set
 # CONFIG_PKG_USING_CorevMCU_CLI is not set
+# end of miscellaneous packages
 
 #
 # Arduino libraries
@@ -871,6 +1028,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set
 # CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
 # CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
+# end of Projects and Demos
 
 #
 # Sensors
@@ -1011,6 +1169,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
 # CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
 # CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set
+# end of Sensors
 
 #
 # Display
@@ -1022,6 +1181,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
 # CONFIG_PKG_USING_SEEED_TM1637 is not set
+# end of Display
 
 #
 # Timing
@@ -1030,6 +1190,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
+# end of Timing
 
 #
 # Data Processing
@@ -1038,6 +1199,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
 # CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set
 # CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set
+# end of Data Processing
 
 #
 # Data Storage
@@ -1048,6 +1210,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
+# end of Communication
 
 #
 # Device Control
@@ -1059,12 +1222,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set
 # CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
+# end of Device Control
 
 #
 # Other
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
+# end of Other
 
 #
 # Signal IO
@@ -1077,10 +1242,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
+# end of Signal IO
 
 #
 # Uncategorized
 #
+# end of Arduino libraries
+# end of RT-Thread online packages
+
 CONFIG_SOC_FAMILY_HT32=y
 CONFIG_SOC_SERIES_HT32F5=y
 
@@ -1125,11 +1294,13 @@ CONFIG_SOC_HT32F52352=y
 # CONFIG_SOC_HT32F65240 is not set
 # CONFIG_SOC_HT32F67051 is not set
 # CONFIG_SOC_HT32F67741 is not set
+# end of Chip Configuration
 
 #
 # Onboard Peripheral Drivers
 #
 # CONFIG_BSP_USING_TEST is not set
+# end of Onboard Peripheral Drivers
 
 #
 # On-chip Peripheral Drivers
@@ -1145,7 +1316,10 @@ CONFIG_BSP_USING_USART1_NAME="usart1"
 # CONFIG_BSP_USING_I2C is not set
 # CONFIG_BSP_USING_ADC is not set
 # CONFIG_BSP_USING_WDT is not set
+# CONFIG_BSP_USING_USBD is not set
+# end of On-chip Peripheral Drivers
 
 #
 # Board extended module Drivers
 #
+# end of Hardware Drivers Config

+ 2 - 2
bsp/ht32/ht32f52352/README.md

@@ -41,8 +41,8 @@ ESK32-30501使用32位Arm® Cortex®-M0+高性能、低功耗单片机HT32F52352
 | UART | 支持  | UART0/1 |
 | SPI | 支持  | SPI0/1 |
 | I2C | 支持  | 硬件 I2C0/1 |
-| ADC | 暂不支持  |     |
-| WDT | 暂不支持  |     |
+| ADC | 支持  |     |
+| WDT | 支持  |     |
 
 ## 使用说明
 

+ 3 - 0
bsp/ht32/ht32f52352/SConstruct

@@ -53,6 +53,9 @@ rtconfig.BSP_LIBRARY_TYPE = ht32_library
 # include libraries
 objs.extend(SConscript(os.path.join(libraries_path_prefix, ht32_library, 'SConscript')))
 
+# include usb libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'usbd_library', 'SConscript')))
+
 # include drivers
 objs.extend(SConscript(os.path.join(libraries_path_prefix, 'ht32_drivers', 'SConscript')))
 

+ 95 - 7
bsp/ht32/ht32f52352/applications/test.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006-2024, RT-Thread Development Team
+ * Copyright (c) 2006-2025, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -58,20 +58,29 @@ static struct rt_semaphore rx_sem;
 static rt_mutex_t task_mutex = RT_NULL; /* task mutex */
 
 /* device handle */
+#ifdef BSP_USING_UART
 static rt_device_t serial;
+#endif
+#ifdef BSP_USING_WDT
 static rt_device_t wdt_dev;
-struct rt_i2c_bus_device *i2c_dev;
+#endif
+#ifdef BSP_USING_I2C
+static struct rt_i2c_bus_device *i2c_dev;
+#endif
+#ifdef BSP_USING_SPI
 static struct rt_spi_device *spi_dev;
+#endif
 
 /* In-file function declarations */
-static void sys_run_dir(void *parameter);
-static void gpio_output_test(void *parameter);
-static void gpio_input_test(void *parameter);
-static void key_iqr_handle(void *args);
+//static void sys_run_dir(void *parameter);
+//static void gpio_output_test(void *parameter);
+//static void gpio_input_test(void *parameter);
+//static void key_iqr_handle(void *args);
 
 /* Task registration */
 int task_registration(void)
 {
+//    USB_Configuration(RT_NULL);
     /* Create a dynamic mutex */
     task_mutex = rt_mutex_create("task_mutex", RT_IPC_FLAG_FIFO);
     if (task_mutex == RT_NULL)
@@ -90,6 +99,7 @@ int task_registration(void)
 INIT_BOARD_EXPORT(task_registration);
 
 /* System operation indicator */
+#ifdef BSP_USING_GPIO
 static void sys_run_dir(void *parameter)
 {
     rt_uint32_t e;
@@ -301,7 +311,9 @@ static int gpio_input_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(gpio_input_task, gpio input task operation);
+#endif
 /* uart test */
+#ifdef BSP_USING_UART
 static rt_err_t uart_iqr_handle(rt_device_t dev, rt_size_t size)
 {
     /* Serial port callback function */
@@ -396,7 +408,9 @@ static int uart_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(uart_task, uart device sample);
+#endif
 /* hw/sw iic test */
+#ifdef BSP_USING_I2C
 static void i2c_thread(void *parameter)
 {
     uint8_t write_addr = 0x00;
@@ -497,7 +511,9 @@ static int i2c_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(i2c_task, i2c device sample);
+#endif
 /* spi test */
+#ifdef BSP_USING_SPI
 static void spi_thread(void *parameter)
 {
     rt_uint8_t w25x_read_id = 0x9F;
@@ -584,7 +600,9 @@ static int spi_task(int argc, char *argv[])
     return ret;
 }
 MSH_CMD_EXPORT(spi_task, spi device sample);
+#endif
 /* adc test */
+#ifdef BSP_USING_ADC
 static void adc_test(void *parameter)
 {
     rt_uint32_t adc0_ch6_val,adc0_ch7_val;
@@ -640,8 +658,9 @@ static int adc_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(adc_task, adc task operation);
-
+#endif
 /* wdt test */
+#ifdef BSP_USING_WDT
 static void wdt_test(void)
 {
     rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
@@ -712,5 +731,74 @@ static int wdt_task(int argc, char *argv[])
     return -1;
 }
 MSH_CMD_EXPORT(wdt_task, wdt task operation);
+#endif
+/* usbd test */
+#ifdef BSP_USING_USBD
+static void usbd_test(void *parameter)
+{
+    rt_device_t dev = RT_NULL;
+    char dev_name[] = "vcom";
+    char buf[] = "usbd vcom test!\r\n";
+
+    dev = rt_device_find(dev_name);
+
+    if (dev)
+    {
+        rt_device_open(dev, RT_DEVICE_FLAG_RDWR);
+    }
+    else
+    {
+        rt_kprintf("Device with name %s not found.\n",dev_name);
+        rt_thread_t tid = rt_thread_self();
+        rt_thread_delete(tid);
+    }
+    while (1)
+    {
+        rt_device_write(dev, 0, buf, rt_strlen(buf));
+        rt_thread_mdelay(500);
+    }
+}
+
+static int usbd_task(int argc, char *argv[])
+{
+    rt_err_t ret = -RT_ERROR;
+
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            /* Gpio input test tasks */
+            rt_thread_t usbd_vcom_task = rt_thread_create("usbd_vcom_task",
+                                            usbd_test, RT_NULL,
+                                            THREAD_STACK_SIZE,
+                                            THREAD_PRIORITY, THREAD_TIMESLICE);
+            if (usbd_vcom_task != RT_NULL)
+            {
+                rt_thread_startup(usbd_vcom_task);
+                rt_kprintf("The usbd vcom task is registered.\n");
+            }
+            else
+            {
+                rt_kprintf("usbd vcom task registration failed.\n");
+            }
+            ret = RT_EOK;
+        }
+        else if(rt_strcmp(argv[1],"stop") == 0)
+        {
+            ret = RT_EOK;
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s stop\n",__func__);
+    }
+    return ret;
+}
+MSH_CMD_EXPORT(usbd_task, usbd task operation);
+
 
+#endif
 #endif /* BSP_USING_TEST */

+ 134 - 0
bsp/ht32/ht32f52352/board/Kconfig

@@ -306,6 +306,140 @@ menu "On-chip Peripheral Drivers"
         depends on BSP_USING_WDT
         string "wdt device name"
         default "wdt"
+
+    menuconfig BSP_USING_CAN
+        bool "Enable CAN"
+        depends on SOC_HT32F53241 || SOC_HT32F53242 || SOC_HT32F53252
+        default n
+        select RT_USING_CAN if BSP_USING_CAN
+        config BSP_USING_CAN_NAME
+        depends on BSP_USING_CAN
+        string "can device name"
+        default "can"
+        if BSP_USING_CAN
+            config CAN_DEFAULT_BASE_CONFIGURATION  
+                choice
+                    prompt "Default CAN baud rate"
+                    default BSP_USING_CAN500kBaud
+                    config BSP_USING_CAN1MBaud
+                        bool "CAN1MBaud"
+                    config BSP_USING_CAN800kBaud
+                        bool "CAN800kBaud"
+                    config BSP_USING_CAN500kBaud
+                        bool "CAN500kBaud"
+                    config BSP_USING_CAN250kBaud
+                        bool "CAN250kBaud"
+                    config BSP_USING_CAN125kBaud
+                        bool "CAN125kBaud"
+                    config BSP_USING_CAN100kBaud
+                        bool "CAN100kBaud"
+                    config BSP_USING_CAN50kBaud
+                        bool "CAN50kBaud"
+                    config BSP_USING_CAN20kBaud
+                        bool "CAN20kBaud"
+                    config BSP_USING_CAN10kBaud
+                        bool "CAN10kBaud"
+                endchoice
+                choice
+                    prompt "Default CAN mode"
+                    default BSP_USING_RT_CAN_MODE_NORMAL
+                    config BSP_USING_RT_CAN_MODE_NORMAL
+                        bool "RT_CAN_MODE_NORMAL"
+                    config BSP_USING_RT_CAN_MODE_LISTEN
+                        bool "RT_CAN_MODE_LISTEN"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACK
+                        bool "RT_CAN_MODE_LOOPBACK"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+                        bool "RT_CAN_MODE_LOOPBACKANLISTEN"
+                endchoice
+
+                config BSP_USING_CAN_BAUD
+                int
+                default 1000000 if BSP_USING_CAN1MBaud
+                default 800000 if BSP_USING_CAN800kBaud
+                default 500000 if BSP_USING_CAN500kBaud
+                default 250000 if BSP_USING_CAN250kBaud
+                default 125000 if BSP_USING_CAN125kBaud
+                default 100000 if BSP_USING_CAN100kBaud
+                default 50000 if BSP_USING_CAN50kBaud
+                default 20000 if BSP_USING_CAN20kBaud
+                default 10000 if BSP_USING_CAN10kBaud
+
+                config BSP_USING_CAN_MODE
+                int
+                default 0 if BSP_USING_RT_CAN_MODE_NORMAL
+                default 1 if BSP_USING_RT_CAN_MODE_LISTEN
+                default 2 if BSP_USING_RT_CAN_MODE_LOOPBACK
+                default 3 if BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+            
+            config CAN_DEFAULT_FILTER_TABLE_CONFIGURATION
+                choice
+                    prompt "Default filter id mode"
+                    default BSP_USING_CAN_STD_ID
+                    config BSP_USING_CAN_STD_ID
+                        bool "CAN_STD_ID"
+                    config BSP_USING_CAN_EXT_ID
+                        bool "CAN_EXT_ID"
+                endchoice
+
+                choice
+                    prompt "Default filter frame mode"
+                    default BSP_USING_CAN_DATA_FRAME
+                    config BSP_USING_CAN_DATA_FRAME
+                        bool "CAN_DATA_FRAME"
+                    config BSP_USING_CAN_REMOTE_FRAME
+                        bool "CAN_REMOTE_FRAME"
+                endchoice
+
+                config BSP_USING_CAN_ID_MODE
+                int
+                default 0 if BSP_USING_CAN_STD_ID
+                default 1 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_FRAME_MODE
+                int
+                default 0 if BSP_USING_CAN_REMOTE_FRAME
+                default 1 if BSP_USING_CAN_DATA_FRAME
+
+                config BSP_USING_CAN_MSG_NUM
+                int "Default filter table number"
+                range 0 31
+                default 0
+
+                config BSP_USING_CAN_ID
+                hex "Default filter arbitration bit(ID)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x541 if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x541 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_MASK
+                hex "Default filter mask bit(MASK)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x7FF if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+
+        endif
+
+    menuconfig BSP_USING_SDIO
+        bool "Enable SDIO"
+        depends on SOC_HT32F12345 || SOC_HT32F12365 || SOC_HT32F12366
+        default n
+        select RT_USING_SDIO if BSP_USING_SDIO
+        config BSP_USING_SDIO_NAME
+        depends on BSP_USING_SDIO
+        string "sdio device name"
+        default "sdio"
+
+    menuconfig BSP_USING_USBD
+        bool "Enable USB BUS"
+        default n
+        select RT_USING_USB_DEVICE if BSP_USING_USBD
+        config BSP_USING_USBD_NAME
+        depends on BSP_USING_USBD
+        string "usbd device name"
+        default "usbd"
 endmenu
 
 menu "Board extended module Drivers"

+ 26 - 26
bsp/ht32/ht32f52352/board/inc/ht32f5xxxx_01_usbdconf.h

@@ -58,7 +58,7 @@
 //    <o0.13> Endpoint5 Interrupt Enable (EP5IE)
 //    <o0.14> Endpoint6 Interrupt Enable (EP6IE)
 //    <o0.15> Endpoint7 Interrupt Enable (EP7IE)
-#define _UIER               (0x011D)
+#define _UIER               (0xFF1D)
 //  </h>
 
 
@@ -96,7 +96,7 @@
 /* Endpoint1 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint1 Configuration
-#define _EP1_ENABLE         (0)
+#define _EP1_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -114,7 +114,7 @@
 //    <o0> Endpoint Transfer Type
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP1_TYPR           (3)
+#define _EP1_TYPR           (2)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -123,7 +123,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP1LEN_TMP         (8)
+#define _EP1LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -135,7 +135,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP1_IER            (0x10)
+#define _EP1_IER            (0x12)
 // </h>
 // </e>
 
@@ -144,7 +144,7 @@
 /* Endpoint2 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint2 Configuration
-#define _EP2_ENABLE         (0)
+#define _EP2_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -162,7 +162,7 @@
 //    <o0> Endpoint Transfer Type
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP2_TYPR           (3)
+#define _EP2_TYPR           (2)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -171,7 +171,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP2LEN_TMP         (8)
+#define _EP2LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -183,7 +183,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP2_IER            (0x002)
+#define _EP2_IER            (0x012)
 // </h>
 // </e>
 
@@ -191,7 +191,7 @@
 /* Endpoint3 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint3 Configuration
-#define _EP3_ENABLE         (0)
+#define _EP3_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -218,7 +218,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
                             /* Maximum: 64 Bytes                                                            */
-#define _EP3LEN_TMP         (8)
+#define _EP3LEN_TMP         (64)
 
 //    <h> Endpoint Interrupt Enable Settings (EPIER)
 //      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
@@ -230,7 +230,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP3_IER            (0x10)
+#define _EP3_IER            (0x12)
 // </h>
 // </e>
 
@@ -238,7 +238,7 @@
 /* Endpoint4 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint4 Configuration
-#define _EP4_ENABLE         (0)
+#define _EP4_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -266,7 +266,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP4LEN_TMP         (8)
+#define _EP4LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -283,7 +283,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP4_IER            (0x02)
+#define _EP4_IER            (0x12)
 // </h>
 // </e>
 
@@ -292,7 +292,7 @@
 /* Endpoint5 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint5 Configuration
-#define _EP5_ENABLE         (0)
+#define _EP5_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -311,7 +311,7 @@
 //      <1=> Isochronous
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP5_TYPR           (3)
+#define _EP5_TYPR           (1)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -320,7 +320,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP5LEN_TMP         (8)
+#define _EP5LEN_TMP         (64)
 
 
 //    <o0> Single/Double Buffer Selection (SDBS)
@@ -338,7 +338,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP5_IER            (0x10)
+#define _EP5_IER            (0x12)
 // </h>
 // </e>
 
@@ -347,7 +347,7 @@
 /* Endpoint6 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint6 Configuration
-#define _EP6_ENABLE         (0)
+#define _EP6_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -366,7 +366,7 @@
 //      <1=> Isochronous
 //      <2=> Bulk
 //      <3=> Interrupt
-#define _EP6_TYPR           (3)
+#define _EP6_TYPR           (1)
 
 //    <o0> Endpoint Direction (EPDIR)
 //      <1=> IN
@@ -375,7 +375,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP6LEN_TMP         (8)
+#define _EP6LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -392,7 +392,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP6_IER            (0x02)
+#define _EP6_IER            (0x12)
 // </h>
 // </e>
 
@@ -401,7 +401,7 @@
 /* Endpoint7 Configuration Setting                                                                          */
 /*----------------------------------------------------------------------------------------------------------*/
 //  <e0> Endpoint7 Configuration
-#define _EP7_ENABLE         (0)
+#define _EP7_ENABLE         (1)
 
 //    <o0> Endpoint Address (EPADR)
 //      <1=> 1
@@ -429,7 +429,7 @@
 
 //    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
                             /* Maximum: 1000 Bytes                                                          */
-#define _EP7LEN_TMP         (8)
+#define _EP7LEN_TMP         (64)
 
 //    <o0> Single/Double Buffer Selection (SDBS)
 //      <0=> Single Buffer
@@ -446,7 +446,7 @@
 //      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
 //      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
 //      <o0.7> USB Error Interrupt Enable (UERIE)
-#define _EP7_IER            (0x10)
+#define _EP7_IER            (0x12)
 // </h>
 // </e>
 

+ 214 - 218
bsp/ht32/ht32f52352/project.uvoptx

@@ -73,7 +73,7 @@
         <LExpSel>0</LExpSel>
       </OPTXL>
       <OPTFL>
-        <tvExp>1</tvExp>
+        <tvExp>0</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
@@ -170,7 +170,7 @@
 
   <Group>
     <GroupName>Applications</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -317,8 +317,8 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c-bit-ops.c</PathWithFileName>
-      <FilenameWithoutPath>i2c-bit-ops.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_comm.c</PathWithFileName>
+      <FilenameWithoutPath>completion_comm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -329,8 +329,8 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c_core.c</PathWithFileName>
-      <FilenameWithoutPath>i2c_core.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_up.c</PathWithFileName>
+      <FilenameWithoutPath>completion_up.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -341,30 +341,6 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\i2c\i2c_dev.c</PathWithFileName>
-      <FilenameWithoutPath>i2c_dev.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\ipc\completion.c</PathWithFileName>
-      <FilenameWithoutPath>completion.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
       <PathWithFileName>..\..\..\components\drivers\ipc\condvar.c</PathWithFileName>
       <FilenameWithoutPath>condvar.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -372,7 +348,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -384,7 +360,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -396,7 +372,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -408,7 +384,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -420,7 +396,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -432,7 +408,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -444,73 +420,25 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\misc\adc.c</PathWithFileName>
-      <FilenameWithoutPath>adc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\pin\pin.c</PathWithFileName>
-      <FilenameWithoutPath>pin.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\serial\serial.c</PathWithFileName>
-      <FilenameWithoutPath>serial.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\spi\spi_core.c</PathWithFileName>
-      <FilenameWithoutPath>spi_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\spi\spi_dev.c</PathWithFileName>
-      <FilenameWithoutPath>spi_dev.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\pin\dev_pin.c</PathWithFileName>
+      <FilenameWithoutPath>dev_pin.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\watchdog\watchdog.c</PathWithFileName>
-      <FilenameWithoutPath>watchdog.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\drivers\serial\dev_serial.c</PathWithFileName>
+      <FilenameWithoutPath>dev_serial.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -518,13 +446,13 @@
 
   <Group>
     <GroupName>Drivers</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -536,7 +464,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -548,7 +476,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -560,7 +488,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -572,7 +500,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -584,7 +512,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -604,31 +532,31 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\shell.c</PathWithFileName>
-      <FilenameWithoutPath>shell.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\msh.c</PathWithFileName>
+      <FilenameWithoutPath>msh.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\msh.c</PathWithFileName>
-      <FilenameWithoutPath>msh.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\cmd.c</PathWithFileName>
+      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -640,13 +568,13 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\finsh\cmd.c</PathWithFileName>
-      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\components\finsh\shell.c</PathWithFileName>
+      <FilenameWithoutPath>shell.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -660,7 +588,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -672,7 +600,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -684,67 +612,67 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\idle.c</PathWithFileName>
-      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\cpu_up.c</PathWithFileName>
+      <FilenameWithoutPath>cpu_up.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\ipc.c</PathWithFileName>
-      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\defunct.c</PathWithFileName>
+      <FilenameWithoutPath>defunct.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\irq.c</PathWithFileName>
-      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\idle.c</PathWithFileName>
+      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\klibc\kstdio.c</PathWithFileName>
-      <FilenameWithoutPath>kstdio.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\ipc.c</PathWithFileName>
+      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\klibc\kstring.c</PathWithFileName>
-      <FilenameWithoutPath>kstring.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\src\irq.c</PathWithFileName>
+      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -756,7 +684,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -768,7 +696,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -780,7 +708,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -792,7 +720,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -804,7 +732,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -816,7 +744,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -828,7 +756,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -840,7 +768,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -853,14 +781,82 @@
   </Group>
 
   <Group>
-    <GroupName>libcpu</GroupName>
+    <GroupName>klibc</GroupName>
     <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>48</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsnprintf_tiny.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsnprintf_tiny.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>49</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstdio.c</PathWithFileName>
+      <FilenameWithoutPath>kstdio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>50</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kerrno.c</PathWithFileName>
+      <FilenameWithoutPath>kerrno.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>51</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstring.c</PathWithFileName>
+      <FilenameWithoutPath>kstring.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>52</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsscanf.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsscanf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>libcpu</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -871,8 +867,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -883,8 +879,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>55</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -895,8 +891,8 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -915,211 +911,223 @@
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>57</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_ckcu.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_sci.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_sci.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_pwrcu.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_rstcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_wdt.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_adc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_mctm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_cmp.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_usart.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32_cm0plus_misc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_ebi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_crc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_crc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_exti.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_spi.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_spi.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_crc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_crc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_pwrcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_spi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_spi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_pdma.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_sci.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_sci.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_mctm.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_i2c.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_rtc.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_tm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2s.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_i2s.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_pdma.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usbd.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_usbd.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_adc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_wdt.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usbd.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_usbd.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_ebi.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_01.c</PathWithFileName>
+      <FilenameWithoutPath>system_ht32f5xxxx_01.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>73</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_tm.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_rstcu.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>74</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_ckcu.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_flash.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>75</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
@@ -1131,19 +1139,19 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>76</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_exti.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32_cm0plus_misc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>77</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
@@ -1155,50 +1163,38 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>78</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_usart.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2s.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_i2s.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>79</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_i2c.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_rtc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>8</GroupNumber>
+      <GroupNumber>9</GroupNumber>
       <FileNumber>80</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</PathWithFileName>
-      <FilenameWithoutPath>ht32f5xxxx_flash.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>81</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_01.c</PathWithFileName>
-      <FilenameWithoutPath>system_ht32f5xxxx_01.c</FilenameWithoutPath>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_cmp.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>

+ 103 - 403
bsp/ht32/ht32f52352/project.uvprojx

@@ -15,8 +15,8 @@
         <TargetCommonOption>
           <Device>HT32F52352</Device>
           <Vendor>Holtek</Vendor>
-          <PackID>Holtek.HT32_DFP.1.0.19</PackID>
-          <PackURL>http://mcu.holtek.com.tw/pack</PackURL>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
           <Cpu>IRAM(0x20000000,0x4000) IROM(0x00000000,0x1FE00) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -332,10 +332,10 @@
             <v6WtE>0</v6WtE>
             <v6Rtti>0</v6Rtti>
             <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__STDC_LIMIT_MACROS, RT_USING_ARMLIBC, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, USE_HT32_DRIVER, __RTTHREAD__, USE_HT32F52352_SK, USE_HT32F52342_52, USE_MEM_HT32F52352</Define>
+              <MiscControls>--gnu</MiscControls>
+              <Define>RT_USING_LIBC, RT_USING_ARMLIBC, __RTTHREAD__, USE_HT32F52352_SK, USE_HT32F52342_52, USE_MEM_HT32F52352, __CLK_TCK=RT_TICK_PER_SECOND, __STDC_LIMIT_MACROS, USE_HT32_DRIVER</Define>
               <Undefine></Undefine>
-              <IncludePath>..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;..\..\..\include;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\include;..\libraries\ht32_drivers;..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Include;..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\inc;..\..\..\libcpu\arm\common;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\HT32_STD_5xxxx_FWLib\library\CMSIS\Include;..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\eventfd;board\inc;..\..\..\components\drivers\include;..\..\..\components\drivers\include;.;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\compilers\common\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;applications;..\..\..\components\drivers\spi;..\..\..\libcpu\arm\cortex-m0</IncludePath>
+              <IncludePath>..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\smp_call;..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\inc;..\..\..\libcpu\arm\common;..\..\..\components\drivers\include;..\..\..\libcpu\arm\cortex-m0;..\..\..\components\libc\posix\ipc;..\libraries\ht32_drivers;..\..\..\components\libc\posix\io\poll;..\libraries\usbd_library\inc;..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;.;..\..\..\components\drivers\phy;board\inc;..\..\..\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\finsh;applications;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\HT32_STD_5xxxx_FWLib\library\CMSIS\Include;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\posix\io\eventfd;..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Include</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -490,64 +490,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>i2c-bit-ops.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c-bit-ops.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>i2c_core.c</FileName>
+              <FileName>completion_comm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c_core.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\completion_comm.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -600,64 +545,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>i2c_dev.c</FileName>
+              <FileName>completion_up.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\i2c\i2c_dev.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>completion.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\ipc\completion.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\completion_up.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1095,174 +985,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>adc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\misc\adc.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>pin.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\pin\pin.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>serial.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\serial\serial.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>spi_core.c</FileName>
+              <FileName>dev_pin.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\spi\spi_core.c</FilePath>
+              <FilePath>..\..\..\components\drivers\pin\dev_pin.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1315,64 +1040,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>spi_dev.c</FileName>
+              <FileName>dev_serial.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\spi\spi_dev.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>1</IncludeInBuild>
-                  <AlwaysBuild>0</AlwaysBuild>
-                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
-                  <PublicsOnly>0</PublicsOnly>
-                  <StopOnExitCode>3</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls> </MiscControls>
-                      <Define>__RT_IPC_SOURCE__</Define>
-                      <Undefine> </Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-            <File>
-              <FileName>watchdog.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\watchdog\watchdog.c</FilePath>
+              <FilePath>..\..\..\components\drivers\serial\dev_serial.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1465,14 +1135,14 @@
           <GroupName>Finsh</GroupName>
           <Files>
             <File>
-              <FileName>shell.c</FileName>
+              <FileName>msh.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\shell.c</FilePath>
+              <FilePath>..\..\..\components\finsh\msh.c</FilePath>
             </File>
             <File>
-              <FileName>msh.c</FileName>
+              <FileName>cmd.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\msh.c</FilePath>
+              <FilePath>..\..\..\components\finsh\cmd.c</FilePath>
             </File>
             <File>
               <FileName>msh_parse.c</FileName>
@@ -1480,9 +1150,9 @@
               <FilePath>..\..\..\components\finsh\msh_parse.c</FilePath>
             </File>
             <File>
-              <FileName>cmd.c</FileName>
+              <FileName>shell.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\finsh\cmd.c</FilePath>
+              <FilePath>..\..\..\components\finsh\shell.c</FilePath>
             </File>
           </Files>
         </Group>
@@ -1600,9 +1270,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>idle.c</FileName>
+              <FileName>cpu_up.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\idle.c</FilePath>
+              <FilePath>..\..\..\src\cpu_up.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1655,9 +1325,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>ipc.c</FileName>
+              <FileName>defunct.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\ipc.c</FilePath>
+              <FilePath>..\..\..\src\defunct.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1710,9 +1380,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>irq.c</FileName>
+              <FileName>idle.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\irq.c</FilePath>
+              <FilePath>..\..\..\src\idle.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1765,9 +1435,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>kstdio.c</FileName>
+              <FileName>ipc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\klibc\kstdio.c</FilePath>
+              <FilePath>..\..\..\src\ipc.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -1820,9 +1490,9 @@
               </FileOption>
             </File>
             <File>
-              <FileName>kstring.c</FileName>
+              <FileName>irq.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\klibc\kstring.c</FilePath>
+              <FilePath>..\..\..\src\irq.c</FilePath>
               <FileOption>
                 <CommonProperty>
                   <UseCPPCompiler>2</UseCPPCompiler>
@@ -2371,6 +2041,36 @@
             </File>
           </Files>
         </Group>
+        <Group>
+          <GroupName>klibc</GroupName>
+          <Files>
+            <File>
+              <FileName>rt_vsnprintf_tiny.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsnprintf_tiny.c</FilePath>
+            </File>
+            <File>
+              <FileName>kstdio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstdio.c</FilePath>
+            </File>
+            <File>
+              <FileName>kerrno.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kerrno.c</FilePath>
+            </File>
+            <File>
+              <FileName>kstring.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstring.c</FilePath>
+            </File>
+            <File>
+              <FileName>rt_vsscanf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsscanf.c</FilePath>
+            </File>
+          </Files>
+        </Group>
         <Group>
           <GroupName>libcpu</GroupName>
           <Files>
@@ -2400,29 +2100,39 @@
           <GroupName>Libraries</GroupName>
           <Files>
             <File>
-              <FileName>ht32f5xxxx_sci.c</FileName>
+              <FileName>ht32f5xxxx_ckcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_sci.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_rstcu.c</FileName>
+              <FileName>ht32f5xxxx_pwrcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_adc.c</FileName>
+              <FileName>ht32f5xxxx_wdt.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_cmp.c</FileName>
+              <FileName>ht32f5xxxx_mctm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32_cm0plus_misc.c</FileName>
+              <FileName>ht32f5xxxx_usart.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_ebi.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_exti.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</FilePath>
             </File>
             <File>
               <FileName>ht32f5xxxx_crc.c</FileName>
@@ -2435,29 +2145,29 @@
               <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_spi.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_pwrcu.c</FileName>
+              <FileName>ht32f5xxxx_sci.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_sci.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_pdma.c</FileName>
+              <FileName>ht32f5xxxx_i2c.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_mctm.c</FileName>
+              <FileName>ht32f5xxxx_tm.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_rtc.c</FileName>
+              <FileName>ht32f5xxxx_pdma.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_i2s.c</FileName>
+              <FileName>ht32f5xxxx_adc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2s.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</FilePath>
             </File>
             <File>
               <FileName>ht32f5xxxx_usbd.c</FileName>
@@ -2465,24 +2175,19 @@
               <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usbd.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_wdt.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</FilePath>
-            </File>
-            <File>
-              <FileName>ht32f5xxxx_ebi.c</FileName>
+              <FileName>system_ht32f5xxxx_01.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_01.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_tm.c</FileName>
+              <FileName>ht32f5xxxx_rstcu.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_ckcu.c</FileName>
+              <FileName>ht32f5xxxx_flash.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</FilePath>
             </File>
             <File>
               <FileName>ht32f5xxxx_gpio.c</FileName>
@@ -2490,9 +2195,9 @@
               <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_gpio.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_exti.c</FileName>
+              <FileName>ht32_cm0plus_misc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</FilePath>
             </File>
             <File>
               <FileName>ht32f5xxxx_bftm.c</FileName>
@@ -2500,24 +2205,19 @@
               <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_bftm.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_usart.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</FilePath>
-            </File>
-            <File>
-              <FileName>ht32f5xxxx_i2c.c</FileName>
+              <FileName>ht32f5xxxx_i2s.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2s.c</FilePath>
             </File>
             <File>
-              <FileName>ht32f5xxxx_flash.c</FileName>
+              <FileName>ht32f5xxxx_rtc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</FilePath>
             </File>
             <File>
-              <FileName>system_ht32f5xxxx_01.c</FileName>
+              <FileName>ht32f5xxxx_cmp.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_01.c</FilePath>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</FilePath>
             </File>
           </Files>
         </Group>

+ 131 - 15
bsp/ht32/ht32f52352/rtconfig.h

@@ -1,26 +1,81 @@
 #ifndef RT_CONFIG_H__
 #define RT_CONFIG_H__
 
-/* Automatically generated file; DO NOT EDIT. */
-/* RT-Thread Configuration */
-
 /* RT-Thread Kernel */
 
+/* klibc options */
+
+/* rt_vsnprintf options */
+
+/* end of rt_vsnprintf options */
+
+/* rt_vsscanf options */
+
+/* end of rt_vsscanf options */
+
+/* rt_memset options */
+
+/* end of rt_memset options */
+
+/* rt_memcpy options */
+
+/* end of rt_memcpy options */
+
+/* rt_memmove options */
+
+/* end of rt_memmove options */
+
+/* rt_memcmp options */
+
+/* end of rt_memcmp options */
+
+/* rt_strstr options */
+
+/* end of rt_strstr options */
+
+/* rt_strcasecmp options */
+
+/* end of rt_strcasecmp options */
+
+/* rt_strncpy options */
+
+/* end of rt_strncpy options */
+
+/* rt_strcpy options */
+
+/* end of rt_strcpy options */
+
+/* rt_strncmp options */
+
+/* end of rt_strncmp options */
+
+/* rt_strcmp options */
+
+/* end of rt_strcmp options */
+
+/* rt_strlen options */
+
+/* end of rt_strlen options */
+
+/* rt_strnlen options */
+
+/* end of rt_strnlen options */
+/* end of klibc options */
 #define RT_NAME_MAX 8
 #define RT_CPUS_NR 1
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
 #define RT_TICK_PER_SECOND 1000
-#define RT_USING_OVERFLOW_CHECK
 #define RT_USING_HOOK
 #define RT_HOOK_USING_FUNC_PTR
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
-#define IDLE_THREAD_STACK_SIZE 256
+#define IDLE_THREAD_STACK_SIZE 512
 
-/* kservice optimization */
+/* kservice options */
 
+/* end of kservice options */
 
 /* Inter-Thread communication */
 
@@ -29,6 +84,7 @@
 #define RT_USING_EVENT
 #define RT_USING_MAILBOX
 #define RT_USING_MESSAGEQUEUE
+/* end of Inter-Thread communication */
 
 /* Memory Management */
 
@@ -38,12 +94,14 @@
 #define RT_MEMHEAP_FAST_MODE
 #define RT_USING_SMALL_MEM_AS_HEAP
 #define RT_USING_HEAP
+/* end of Memory Management */
 #define RT_USING_DEVICE
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLE_DEVICE_NAME "usart1"
 #define RT_VER_NUM 0x50200
 #define RT_BACKTRACE_LEVEL_MAX_NR 32
+/* end of RT-Thread Kernel */
 #define ARCH_ARM
 #define ARCH_ARM_CORTEX_M
 #define ARCH_ARM_CORTEX_M0
@@ -52,7 +110,7 @@
 
 #define RT_USING_COMPONENTS_INIT
 #define RT_USING_USER_MAIN
-#define RT_MAIN_THREAD_STACK_SIZE 2048
+#define RT_MAIN_THREAD_STACK_SIZE 1024
 #define RT_MAIN_THREAD_PRIORITY 10
 #define RT_USING_MSH
 #define RT_USING_FINSH
@@ -71,6 +129,7 @@
 
 /* DFS: device virtual file system */
 
+/* end of DFS: device virtual file system */
 
 /* Device Drivers */
 
@@ -79,15 +138,8 @@
 #define RT_USING_SERIAL
 #define RT_USING_SERIAL_V1
 #define RT_SERIAL_RB_BUFSZ 64
-#define RT_USING_I2C
-#define RT_USING_I2C_BITOPS
-#define RT_USING_ADC
-#define RT_USING_SPI
-#define RT_USING_WDT
 #define RT_USING_PIN
-
-/* Using USB */
-
+/* end of Device Drivers */
 
 /* C/C++ and POSIX layer */
 
@@ -99,6 +151,8 @@
 #define RT_LIBC_TZ_DEFAULT_HOUR 8
 #define RT_LIBC_TZ_DEFAULT_MIN 0
 #define RT_LIBC_TZ_DEFAULT_SEC 0
+/* end of Timezone and Daylight Saving Time */
+/* end of ISO-ANSI C layer */
 
 /* POSIX (Portable Operating System Interface) layer */
 
@@ -108,18 +162,30 @@
 
 /* Socket is in the 'Network' category */
 
+/* end of Interprocess Communication (IPC) */
+/* end of POSIX (Portable Operating System Interface) layer */
+/* end of C/C++ and POSIX layer */
 
 /* Network */
 
+/* end of Network */
 
 /* Memory protection */
 
+/* end of Memory protection */
 
 /* Utilities */
 
+/* end of Utilities */
+
+/* Using USB legacy version */
+
+/* end of Using USB legacy version */
+/* end of RT-Thread Components */
 
 /* RT-Thread Utestcases */
 
+/* end of RT-Thread Utestcases */
 
 /* RT-Thread online packages */
 
@@ -130,57 +196,78 @@
 
 /* Marvell WiFi */
 
+/* end of Marvell WiFi */
 
 /* Wiced WiFi */
 
+/* end of Wiced WiFi */
 
 /* CYW43012 WiFi */
 
+/* end of CYW43012 WiFi */
 
 /* BL808 WiFi */
 
+/* end of BL808 WiFi */
 
 /* CYW43439 WiFi */
 
+/* end of CYW43439 WiFi */
+/* end of Wi-Fi */
 
 /* IoT Cloud */
 
+/* end of IoT Cloud */
+/* end of IoT - internet of things */
 
 /* security packages */
 
+/* end of security packages */
 
 /* language packages */
 
 /* JSON: JavaScript Object Notation, a lightweight data-interchange format */
 
+/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */
 
 /* XML: Extensible Markup Language */
 
+/* end of XML: Extensible Markup Language */
+/* end of language packages */
 
 /* multimedia packages */
 
 /* LVGL: powerful and easy-to-use embedded GUI library */
 
+/* end of LVGL: powerful and easy-to-use embedded GUI library */
 
 /* u8g2: a monochrome graphic library */
 
+/* end of u8g2: a monochrome graphic library */
+/* end of multimedia packages */
 
 /* tools packages */
 
+/* end of tools packages */
 
 /* system packages */
 
 /* enhanced kernel services */
 
+/* end of enhanced kernel services */
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
+/* end of acceleration: Assembly language or algorithmic acceleration packages */
 
 /* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
 
+/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
+/* end of Micrium: Micrium software products porting for RT-Thread */
+/* end of system packages */
 
 /* peripheral libraries and drivers */
 
@@ -188,69 +275,94 @@
 
 /* STM32 HAL & SDK Drivers */
 
+/* end of STM32 HAL & SDK Drivers */
 
 /* Infineon HAL Packages */
 
+/* end of Infineon HAL Packages */
 
 /* Kendryte SDK */
 
+/* end of Kendryte SDK */
+/* end of HAL & SDK Drivers */
 
 /* sensors drivers */
 
+/* end of sensors drivers */
 
 /* touch drivers */
 
+/* end of touch drivers */
+/* end of peripheral libraries and drivers */
 
 /* AI packages */
 
+/* end of AI packages */
 
 /* Signal Processing and Control Algorithm Packages */
 
+/* end of Signal Processing and Control Algorithm Packages */
 
 /* miscellaneous packages */
 
 /* project laboratory */
 
+/* end of project laboratory */
+
 /* samples: kernel and components samples */
 
+/* end of samples: kernel and components samples */
 
 /* entertainment: terminal games and other interesting software packages */
 
+/* end of entertainment: terminal games and other interesting software packages */
+/* end of miscellaneous packages */
 
 /* Arduino libraries */
 
 
 /* Projects and Demos */
 
+/* end of Projects and Demos */
 
 /* Sensors */
 
+/* end of Sensors */
 
 /* Display */
 
+/* end of Display */
 
 /* Timing */
 
+/* end of Timing */
 
 /* Data Processing */
 
+/* end of Data Processing */
 
 /* Data Storage */
 
 /* Communication */
 
+/* end of Communication */
 
 /* Device Control */
 
+/* end of Device Control */
 
 /* Other */
 
+/* end of Other */
 
 /* Signal IO */
 
+/* end of Signal IO */
 
 /* Uncategorized */
 
+/* end of Arduino libraries */
+/* end of RT-Thread online packages */
 #define SOC_FAMILY_HT32
 #define SOC_SERIES_HT32F5
 
@@ -261,9 +373,11 @@
 #define SOC_KERNEL
 #define CORTEX_M0
 #define SOC_HT32F52352
+/* end of Chip Configuration */
 
 /* Onboard Peripheral Drivers */
 
+/* end of Onboard Peripheral Drivers */
 
 /* On-chip Peripheral Drivers */
 
@@ -271,8 +385,10 @@
 #define BSP_USING_UART
 #define BSP_USING_USART1
 #define BSP_USING_USART1_NAME "usart1"
+/* end of On-chip Peripheral Drivers */
 
 /* Board extended module Drivers */
 
+/* end of Hardware Drivers Config */
 
 #endif

+ 3 - 3
bsp/ht32/ht32f52352/template.uvprojx

@@ -15,8 +15,8 @@
         <TargetCommonOption>
           <Device>HT32F52352</Device>
           <Vendor>Holtek</Vendor>
-          <PackID>Holtek.HT32_DFP.1.0.19</PackID>
-          <PackURL>http://mcu.holtek.com.tw/pack</PackURL>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
           <Cpu>IRAM(0x20000000,0x4000) IROM(0x00000000,0x1FE00) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -332,7 +332,7 @@
             <v6WtE>0</v6WtE>
             <v6Rtti>0</v6Rtti>
             <VariousControls>
-              <MiscControls></MiscControls>
+              <MiscControls>--gnu</MiscControls>
               <Define></Define>
               <Undefine></Undefine>
               <IncludePath></IncludePath>

+ 18 - 0
bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml

@@ -0,0 +1,18 @@
+devices.strict:
+    depend_scons_arg:
+      - '--strict'
+devices.gpio:
+    depends:
+      - devices.strict
+    kconfig:
+      - CONFIG_BSP_USING_GPIO=y
+devices.uart:
+    kconfig:
+      - CONFIG_BSP_USING_UART=y
+      - CONFIG_BSP_USING_USART1=y
+# ------ SEGGER CI ------
+segger:
+    kconfig:
+      - CONFIG_BSP_USING_GPIO=y
+      - CONFIG_BSP_USING_UART=y
+      - CONFIG_BSP_USING_USART1=y

+ 1326 - 0
bsp/ht32/ht32f53252/.config

@@ -0,0 +1,1326 @@
+
+#
+# RT-Thread Kernel
+#
+
+#
+# klibc options
+#
+
+#
+# rt_vsnprintf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set
+# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set
+# end of rt_vsnprintf options
+
+#
+# rt_vsscanf options
+#
+# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set
+# end of rt_vsscanf options
+
+#
+# rt_memset options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set
+# end of rt_memset options
+
+#
+# rt_memcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set
+# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set
+# end of rt_memcpy options
+
+#
+# rt_memmove options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set
+# end of rt_memmove options
+
+#
+# rt_memcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set
+# end of rt_memcmp options
+
+#
+# rt_strstr options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set
+# end of rt_strstr options
+
+#
+# rt_strcasecmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set
+# end of rt_strcasecmp options
+
+#
+# rt_strncpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set
+# end of rt_strncpy options
+
+#
+# rt_strcpy options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set
+# end of rt_strcpy options
+
+#
+# rt_strncmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set
+# end of rt_strncmp options
+
+#
+# rt_strcmp options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set
+# end of rt_strcmp options
+
+#
+# rt_strlen options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set
+# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set
+# end of rt_strlen options
+
+#
+# rt_strnlen options
+#
+# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set
+# end of rt_strnlen options
+
+# CONFIG_RT_UTEST_TC_USING_KLIBC is not set
+# end of klibc options
+
+CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
+# CONFIG_RT_USING_NANO is not set
+# CONFIG_RT_USING_SMART is not set
+# CONFIG_RT_USING_AMP is not set
+# CONFIG_RT_USING_SMP is not set
+CONFIG_RT_CPUS_NR=1
+CONFIG_RT_ALIGN_SIZE=4
+# CONFIG_RT_THREAD_PRIORITY_8 is not set
+CONFIG_RT_THREAD_PRIORITY_32=y
+# CONFIG_RT_THREAD_PRIORITY_256 is not set
+CONFIG_RT_THREAD_PRIORITY_MAX=32
+CONFIG_RT_TICK_PER_SECOND=1000
+# CONFIG_RT_USING_OVERFLOW_CHECK is not set
+CONFIG_RT_USING_HOOK=y
+CONFIG_RT_HOOK_USING_FUNC_PTR=y
+# CONFIG_RT_USING_HOOKLIST is not set
+CONFIG_RT_USING_IDLE_HOOK=y
+CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
+CONFIG_IDLE_THREAD_STACK_SIZE=512
+# CONFIG_RT_USING_TIMER_SOFT is not set
+# CONFIG_RT_USING_CPU_USAGE_TRACER is not set
+
+#
+# kservice options
+#
+# CONFIG_RT_USING_TINY_FFS is not set
+# end of kservice options
+
+# CONFIG_RT_USING_DEBUG is not set
+# CONFIG_RT_USING_CI_ACTION is not set
+
+#
+# Inter-Thread communication
+#
+CONFIG_RT_USING_SEMAPHORE=y
+CONFIG_RT_USING_MUTEX=y
+CONFIG_RT_USING_EVENT=y
+CONFIG_RT_USING_MAILBOX=y
+CONFIG_RT_USING_MESSAGEQUEUE=y
+# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set
+# CONFIG_RT_USING_SIGNALS is not set
+# end of Inter-Thread communication
+
+#
+# Memory Management
+#
+CONFIG_RT_USING_MEMPOOL=y
+CONFIG_RT_USING_SMALL_MEM=y
+# CONFIG_RT_USING_SLAB is not set
+CONFIG_RT_USING_MEMHEAP=y
+CONFIG_RT_MEMHEAP_FAST_MODE=y
+# CONFIG_RT_MEMHEAP_BEST_MODE is not set
+CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
+# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
+# CONFIG_RT_USING_SLAB_AS_HEAP is not set
+# CONFIG_RT_USING_USERHEAP is not set
+# CONFIG_RT_USING_NOHEAP is not set
+# CONFIG_RT_USING_MEMTRACE is not set
+# CONFIG_RT_USING_HEAP_ISR is not set
+CONFIG_RT_USING_HEAP=y
+# end of Memory Management
+
+CONFIG_RT_USING_DEVICE=y
+# CONFIG_RT_USING_DEVICE_OPS is not set
+# CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREADSAFE_PRINTF is not set
+CONFIG_RT_USING_CONSOLE=y
+CONFIG_RT_CONSOLEBUF_SIZE=128
+CONFIG_RT_CONSOLE_DEVICE_NAME="usart1"
+CONFIG_RT_VER_NUM=0x50200
+# CONFIG_RT_USING_STDC_ATOMIC is not set
+CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32
+# end of RT-Thread Kernel
+
+CONFIG_ARCH_ARM=y
+CONFIG_ARCH_ARM_CORTEX_M=y
+CONFIG_ARCH_ARM_CORTEX_M0=y
+
+#
+# RT-Thread Components
+#
+CONFIG_RT_USING_COMPONENTS_INIT=y
+CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=1024
+CONFIG_RT_MAIN_THREAD_PRIORITY=10
+# CONFIG_RT_USING_LEGACY is not set
+CONFIG_RT_USING_MSH=y
+CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_USING_MSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=1024
+CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
+CONFIG_FINSH_USING_SYMTAB=y
+CONFIG_FINSH_CMD_SIZE=32
+CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
+CONFIG_FINSH_USING_DESCRIPTION=y
+# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
+# CONFIG_FINSH_USING_AUTH is not set
+CONFIG_FINSH_ARG_MAX=10
+CONFIG_FINSH_USING_OPTION_COMPLETION=y
+
+#
+# DFS: device virtual file system
+#
+# CONFIG_RT_USING_DFS is not set
+# end of DFS: device virtual file system
+
+# CONFIG_RT_USING_FAL is not set
+
+#
+# Device Drivers
+#
+# CONFIG_RT_USING_DM is not set
+# CONFIG_RT_USING_DEV_BUS is not set
+CONFIG_RT_USING_DEVICE_IPC=y
+CONFIG_RT_UNAMED_PIPE_NUMBER=64
+# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
+CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_USING_SERIAL_V1=y
+# CONFIG_RT_USING_SERIAL_V2 is not set
+# CONFIG_RT_SERIAL_USING_DMA is not set
+CONFIG_RT_SERIAL_RB_BUFSZ=64
+# CONFIG_RT_USING_SERIAL_BYPASS is not set
+# CONFIG_RT_USING_CAN is not set
+# CONFIG_RT_USING_CPUTIME is not set
+# CONFIG_RT_USING_I2C is not set
+# CONFIG_RT_USING_PHY is not set
+# CONFIG_RT_USING_PHY_V2 is not set
+# CONFIG_RT_USING_ADC is not set
+# CONFIG_RT_USING_DAC is not set
+# CONFIG_RT_USING_NULL is not set
+# CONFIG_RT_USING_ZERO is not set
+# CONFIG_RT_USING_RANDOM is not set
+# CONFIG_RT_USING_PWM is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+# CONFIG_RT_USING_INPUT_CAPTURE is not set
+# CONFIG_RT_USING_MTD_NOR is not set
+# CONFIG_RT_USING_MTD_NAND is not set
+# CONFIG_RT_USING_PM is not set
+# CONFIG_RT_USING_RTC is not set
+# CONFIG_RT_USING_SDIO is not set
+# CONFIG_RT_USING_SPI is not set
+# CONFIG_RT_USING_WDT is not set
+# CONFIG_RT_USING_AUDIO is not set
+# CONFIG_RT_USING_SENSOR is not set
+# CONFIG_RT_USING_TOUCH is not set
+# CONFIG_RT_USING_LCD is not set
+# CONFIG_RT_USING_HWCRYPTO is not set
+# CONFIG_RT_USING_WIFI is not set
+# CONFIG_RT_USING_BLK is not set
+# CONFIG_RT_USING_VIRTIO is not set
+CONFIG_RT_USING_PIN=y
+# CONFIG_RT_USING_KTIME is not set
+# CONFIG_RT_USING_HWTIMER is not set
+# CONFIG_RT_USING_CHERRYUSB is not set
+# end of Device Drivers
+
+#
+# C/C++ and POSIX layer
+#
+
+#
+# ISO-ANSI C layer
+#
+
+#
+# Timezone and Daylight Saving Time
+#
+# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set
+CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y
+CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8
+CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0
+CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
+# end of Timezone and Daylight Saving Time
+# end of ISO-ANSI C layer
+
+#
+# POSIX (Portable Operating System Interface) layer
+#
+# CONFIG_RT_USING_POSIX_FS is not set
+# CONFIG_RT_USING_POSIX_DELAY is not set
+# CONFIG_RT_USING_POSIX_CLOCK is not set
+# CONFIG_RT_USING_POSIX_TIMER is not set
+# CONFIG_RT_USING_PTHREADS is not set
+# CONFIG_RT_USING_MODULE is not set
+
+#
+# Interprocess Communication (IPC)
+#
+# CONFIG_RT_USING_POSIX_PIPE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set
+
+#
+# Socket is in the 'Network' category
+#
+# end of Interprocess Communication (IPC)
+# end of POSIX (Portable Operating System Interface) layer
+
+# CONFIG_RT_USING_CPLUSPLUS is not set
+# end of C/C++ and POSIX layer
+
+#
+# Network
+#
+# CONFIG_RT_USING_SAL is not set
+# CONFIG_RT_USING_NETDEV is not set
+# CONFIG_RT_USING_LWIP is not set
+# CONFIG_RT_USING_AT is not set
+# end of Network
+
+#
+# Memory protection
+#
+# CONFIG_RT_USING_MEM_PROTECTION is not set
+# CONFIG_RT_USING_HW_STACK_GUARD is not set
+# end of Memory protection
+
+#
+# Utilities
+#
+# CONFIG_RT_USING_RYM is not set
+# CONFIG_RT_USING_ULOG is not set
+# CONFIG_RT_USING_UTEST is not set
+# CONFIG_RT_USING_VAR_EXPORT is not set
+# CONFIG_RT_USING_RESOURCE_ID is not set
+# CONFIG_RT_USING_ADT is not set
+# CONFIG_RT_USING_RT_LINK is not set
+# end of Utilities
+
+# CONFIG_RT_USING_VBUS is not set
+
+#
+# Using USB legacy version
+#
+# CONFIG_RT_USING_USB_HOST is not set
+# CONFIG_RT_USING_USB_DEVICE is not set
+# end of Using USB legacy version
+
+# CONFIG_RT_USING_FDT is not set
+# end of RT-Thread Components
+
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+# end of RT-Thread Utestcases
+
+#
+# RT-Thread online packages
+#
+
+#
+# IoT - internet of things
+#
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
+# CONFIG_PKG_USING_PAHOMQTT is not set
+# CONFIG_PKG_USING_UMQTT is not set
+# CONFIG_PKG_USING_WEBCLIENT is not set
+# CONFIG_PKG_USING_WEBNET is not set
+# CONFIG_PKG_USING_MONGOOSE is not set
+# CONFIG_PKG_USING_MYMQTT is not set
+# CONFIG_PKG_USING_KAWAII_MQTT is not set
+# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_NANOPB is not set
+# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+# end of Marvell WiFi
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# end of Wiced WiFi
+
+# CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+# end of CYW43012 WiFi
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+# end of BL808 WiFi
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
+# end of CYW43439 WiFi
+# end of Wi-Fi
+
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_CMUX is not set
+# CONFIG_PKG_USING_PPP_DEVICE is not set
+# CONFIG_PKG_USING_AT_DEVICE is not set
+# CONFIG_PKG_USING_ATSRV_SOCKET is not set
+# CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
+
+#
+# IoT Cloud
+#
+# CONFIG_PKG_USING_ONENET is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+# CONFIG_PKG_USING_ALI_IOTKIT is not set
+# CONFIG_PKG_USING_AZURE is not set
+# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_JIOT-C-SDK is not set
+# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
+# CONFIG_PKG_USING_JOYLINK is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# end of IoT Cloud
+
+# CONFIG_PKG_USING_NIMBLE is not set
+# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
+# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
+# CONFIG_PKG_USING_IPMSG is not set
+# CONFIG_PKG_USING_LSSDP is not set
+# CONFIG_PKG_USING_AIRKISS_OPEN is not set
+# CONFIG_PKG_USING_LIBRWS is not set
+# CONFIG_PKG_USING_TCPSERVER is not set
+# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_DLT645 is not set
+# CONFIG_PKG_USING_QXWZ is not set
+# CONFIG_PKG_USING_SMTP_CLIENT is not set
+# CONFIG_PKG_USING_ABUP_FOTA is not set
+# CONFIG_PKG_USING_LIBCURL2RTT is not set
+# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_AGILE_TELNET is not set
+# CONFIG_PKG_USING_NMEALIB is not set
+# CONFIG_PKG_USING_PDULIB is not set
+# CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
+# CONFIG_PKG_USING_CYW43XX is not set
+# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
+# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
+# CONFIG_PKG_USING_MAVLINK is not set
+# CONFIG_PKG_USING_BSAL is not set
+# CONFIG_PKG_USING_AGILE_MODBUS is not set
+# CONFIG_PKG_USING_AGILE_FTP is not set
+# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
+# CONFIG_PKG_USING_RT_LINK_HW is not set
+# CONFIG_PKG_USING_RYANMQTT is not set
+# CONFIG_PKG_USING_RYANW5500 is not set
+# CONFIG_PKG_USING_LORA_PKT_FWD is not set
+# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
+# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
+# CONFIG_PKG_USING_HM is not set
+# CONFIG_PKG_USING_SMALL_MODBUS is not set
+# CONFIG_PKG_USING_NET_SERVER is not set
+# CONFIG_PKG_USING_ZFTP is not set
+# CONFIG_PKG_USING_WOL is not set
+# CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
+# CONFIG_PKG_USING_QMODBUS is not set
+# end of IoT - internet of things
+
+#
+# security packages
+#
+# CONFIG_PKG_USING_MBEDTLS is not set
+# CONFIG_PKG_USING_LIBSODIUM is not set
+# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_TINYCRYPT is not set
+# CONFIG_PKG_USING_TFM is not set
+# CONFIG_PKG_USING_YD_CRYPTO is not set
+# end of security packages
+
+#
+# language packages
+#
+
+#
+# JSON: JavaScript Object Notation, a lightweight data-interchange format
+#
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
+# CONFIG_PKG_USING_RAPIDJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
+# CONFIG_PKG_USING_AGILE_JSMN is not set
+# CONFIG_PKG_USING_PARSON is not set
+# end of JSON: JavaScript Object Notation, a lightweight data-interchange format
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
+# end of XML: Extensible Markup Language
+
+# CONFIG_PKG_USING_LUATOS_SOC is not set
+# CONFIG_PKG_USING_LUA is not set
+# CONFIG_PKG_USING_JERRYSCRIPT is not set
+# CONFIG_PKG_USING_MICROPYTHON is not set
+# CONFIG_PKG_USING_PIKASCRIPT is not set
+# CONFIG_PKG_USING_RTT_RUST is not set
+# end of language packages
+
+#
+# multimedia packages
+#
+
+#
+# LVGL: powerful and easy-to-use embedded GUI library
+#
+# CONFIG_PKG_USING_LVGL is not set
+# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+# end of LVGL: powerful and easy-to-use embedded GUI library
+
+#
+# u8g2: a monochrome graphic library
+#
+# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
+# CONFIG_PKG_USING_U8G2 is not set
+# end of u8g2: a monochrome graphic library
+
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
+# CONFIG_PKG_USING_WAVPLAYER is not set
+# CONFIG_PKG_USING_TJPGD is not set
+# CONFIG_PKG_USING_PDFGEN is not set
+# CONFIG_PKG_USING_HELIX is not set
+# CONFIG_PKG_USING_AZUREGUIX is not set
+# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
+# CONFIG_PKG_USING_NUEMWIN is not set
+# CONFIG_PKG_USING_MP3PLAYER is not set
+# CONFIG_PKG_USING_TINYJPEG is not set
+# CONFIG_PKG_USING_UGUI is not set
+# CONFIG_PKG_USING_MCURSES is not set
+# CONFIG_PKG_USING_TERMBOX is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_QRCODE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_3GPP_AMRNB is not set
+# end of multimedia packages
+
+#
+# tools packages
+#
+# CONFIG_PKG_USING_CMBACKTRACE is not set
+# CONFIG_PKG_USING_EASYFLASH is not set
+# CONFIG_PKG_USING_EASYLOGGER is not set
+# CONFIG_PKG_USING_SYSTEMVIEW is not set
+# CONFIG_PKG_USING_SEGGER_RTT is not set
+# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set
+# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
+# CONFIG_PKG_USING_LOGMGR is not set
+# CONFIG_PKG_USING_ADBD is not set
+# CONFIG_PKG_USING_COREMARK is not set
+# CONFIG_PKG_USING_DHRYSTONE is not set
+# CONFIG_PKG_USING_MEMORYPERF is not set
+# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
+# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
+# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
+# CONFIG_PKG_USING_BS8116A is not set
+# CONFIG_PKG_USING_GPS_RMC is not set
+# CONFIG_PKG_USING_URLENCODE is not set
+# CONFIG_PKG_USING_UMCN is not set
+# CONFIG_PKG_USING_LWRB2RTT is not set
+# CONFIG_PKG_USING_CPU_USAGE is not set
+# CONFIG_PKG_USING_GBK2UTF8 is not set
+# CONFIG_PKG_USING_VCONSOLE is not set
+# CONFIG_PKG_USING_KDB is not set
+# CONFIG_PKG_USING_WAMR is not set
+# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
+# CONFIG_PKG_USING_LWLOG is not set
+# CONFIG_PKG_USING_ANV_TRACE is not set
+# CONFIG_PKG_USING_ANV_MEMLEAK is not set
+# CONFIG_PKG_USING_ANV_TESTSUIT is not set
+# CONFIG_PKG_USING_ANV_BENCH is not set
+# CONFIG_PKG_USING_DEVMEM is not set
+# CONFIG_PKG_USING_REGEX is not set
+# CONFIG_PKG_USING_MEM_SANDBOX is not set
+# CONFIG_PKG_USING_SOLAR_TERMS is not set
+# CONFIG_PKG_USING_GAN_ZHI is not set
+# CONFIG_PKG_USING_FDT is not set
+# CONFIG_PKG_USING_CBOX is not set
+# CONFIG_PKG_USING_SNOWFLAKE is not set
+# CONFIG_PKG_USING_HASH_MATCH is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
+# CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_RT_TRACE is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
+# end of tools packages
+
+#
+# system packages
+#
+
+#
+# enhanced kernel services
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
+# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
+# end of enhanced kernel services
+
+# CONFIG_PKG_USING_AUNITY is not set
+
+#
+# acceleration: Assembly language or algorithmic acceleration packages
+#
+# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
+# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
+# CONFIG_PKG_USING_QFPLIB_M3 is not set
+# end of acceleration: Assembly language or algorithmic acceleration packages
+
+#
+# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+#
+# CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_CORE is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
+# CONFIG_PKG_USING_CMSIS_NN is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+
+#
+# Micrium: Micrium software products porting for RT-Thread
+#
+# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
+# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
+# CONFIG_PKG_USING_UC_CRC is not set
+# CONFIG_PKG_USING_UC_CLK is not set
+# CONFIG_PKG_USING_UC_COMMON is not set
+# CONFIG_PKG_USING_UC_MODBUS is not set
+# end of Micrium: Micrium software products porting for RT-Thread
+
+# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
+# CONFIG_PKG_USING_CAIRO is not set
+# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_PARTITION is not set
+# CONFIG_PKG_USING_PERF_COUNTER is not set
+# CONFIG_PKG_USING_FILEX is not set
+# CONFIG_PKG_USING_LEVELX is not set
+# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_SQLITE is not set
+# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_DFS_YAFFS is not set
+# CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_DFS_JFFS2 is not set
+# CONFIG_PKG_USING_DFS_UFFS is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
+# CONFIG_PKG_USING_THREAD_POOL is not set
+# CONFIG_PKG_USING_ROBOTS is not set
+# CONFIG_PKG_USING_EV is not set
+# CONFIG_PKG_USING_SYSWATCH is not set
+# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
+# CONFIG_PKG_USING_PLCCORE is not set
+# CONFIG_PKG_USING_RAMDISK is not set
+# CONFIG_PKG_USING_MININI is not set
+# CONFIG_PKG_USING_QBOOT is not set
+# CONFIG_PKG_USING_PPOOL is not set
+# CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
+# CONFIG_PKG_USING_LPM is not set
+# CONFIG_PKG_USING_TLSF is not set
+# CONFIG_PKG_USING_EVENT_RECORDER is not set
+# CONFIG_PKG_USING_ARM_2D is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
+# CONFIG_PKG_USING_TFDB is not set
+# CONFIG_PKG_USING_QPC is not set
+# CONFIG_PKG_USING_AGILE_UPGRADE is not set
+# CONFIG_PKG_USING_FLASH_BLOB is not set
+# CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
+# end of system packages
+
+#
+# peripheral libraries and drivers
+#
+
+#
+# HAL & SDK Drivers
+#
+
+#
+# STM32 HAL & SDK Drivers
+#
+# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32WB55_SDK is not set
+# CONFIG_PKG_USING_STM32_SDIO is not set
+# end of STM32 HAL & SDK Drivers
+
+#
+# Infineon HAL Packages
+#
+# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set
+# CONFIG_PKG_USING_INFINEON_CMSIS is not set
+# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set
+# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set
+# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set
+# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set
+# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set
+# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set
+# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set
+# CONFIG_PKG_USING_INFINEON_USBDEV is not set
+# end of Infineon HAL Packages
+
+# CONFIG_PKG_USING_BLUETRUM_SDK is not set
+# CONFIG_PKG_USING_EMBARC_BSP is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
+# CONFIG_PKG_USING_KENDRYTE_SDK is not set
+# end of Kendryte SDK
+
+# CONFIG_PKG_USING_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRFX is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+# end of HAL & SDK Drivers
+
+#
+# sensors drivers
+#
+# CONFIG_PKG_USING_LSM6DSM is not set
+# CONFIG_PKG_USING_LSM6DSL is not set
+# CONFIG_PKG_USING_LPS22HB is not set
+# CONFIG_PKG_USING_HTS221 is not set
+# CONFIG_PKG_USING_LSM303AGR is not set
+# CONFIG_PKG_USING_BME280 is not set
+# CONFIG_PKG_USING_BME680 is not set
+# CONFIG_PKG_USING_BMA400 is not set
+# CONFIG_PKG_USING_BMI160_BMX160 is not set
+# CONFIG_PKG_USING_SPL0601 is not set
+# CONFIG_PKG_USING_MS5805 is not set
+# CONFIG_PKG_USING_DA270 is not set
+# CONFIG_PKG_USING_DF220 is not set
+# CONFIG_PKG_USING_HSHCAL001 is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_AHT10 is not set
+# CONFIG_PKG_USING_AP3216C is not set
+# CONFIG_PKG_USING_TSL4531 is not set
+# CONFIG_PKG_USING_DS18B20 is not set
+# CONFIG_PKG_USING_DHT11 is not set
+# CONFIG_PKG_USING_DHTXX is not set
+# CONFIG_PKG_USING_GY271 is not set
+# CONFIG_PKG_USING_GP2Y10 is not set
+# CONFIG_PKG_USING_SGP30 is not set
+# CONFIG_PKG_USING_HDC1000 is not set
+# CONFIG_PKG_USING_BMP180 is not set
+# CONFIG_PKG_USING_BMP280 is not set
+# CONFIG_PKG_USING_SHTC1 is not set
+# CONFIG_PKG_USING_BMI088 is not set
+# CONFIG_PKG_USING_HMC5883 is not set
+# CONFIG_PKG_USING_MAX6675 is not set
+# CONFIG_PKG_USING_TMP1075 is not set
+# CONFIG_PKG_USING_SR04 is not set
+# CONFIG_PKG_USING_CCS811 is not set
+# CONFIG_PKG_USING_PMSXX is not set
+# CONFIG_PKG_USING_RT3020 is not set
+# CONFIG_PKG_USING_MLX90632 is not set
+# CONFIG_PKG_USING_MLX90393 is not set
+# CONFIG_PKG_USING_MLX90392 is not set
+# CONFIG_PKG_USING_MLX90397 is not set
+# CONFIG_PKG_USING_MS5611 is not set
+# CONFIG_PKG_USING_MAX31865 is not set
+# CONFIG_PKG_USING_VL53L0X is not set
+# CONFIG_PKG_USING_INA260 is not set
+# CONFIG_PKG_USING_MAX30102 is not set
+# CONFIG_PKG_USING_INA226 is not set
+# CONFIG_PKG_USING_LIS2DH12 is not set
+# CONFIG_PKG_USING_HS300X is not set
+# CONFIG_PKG_USING_ZMOD4410 is not set
+# CONFIG_PKG_USING_ISL29035 is not set
+# CONFIG_PKG_USING_MMC3680KJ is not set
+# CONFIG_PKG_USING_QMP6989 is not set
+# CONFIG_PKG_USING_BALANCE is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
+# CONFIG_PKG_USING_AD7746 is not set
+# CONFIG_PKG_USING_ADT74XX is not set
+# CONFIG_PKG_USING_MAX17048 is not set
+# CONFIG_PKG_USING_AS7341 is not set
+# CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_PAJ7620 is not set
+# CONFIG_PKG_USING_STHS34PF80 is not set
+# end of sensors drivers
+
+#
+# touch drivers
+#
+# CONFIG_PKG_USING_GT9147 is not set
+# CONFIG_PKG_USING_GT1151 is not set
+# CONFIG_PKG_USING_GT917S is not set
+# CONFIG_PKG_USING_GT911 is not set
+# CONFIG_PKG_USING_FT6206 is not set
+# CONFIG_PKG_USING_FT5426 is not set
+# CONFIG_PKG_USING_FT6236 is not set
+# CONFIG_PKG_USING_XPT2046_TOUCH is not set
+# CONFIG_PKG_USING_CST816X is not set
+# CONFIG_PKG_USING_CST812T is not set
+# end of touch drivers
+
+# CONFIG_PKG_USING_REALTEK_AMEBA is not set
+# CONFIG_PKG_USING_BUTTON is not set
+# CONFIG_PKG_USING_PCF8574 is not set
+# CONFIG_PKG_USING_SX12XX is not set
+# CONFIG_PKG_USING_SIGNAL_LED is not set
+# CONFIG_PKG_USING_LEDBLINK is not set
+# CONFIG_PKG_USING_LITTLED is not set
+# CONFIG_PKG_USING_LKDGUI is not set
+# CONFIG_PKG_USING_INFRARED is not set
+# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_AGILE_BUTTON is not set
+# CONFIG_PKG_USING_AGILE_LED is not set
+# CONFIG_PKG_USING_AT24CXX is not set
+# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
+# CONFIG_PKG_USING_PCA9685 is not set
+# CONFIG_PKG_USING_ILI9341 is not set
+# CONFIG_PKG_USING_I2C_TOOLS is not set
+# CONFIG_PKG_USING_NRF24L01 is not set
+# CONFIG_PKG_USING_RPLIDAR is not set
+# CONFIG_PKG_USING_AS608 is not set
+# CONFIG_PKG_USING_RC522 is not set
+# CONFIG_PKG_USING_WS2812B is not set
+# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
+# CONFIG_PKG_USING_MULTI_RTIMER is not set
+# CONFIG_PKG_USING_MAX7219 is not set
+# CONFIG_PKG_USING_BEEP is not set
+# CONFIG_PKG_USING_EASYBLINK is not set
+# CONFIG_PKG_USING_PMS_SERIES is not set
+# CONFIG_PKG_USING_CAN_YMODEM is not set
+# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
+# CONFIG_PKG_USING_QLED is not set
+# CONFIG_PKG_USING_AGILE_CONSOLE is not set
+# CONFIG_PKG_USING_LD3320 is not set
+# CONFIG_PKG_USING_WK2124 is not set
+# CONFIG_PKG_USING_LY68L6400 is not set
+# CONFIG_PKG_USING_DM9051 is not set
+# CONFIG_PKG_USING_SSD1306 is not set
+# CONFIG_PKG_USING_QKEY is not set
+# CONFIG_PKG_USING_RS485 is not set
+# CONFIG_PKG_USING_RS232 is not set
+# CONFIG_PKG_USING_NES is not set
+# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
+# CONFIG_PKG_USING_VDEVICE is not set
+# CONFIG_PKG_USING_SGM706 is not set
+# CONFIG_PKG_USING_RDA58XX is not set
+# CONFIG_PKG_USING_LIBNFC is not set
+# CONFIG_PKG_USING_MFOC is not set
+# CONFIG_PKG_USING_TMC51XX is not set
+# CONFIG_PKG_USING_TCA9534 is not set
+# CONFIG_PKG_USING_KOBUKI is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
+# CONFIG_PKG_USING_MICRO_ROS is not set
+# CONFIG_PKG_USING_MCP23008 is not set
+# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
+# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
+# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
+# CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_LRF_NV7LIDAR is not set
+# CONFIG_PKG_USING_AIP650 is not set
+# CONFIG_PKG_USING_FINGERPRINT is not set
+# CONFIG_PKG_USING_BT_ECB02C is not set
+# CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_BT_MX01 is not set
+# CONFIG_PKG_USING_RGPOWER is not set
+# CONFIG_PKG_USING_SPI_TOOLS is not set
+# end of peripheral libraries and drivers
+
+#
+# AI packages
+#
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
+# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_ULAPACK is not set
+# CONFIG_PKG_USING_QUEST is not set
+# CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
+# end of AI packages
+
+#
+# Signal Processing and Control Algorithm Packages
+#
+# CONFIG_PKG_USING_APID is not set
+# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_QPID is not set
+# CONFIG_PKG_USING_UKAL is not set
+# CONFIG_PKG_USING_DIGITALCTRL is not set
+# CONFIG_PKG_USING_KISSFFT is not set
+# end of Signal Processing and Control Algorithm Packages
+
+#
+# miscellaneous packages
+#
+
+#
+# project laboratory
+#
+# end of project laboratory
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+# end of samples: kernel and components samples
+
+#
+# entertainment: terminal games and other interesting software packages
+#
+# CONFIG_PKG_USING_CMATRIX is not set
+# CONFIG_PKG_USING_SL is not set
+# CONFIG_PKG_USING_CAL is not set
+# CONFIG_PKG_USING_ACLOCK is not set
+# CONFIG_PKG_USING_THREES is not set
+# CONFIG_PKG_USING_2048 is not set
+# CONFIG_PKG_USING_SNAKE is not set
+# CONFIG_PKG_USING_TETRIS is not set
+# CONFIG_PKG_USING_DONUT is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_MORSE is not set
+# CONFIG_PKG_USING_TINYSQUARE is not set
+# end of entertainment: terminal games and other interesting software packages
+
+# CONFIG_PKG_USING_LIBCSV is not set
+# CONFIG_PKG_USING_OPTPARSE is not set
+# CONFIG_PKG_USING_FASTLZ is not set
+# CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
+# CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_CANFESTIVAL is not set
+# CONFIG_PKG_USING_ZLIB is not set
+# CONFIG_PKG_USING_MINIZIP is not set
+# CONFIG_PKG_USING_HEATSHRINK is not set
+# CONFIG_PKG_USING_DSTR is not set
+# CONFIG_PKG_USING_TINYFRAME is not set
+# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
+# CONFIG_PKG_USING_UPACKER is not set
+# CONFIG_PKG_USING_UPARAM is not set
+# CONFIG_PKG_USING_HELLO is not set
+# CONFIG_PKG_USING_VI is not set
+# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_CRCLIB is not set
+# CONFIG_PKG_USING_LWGPS is not set
+# CONFIG_PKG_USING_STATE_MACHINE is not set
+# CONFIG_PKG_USING_DESIGN_PATTERN is not set
+# CONFIG_PKG_USING_CONTROLLER is not set
+# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
+# CONFIG_PKG_USING_MFBD is not set
+# CONFIG_PKG_USING_SLCAN2RTT is not set
+# CONFIG_PKG_USING_SOEM is not set
+# CONFIG_PKG_USING_QPARAM is not set
+# CONFIG_PKG_USING_CorevMCU_CLI is not set
+# end of miscellaneous packages
+
+#
+# Arduino libraries
+#
+# CONFIG_PKG_USING_RTDUINO is not set
+
+#
+# Projects and Demos
+#
+# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set
+# CONFIG_PKG_USING_ARDUINO_SKETCH_LOADER_DEMO is not set
+# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
+# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set
+# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
+# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
+# end of Projects and Demos
+
+#
+# Sensors
+#
+# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
+# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
+# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set
+# end of Sensors
+
+#
+# Display
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
+# CONFIG_PKG_USING_SEEED_TM1637 is not set
+# end of Display
+
+#
+# Timing
+#
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
+# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
+# CONFIG_PKG_USING_ARDUINO_TICKER is not set
+# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
+# end of Timing
+
+#
+# Data Processing
+#
+# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
+# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
+# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set
+# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set
+# end of Data Processing
+
+#
+# Data Storage
+#
+
+#
+# Communication
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
+# end of Communication
+
+#
+# Device Control
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
+# end of Device Control
+
+#
+# Other
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
+# end of Other
+
+#
+# Signal IO
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
+# end of Signal IO
+
+#
+# Uncategorized
+#
+# end of Arduino libraries
+# end of RT-Thread online packages
+
+CONFIG_SOC_FAMILY_HT32=y
+CONFIG_SOC_SERIES_HT32F5=y
+
+#
+# Hardware Drivers Config
+#
+
+#
+# Chip Configuration
+#
+CONFIG_SOC_KERNEL=y
+CONFIG_CORTEX_M0=y
+# CONFIG_CORTEX_M3 is not set
+# CONFIG_SOC_HT32F0006 is not set
+# CONFIG_SOC_HT32F0008 is not set
+# CONFIG_SOC_HT32F50241 is not set
+# CONFIG_SOC_HT32F50343 is not set
+# CONFIG_SOC_HT32F50441 is not set
+# CONFIG_SOC_HT32F50452 is not set
+# CONFIG_SOC_HT32F52241 is not set
+# CONFIG_SOC_HT32F52244 is not set
+# CONFIG_SOC_HT32F52253 is not set
+# CONFIG_SOC_HT32F52341 is not set
+# CONFIG_SOC_HT32F52352 is not set
+# CONFIG_SOC_HT32F52354 is not set
+# CONFIG_SOC_HT32F52367 is not set
+# CONFIG_SOC_HT32F53241 is not set
+CONFIG_SOC_HT32F53252=y
+# CONFIG_SOC_HT32F54241 is not set
+# CONFIG_SOC_HT32F54253 is not set
+# CONFIG_SOC_HT32F57341 is not set
+# CONFIG_SOC_HT32F57352 is not set
+# CONFIG_SOC_HT32F5828 is not set
+# CONFIG_SOC_HT32F59041 is not set
+# CONFIG_SOC_HT32F59741 is not set
+# CONFIG_SOC_HT32F61141 is not set
+# CONFIG_SOC_HT32F61245 is not set
+# CONFIG_SOC_HT32F61355 is not set
+# CONFIG_SOC_HT32F61356 is not set
+# CONFIG_SOC_HT32F61357 is not set
+# CONFIG_SOC_HT32F61641 is not set
+# CONFIG_SOC_HT32F65240 is not set
+# CONFIG_SOC_HT32F67051 is not set
+# CONFIG_SOC_HT32F67741 is not set
+# end of Chip Configuration
+
+#
+# Onboard Peripheral Drivers
+#
+# CONFIG_BSP_USING_TEST is not set
+# end of Onboard Peripheral Drivers
+
+#
+# On-chip Peripheral Drivers
+#
+CONFIG_BSP_USING_GPIO=y
+CONFIG_BSP_USING_UART=y
+# CONFIG_BSP_USING_USART0 is not set
+CONFIG_BSP_USING_USART1=y
+CONFIG_BSP_USING_USART1_NAME="usart1"
+# CONFIG_BSP_USING_UART0 is not set
+# CONFIG_BSP_USING_UART1 is not set
+# CONFIG_BSP_USING_SPI is not set
+# CONFIG_BSP_USING_I2C is not set
+# CONFIG_BSP_USING_ADC is not set
+# CONFIG_BSP_USING_WDT is not set
+# CONFIG_BSP_USING_CAN is not set
+# CONFIG_BSP_USING_USBD is not set
+# end of On-chip Peripheral Drivers
+
+#
+# Board extended module Drivers
+#
+# end of Hardware Drivers Config

+ 12 - 0
bsp/ht32/ht32f53252/Kconfig

@@ -0,0 +1,12 @@
+mainmenu "RT-Thread Configuration"
+
+BSP_DIR := .
+
+RTT_DIR := ../../..
+
+PKGS_DIR := packages
+
+source "$(RTT_DIR)/Kconfig"
+osource "$PKGS_DIR/Kconfig"
+rsource "../libraries/Kconfig"
+rsource "board/Kconfig"

+ 108 - 0
bsp/ht32/ht32f53252/README.md

@@ -0,0 +1,108 @@
+# HT32F53252 BSP 说明
+
+## 简介
+
+ESK32-30522是合泰基于HT32F53252芯片并针对Cortex®-M0+入门而设计的评估板。本文档是为ESK32-30522开发板提供的BSP(板级支持包)说明。
+
+主要内容如下:
+
+- 开发板资源介绍
+- BSP 快速上手
+- 进阶使用方法
+
+通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。
+
+## 开发板介绍
+
+ESK32-30522使用32位Arm® Cortex®-M0+高性能、低功耗单片机HT32F53252,针对Cortex®-M0+入门而设计。开发板外观如下图所示:
+
+![board.png](figures/board.jpg)
+
+该开发板常用 **板载资源** 如下:
+
+- MCU:HT32F53252,主频 60MHz,128KB FLASH ,16KB SRAM
+- 常用外设
+    - LED:2个,(绿色,PC14、PC15)
+- 常用接口:USB 转串口 、USB SLAVE
+- 调试接口:板载的 e-Link32 Lite SWD 下载
+
+开发板更多详细信息请参考合泰官网的相关文档[ESK32-30522](https://www.holtek.com.cn/page/detail/dev_kit/ESK32-30522)。
+
+## 外设支持
+
+本 BSP 目前对外设的支持情况如下:
+
+| **板载外设** | **支持情况** | **备注** |
+| :--- | :---: | :--- |
+| USB 转串口 | 支持  | 使用 USART1 |
+| **片上外设** | **支持情况** | **备注** |
+| GPIO | 支持  | PA0, PA1...PD3 ---> PIN: 0, 1...51 |
+| USART | 支持  | USART0/1 |
+| UART | 支持  | UART0/1 |
+| SPI | 支持  | SPI0/1 |
+| I2C | 支持  | 硬件 I2C0/1 |
+| ADC | 暂不支持  |     |
+| WDT | 暂不支持  |     |
+
+## 使用说明
+
+使用说明分为如下两个章节:
+
+- 快速上手
+    
+    本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。
+    
+- 进阶使用
+    
+    本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多片上资源,实现更多高级功能。
+    
+
+### 快速上手
+
+本 BSP 为仅为开发者提供MDK5的工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。
+
+#### 硬件连接
+
+使用数据线通过板载的 e-Link32 Lite将芯片连接到 PC。
+
+#### 编译下载
+
+双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。
+
+> 注:工程默认配置使用CMSIS-DAP下载方式,在通过 e-Link32 Lite 连接开发板的基础上,点击下载按钮即可下载程序到开发板。
+
+#### 运行结果
+
+下载程序成功之后,系统会自动运行,观察开发板上 LED 的运行效果,LED1和LED2交替闪烁。
+
+连接开发板对应串口到 PC(也可以通过e-Link32 Lite的模拟串口将开发板连接到PC), 在终端工具里调整好串口配置(115200-8-1-N)并打开相应的串口,复位设备后,可以看到 RT-Thread 的输出信息:
+
+> 注:由于RT-Thread的finsh控制台使用的是命令行的输入形式,推荐使用串口调试工具如:Tabby terminal 或者 Tera Term。
+
+```bash
+ \ | /
+- RT -     Thread Operating System
+ / | \     5.1.0 build Apr 10 2024 14:39:43
+ 2006 - 2024 Copyright by RT-Thread team
+msh >
+```
+
+### 进阶使用
+
+此 BSP 默认只开启了 GPIO 和 USART1 的功能,如果需使用更多的片上资源,需要利用 ENV 工具对BSP 进行配置,步骤如下:
+
+1.  在 bsp 下打开 env 工具。
+    
+2.  输入`menuconfig`命令配置工程,配置好之后保存退出。
+  
+3.  输入`scons --target=mdk5` 命令重新生成工程。
+
+## 注意事项
+
+开发板和芯片的相关资料可以在[合泰官网](https://www.holtek.com.cn/page/index)进行查找和下载,如芯片的数据手册和开发使用手册、开发板的原理图、Keil_v5的pack安装包等。
+
+## 联系人信息
+
+维护人:
+
+- [QT-one](https://github.com/QT-one)

+ 15 - 0
bsp/ht32/ht32f53252/SConscript

@@ -0,0 +1,15 @@
+# for module compiling
+import os                   #包含os库
+Import('RTT_ROOT')          #导入RTT_ROOT对象(RTT_ROOT代表的是RT-Thread源码包)
+from building import *      #把building模块的所有内容都导入到当前模块中
+
+cwd = GetCurrentDir()       #获取当前路径,并将该路径信息保存到变量cwd中
+objs = []                   #创建一个list型变量objs
+list = os.listdir(cwd)      #得到当前目录下的所有子目录,并保存到变量list中
+
+for d in list:              #for循环用d记录循环的次数,直到寻遍所有路径
+    path = os.path.join(cwd, d)            #根据d获取到不同的路径
+    if os.path.isfile(os.path.join(path, 'SConscript')):       #如果该路径下存在名为SConscript的文件
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))     #将路径中SConscript文件内的源码读取到objs中
+
+Return('objs')              #将objs返回出去

+ 63 - 0
bsp/ht32/ht32f53252/SConstruct

@@ -0,0 +1,63 @@
+import os
+import sys
+import rtconfig
+
+if os.getenv('RTT_ROOT'):
+    RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+    RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..')
+
+sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
+try:
+    from building import *
+except:
+    print('Cannot found RT-Thread root directory, please check RTT_ROOT')
+    print(RTT_ROOT)
+    exit(-1)
+
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
+
+DefaultEnvironment(tools=[])
+env = Environment(tools = ['mingw'],
+    AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+    CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
+    AR = rtconfig.AR, ARFLAGS = '-rc',
+    CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
+    LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+
+if rtconfig.PLATFORM == 'iar':
+    env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
+    env.Replace(ARFLAGS = [''])
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
+
+Export('RTT_ROOT')
+Export('rtconfig')
+
+SDK_ROOT = os.path.abspath('./')
+
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
+
+SDK_LIB = libraries_path_prefix
+Export('SDK_LIB')
+
+# prepare building environment
+objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
+
+ht32_library = 'HT32_STD_5xxxx_FWLib' 
+rtconfig.BSP_LIBRARY_TYPE = ht32_library
+
+# include libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, ht32_library, 'SConscript')))
+
+# include usb libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'usbd_library', 'SConscript')))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'ht32_drivers', 'SConscript')))
+
+# make a building
+DoBuilding(TARGET, objs)

+ 26 - 0
bsp/ht32/ht32f53252/applications/SConscript

@@ -0,0 +1,26 @@
+#导入其他模块的变量
+Import('RTT_ROOT')
+Import('rtconfig')
+
+#导入使用到的模块
+from building import *
+
+#获取当前目录的路径
+cwd = GetCurrentDir()
+
+#创建一个列表,用于保存需要使用到的C文件路径
+#src = Glob('*.c')
+src = Split("""
+main.c
+""")
+if GetDepend(['BSP_USING_TEST']):
+    src += ['test.c']
+
+#创建一个列表,用于保存需要包含的H文件路径
+path = [cwd]
+
+#创建一个组别
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = path)
+
+#返回创建好的组别
+Return('group')

+ 37 - 0
bsp/ht32/ht32f53252/applications/main.c

@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2006-2024, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-04-08     QT-one       first version
+ */
+
+#include <rtthread.h>
+#include <rtdevice.h>
+#include "board.h"
+
+/* defined the led1 pin: pc14 */
+#define LED1_PIN    GET_PIN(C, 14)
+/* defined the led2 pin: pc15 */
+#define LED2_PIN    GET_PIN(C, 15)
+
+int main(void)
+{
+    rt_uint32_t speed = 200;
+    /* set led1 pin mode to output */
+    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
+    /* set led2 pin mode to output */
+    rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
+
+    while (1)
+    {
+        rt_pin_write(LED1_PIN, PIN_LOW);
+        rt_pin_write(LED2_PIN, PIN_HIGH);
+        rt_thread_mdelay(speed);
+        rt_pin_write(LED1_PIN, PIN_HIGH);
+        rt_pin_write(LED2_PIN, PIN_LOW);
+        rt_thread_mdelay(speed);
+    }
+}

+ 941 - 0
bsp/ht32/ht32f53252/applications/test.c

@@ -0,0 +1,941 @@
+/*
+ * Copyright (c) 2006-2025, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-06-17     QT-one       first version
+ */
+
+#include "board.h"
+
+#ifdef BSP_USING_TEST
+
+/* Task stack */
+#define THREAD_PRIORITY             25
+#define THREAD_STACK_SIZE           512
+#define THREAD_TIMESLICE            5
+
+/* Test pins */
+#define TEST_LED0_PIN               GET_PIN(C, 14)
+#define TEST_LED1_PIN               GET_PIN(C, 15)
+#define TEST_LED2_PIN               GET_PIN(C, 1)
+
+#define TEST_WAKEUP_PIN             GET_PIN(B, 12)
+#define TEST_KEY1_PIN               GET_PIN(D, 1)
+#define TEST_KEY2_PIN               GET_PIN(D, 2)
+
+#define TEST_OTHER_PIN              GET_PIN(B, 12)
+#define TEST_OUTPUT_PIN             GET_PIN(C, 1)
+
+#define TEST_INPUT_PIN              GET_PIN(D, 1)
+#define TEST_INT_PIN                GET_PIN(D, 2)
+#define TEST_RES_PIN                GET_PIN(C, 1)
+
+
+/* Event flags */
+#define TEST_GPIO_INT_ENV           (1 << 10)
+#define TEST_GPIO_KEY_ENV           (1 << 15)
+static struct rt_event              led_event;  /* LED event */
+#define TASK_KILL_FLAG              (1 << 10)
+static struct rt_event              task_event; /* Task event */
+
+/* EEPROM Read/Write Data Structure */
+typedef union
+{
+    rt_uint8_t data[30];
+    struct
+    {
+        rt_uint8_t write_addr;
+        char write_date[29];
+    }in_data;
+}eeprom_write_type;
+/* Semaphore variables */
+static struct rt_semaphore rx_sem;
+
+/* Mutually exclusive variables */
+static rt_mutex_t task_mutex = RT_NULL; /* task mutex */
+
+/* device handle */
+#ifdef BSP_USING_UART
+static rt_device_t serial;
+#endif
+#ifdef BSP_USING_WDT
+static rt_device_t wdt_dev;
+#endif
+#ifdef BSP_USING_I2C
+static struct rt_i2c_bus_device *i2c_dev;
+#endif
+#ifdef BSP_USING_SPI
+static struct rt_spi_device *spi_dev;
+#endif
+
+/* In-file function declarations */
+//static void sys_run_dir(void *parameter);
+//static void gpio_output_test(void *parameter);
+//static void gpio_input_test(void *parameter);
+//static void key_iqr_handle(void *args);
+
+/* Task registration */
+int task_registration(void)
+{
+//    USB_Configuration(RT_NULL);
+    /* Create a dynamic mutex */
+    task_mutex = rt_mutex_create("task_mutex", RT_IPC_FLAG_FIFO);
+    if (task_mutex == RT_NULL)
+    {
+        rt_kprintf("rt_mutex_create error.\n");
+        return -1;
+    }
+    /* Create a task event */
+    if(rt_event_init(&task_event,"task_event",RT_IPC_FLAG_FIFO) != RT_EOK)
+    {
+        rt_kprintf("rt_mutex_create error.\n");
+        return -1;
+    }
+    return 0;
+}
+INIT_BOARD_EXPORT(task_registration);
+
+/* System operation indicator */
+#ifdef BSP_USING_GPIO
+static void sys_run_dir(void *parameter)
+{
+    rt_uint32_t e;
+    rt_pin_mode(TEST_LED2_PIN, PIN_MODE_OUTPUT);
+    while(1)
+    {
+        if(rt_event_recv(&task_event,TASK_KILL_FLAG,
+                        RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
+                        RT_WAITING_NO, &e) == RT_EOK)
+        {
+            rt_thread_t tid = rt_thread_self();
+            rt_thread_delete(tid);
+        }
+        rt_pin_write(TEST_LED2_PIN, PIN_LOW);
+        rt_thread_mdelay(500);
+        rt_pin_write(TEST_LED2_PIN, PIN_HIGH);
+        rt_thread_mdelay(500);
+    }
+}
+
+static int sys_run_task(int argc, char *argv[])
+{
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            if(rt_mutex_take(task_mutex, RT_WAITING_NO) != RT_EOK)
+            {
+                rt_kprintf("The test thread is occupied.\n");
+                return -RT_ERROR;
+            }
+            else
+            {
+                /* Register the system indicator task */
+                rt_thread_t sys_led_task = rt_thread_create("sys_led_task",
+                                                sys_run_dir, RT_NULL,
+                                                THREAD_STACK_SIZE,
+                                                THREAD_PRIORITY, THREAD_TIMESLICE);
+                if (sys_led_task != RT_NULL)
+                    rt_thread_startup(sys_led_task);
+                rt_kprintf("The sys run task is registered.\n");
+            }
+        }
+        else if(rt_strcmp(argv[1],"end") == 0)
+        {
+            rt_event_send(&task_event,TASK_KILL_FLAG);
+            rt_mutex_release(task_mutex);
+            rt_kprintf("The sys run task has been deleted.\n");
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s end\n",__func__);
+        return -1;
+    }
+    return -1;
+}
+MSH_CMD_EXPORT(sys_run_task, sys run task operation);
+
+/* Gpio output test */
+static void gpio_output_test(void *parameter)
+{
+    rt_uint32_t e;
+    rt_pin_mode(TEST_OUTPUT_PIN, PIN_MODE_OUTPUT);
+    while(1)
+    {
+        if(rt_event_recv(&task_event,TASK_KILL_FLAG,
+                        RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
+                        RT_WAITING_NO, &e) == RT_EOK)
+        {
+            rt_thread_t tid = rt_thread_self();
+            rt_thread_delete(tid);
+        }
+        rt_pin_write(TEST_OUTPUT_PIN, PIN_LOW);
+        rt_thread_mdelay(500);
+        rt_pin_write(TEST_OUTPUT_PIN, PIN_HIGH);
+        rt_thread_mdelay(500);
+    }
+}
+
+static int gpio_output_task(int argc, char *argv[])
+{
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            if(rt_mutex_take(task_mutex, RT_WAITING_NO) != RT_EOK)
+            {
+                rt_kprintf("The test thread is occupied.\n");
+                return -RT_ERROR;
+            }
+            else
+            {
+                /* Gpio output test tasks */
+                rt_thread_t gpio_output_task = rt_thread_create("gpio_output_task",
+                                                gpio_output_test, RT_NULL,
+                                                THREAD_STACK_SIZE,
+                                                THREAD_PRIORITY, THREAD_TIMESLICE);
+                if (gpio_output_task != RT_NULL)
+                    rt_thread_startup(gpio_output_task);
+                rt_kprintf("The gpio output task is registered.\n");
+            }
+        }
+        else if(rt_strcmp(argv[1],"end") == 0)
+        {
+            rt_event_send(&task_event,TASK_KILL_FLAG);
+            rt_mutex_release(task_mutex);
+            rt_kprintf("The gpio output task has been deleted.\n");
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s end\n",__func__);
+        return -1;
+    }
+    return -1;
+}
+MSH_CMD_EXPORT(gpio_output_task, gpio output task operation);
+/* Gpio input test */
+static void key_iqr_handle(void *args)
+{
+    /* gpio iqr fun */
+    rt_event_send(&led_event,TEST_GPIO_INT_ENV);
+}
+
+static void gpio_input_test(void *parameter)
+{
+    uint8_t led_flag = PIN_LOW;
+    rt_uint32_t e;
+
+    rt_pin_mode(TEST_RES_PIN, PIN_MODE_OUTPUT);
+    rt_pin_write(TEST_RES_PIN, PIN_LOW);
+
+    rt_pin_mode(TEST_WAKEUP_PIN,PIN_MODE_INPUT_PULLDOWN);
+    rt_pin_mode(TEST_INPUT_PIN,PIN_MODE_INPUT_PULLUP);
+
+    rt_pin_attach_irq(TEST_INT_PIN,PIN_IRQ_MODE_FALLING,key_iqr_handle,RT_NULL);
+    rt_pin_irq_enable(TEST_INT_PIN,PIN_IRQ_ENABLE);
+
+    if(rt_event_init(&led_event,"led_event",RT_IPC_FLAG_FIFO) != RT_EOK)
+    {
+        rt_kprintf("rt_mutex_create error.\n");
+    }
+    while(1)
+    {
+        if(PIN_LOW == rt_pin_read(TEST_INPUT_PIN))
+        {
+            while(PIN_LOW == rt_pin_read(TEST_INPUT_PIN));
+            rt_event_send(&led_event,TEST_GPIO_KEY_ENV);
+        }
+        if(rt_event_recv(&led_event,(TEST_GPIO_INT_ENV|TEST_GPIO_KEY_ENV),
+                        RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
+                        RT_WAITING_NO, &e) == RT_EOK)
+        {
+            led_flag = (led_flag == PIN_LOW)?PIN_HIGH:PIN_LOW;
+            rt_pin_write(TEST_RES_PIN, led_flag);
+        }
+        if(rt_event_recv(&task_event,TASK_KILL_FLAG,
+                        RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
+                        RT_WAITING_NO, &e) == RT_EOK)
+        {
+            rt_thread_t tid = rt_thread_self();
+            rt_thread_delete(tid);
+        }
+    }
+}
+
+static int gpio_input_task(int argc, char *argv[])
+{
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            if(rt_mutex_take(task_mutex, RT_WAITING_NO) != RT_EOK)
+            {
+                rt_kprintf("The test thread is occupied.\n");
+                return -RT_ERROR;
+            }
+            /* Gpio input test tasks */
+            rt_thread_t gpio_input_task = rt_thread_create("gpio_input_task",
+                                            gpio_input_test, RT_NULL,
+                                            THREAD_STACK_SIZE,
+                                            THREAD_PRIORITY, THREAD_TIMESLICE);
+            if (gpio_input_task != RT_NULL)
+                rt_thread_startup(gpio_input_task);
+            rt_kprintf("The gpio input task is registered.\n");
+        }
+        else if(rt_strcmp(argv[1],"end") == 0)
+        {
+            rt_event_send(&task_event,TASK_KILL_FLAG);
+            rt_mutex_release(task_mutex);
+            rt_kprintf("The gpio input task has been deleted.\n");
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s end\n",__func__);
+        return -1;
+    }
+    return -1;
+}
+MSH_CMD_EXPORT(gpio_input_task, gpio input task operation);
+#endif
+/* uart test */
+#ifdef BSP_USING_UART
+static rt_err_t uart_iqr_handle(rt_device_t dev, rt_size_t size)
+{
+    /* Serial port callback function */
+    rt_sem_release(&rx_sem);
+    return RT_EOK;
+}
+
+static void uart_thread(void *parameter)
+{
+    char ch;
+    while (1)
+    {
+        /* Serial port readout */
+        while (rt_device_read(serial, -1, &ch, 1) != 1)
+        {
+            /* semaphore blocking */
+            rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
+        }
+        /* Output the data obtained from the serial port */
+        rt_device_write(serial, 0, &ch, 1);
+        rt_device_write(serial,0,"\n",1);
+    }
+}
+
+static int uart_task(int argc, char *argv[])
+{
+    rt_err_t ret = RT_EOK;
+
+    char uart_name[RT_NAME_MAX] = "uart1";
+    char str[] = "hello RT-Thread!\r\n";
+    if (argc == 3)
+    {
+        if(rt_strcmp(argv[2],"start") == 0)
+        {
+            rt_strncpy(uart_name, argv[1], RT_NAME_MAX);
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s <uart name> start\n",__func__);
+            rt_kprintf("%s <uart name> end\n",__func__);
+            return -1;
+        }
+    }
+    else if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s start\n",__func__);
+            rt_kprintf("%s end\n",__func__);
+            return -1;
+        }
+    }
+    else
+    {
+        rt_kprintf("Incomplete instruction.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s <uart name> start/end\n",__func__);
+        rt_kprintf("or\n");
+        rt_kprintf("%s start/end\n",__func__);
+        return -1;
+    }
+    /* Find Serial Devices */
+    serial = rt_device_find(uart_name);
+    if (!serial)
+    {
+        rt_kprintf("find %s failed!\n", uart_name);
+        return -RT_ERROR;
+    }
+    /* Initializing a Signal */
+    rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
+    /* Open the serial device with read/write and interrupt reception. */
+    rt_device_open(serial, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
+    /* Setting the receive callback function */
+    rt_device_set_rx_indicate(serial, uart_iqr_handle);
+    /* Send String */
+    rt_device_write(serial, 0, str, (sizeof(str) - 1));
+    /* Creating a serial thread */
+    rt_thread_t thread = rt_thread_create("serial",
+                                        uart_thread, RT_NULL,
+                                        THREAD_STACK_SIZE,
+                                        THREAD_PRIORITY, THREAD_TIMESLICE);
+    if (thread != RT_NULL)
+        rt_thread_startup(thread);
+
+    return ret;
+}
+MSH_CMD_EXPORT(uart_task, uart device sample);
+#endif
+/* hw/sw iic test */
+#ifdef BSP_USING_I2C
+static void i2c_thread(void *parameter)
+{
+    uint8_t write_addr = 0x00;
+    eeprom_write_type eeprom_date;
+    char send_dat[] = "i2c write eeprom";
+    char read_dat[20] = {0};
+    struct rt_i2c_msg msg1[2];
+
+    eeprom_date.in_data.write_addr = write_addr;
+    rt_strncpy(eeprom_date.in_data.write_date, send_dat, rt_strlen(send_dat));
+
+    msg1[0].addr = 0x51;
+    msg1[0].flags = RT_I2C_WR;
+    msg1[0].buf = eeprom_date.data;
+    msg1[0].len = (rt_strlen(send_dat) + 1);
+    if (rt_i2c_transfer(i2c_dev, msg1, 1) == 1)
+    {
+        rt_kprintf("eeprom write succeed!\n");
+        rt_kprintf("write_dat = %s\r\n",send_dat);
+    }
+    else
+    {
+        rt_kprintf("eeprom write error!\n");
+    }
+    msg1[0].addr = 0x51;
+    msg1[0].flags = RT_I2C_WR;
+    msg1[0].buf = &write_addr;
+    msg1[0].len = 1;
+
+    msg1[1].addr = 0x51;
+    msg1[1].flags = RT_I2C_RD;
+    msg1[1].buf = (uint8_t *)read_dat;
+    msg1[1].len = rt_strlen(send_dat);
+
+    if (rt_i2c_transfer(i2c_dev, msg1, 2) == 2)
+    {
+        rt_kprintf("eeprom read succeed!\n");
+        rt_kprintf("read_dat = %s\r\n",read_dat);
+    }
+    else
+    {
+        rt_kprintf("eeprom read error!\n");
+    }
+}
+
+static int i2c_task(int argc, char *argv[])
+{
+    rt_err_t ret = RT_EOK;
+
+    char i2c_name[RT_NAME_MAX] = "hw_i2c1";
+    if (argc == 3)
+    {
+        if(rt_strcmp(argv[2],"start") == 0)
+        {
+            rt_strncpy(i2c_name, argv[1], RT_NAME_MAX);
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s <i2c name> start\n",__func__);
+            rt_kprintf("%s <i2c name> end\n",__func__);
+            return -1;
+        }
+    }
+    else if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s start\n",__func__);
+            rt_kprintf("%s end\n",__func__);
+            return -1;
+        }
+    }
+    else
+    {
+        rt_kprintf("Incomplete instruction.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s <i2c name> start/end\n",__func__);
+        rt_kprintf("or\n");
+        rt_kprintf("%s start/end\n",__func__);
+        return -1;
+    }
+    /* Find I2C Devices */
+    i2c_dev = (struct rt_i2c_bus_device *)rt_device_find(i2c_name);
+    if (!i2c_dev)
+    {
+        rt_kprintf("find %s failed!\n", i2c_name);
+        return -RT_ERROR;
+    }
+    /* Execute I2C read/write eeprom function */
+    i2c_thread(RT_NULL);
+    return ret;
+}
+MSH_CMD_EXPORT(i2c_task, i2c device sample);
+#endif
+/* spi test */
+#ifdef BSP_USING_SPI
+static void spi_thread(void *parameter)
+{
+    rt_uint8_t w25x_read_id = 0x9F;
+    rt_uint8_t id[5] = {0};
+
+    /* Use rt_spi_send_then_recv() to send commands to read IDs */
+    rt_spi_take_bus(spi_dev);
+    rt_spi_take(spi_dev);
+    rt_spi_send_then_recv(spi_dev, &w25x_read_id, 1, id, 3);
+    rt_spi_release(spi_dev);
+    rt_spi_release_bus(spi_dev);
+    rt_kprintf("use rt_spi_send_then_recv() read MX25L6406 ID is:0x%X%X%X\n", id[0], id[1], id[2]);
+}
+
+static int spi_task(int argc, char *argv[])
+{
+    rt_err_t ret = RT_EOK;
+    struct rt_spi_configuration cfg;
+    char spi_name[RT_NAME_MAX] = "spi1";
+    char flash_name[RT_NAME_MAX] = "flash";
+
+    if (argc == 3)
+    {
+        if(rt_strcmp(argv[2],"start") == 0)
+        {
+            rt_strncpy(spi_name, argv[1], RT_NAME_MAX);
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s <spi name> start\n",__func__);
+            rt_kprintf("%s <spi name> end\n",__func__);
+            return -1;
+        }
+    }
+    else if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+        }
+        else
+        {
+            rt_kprintf("Necessary parameters are missing.\n");
+            rt_kprintf("You can use the following commands.\n");
+            rt_kprintf("%s start\n",__func__);
+            rt_kprintf("%s end\n",__func__);
+            return -1;
+        }
+    }
+    else
+    {
+        rt_kprintf("Incomplete instruction.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s <spi name> start/end\n",__func__);
+        rt_kprintf("or\n");
+        rt_kprintf("%s start/end\n",__func__);
+        return -1;
+    }
+    /* Binding CS pin */
+    ret = rt_hw_spi_device_attach(spi_name,flash_name,HT_GPIOD,GPIO_PIN_0);
+    if(ret != RT_EOK)
+    {
+        rt_kprintf("Failed CS pin binding for %s!\n", spi_name);
+        return -RT_ERROR;
+    }
+    /* Find flash devices */
+    spi_dev = (struct rt_spi_device*)rt_device_find(flash_name);
+    if (!spi_dev)
+    {
+        rt_kprintf("find %s failed!\n", spi_name);
+        return -RT_ERROR;
+    }
+    /* Configuring the SPI Bus */
+    cfg.data_width = 8;
+    cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_3 | RT_SPI_MSB;
+    cfg.max_hz = 8;
+    rt_spi_configure(spi_dev,&cfg);
+    rt_kprintf("SPI0 initialization succeeded!\n");
+
+    /* Execute flash read and write functions */
+    spi_thread(RT_NULL);
+    rt_device_unregister((rt_device_t)spi_dev);
+    return ret;
+}
+MSH_CMD_EXPORT(spi_task, spi device sample);
+#endif
+/* adc test */
+#ifdef BSP_USING_ADC
+static void adc_test(void *parameter)
+{
+    rt_uint32_t adc0_ch6_val,adc0_ch7_val;
+    rt_adc_device_t adc_dev = (rt_adc_device_t)rt_device_find("adc0");
+    if (!adc_dev)
+    {
+        rt_kprintf("No ADC0 device found!\n");
+    }
+    else
+    {
+        rt_adc_enable(adc_dev,ADC_CH_6);
+        rt_adc_enable(adc_dev,ADC_CH_7);
+    }
+    while(1)
+    {
+        adc0_ch6_val = rt_adc_read(adc_dev,6);
+        adc0_ch7_val = rt_adc_read(adc_dev,7);
+        rt_kprintf("adc0_ch6_val = %d\n",adc0_ch6_val);
+        rt_kprintf("adc0_ch7_val = %d\n",adc0_ch7_val);
+        rt_thread_mdelay(50);
+    }
+}
+
+static int adc_task(int argc, char *argv[])
+{
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            /* Adc test tasks */
+            rt_thread_t adc_task = rt_thread_create("adc_task",
+                                            adc_test, RT_NULL,
+                                            THREAD_STACK_SIZE,
+                                            THREAD_PRIORITY, THREAD_TIMESLICE);
+            if (adc_task != RT_NULL)
+                rt_thread_startup(adc_task);
+            rt_kprintf("The adc task is registered.\n");
+        }
+        else if(rt_strcmp(argv[1],"end") == 0)
+        {
+            rt_event_send(&task_event,TASK_KILL_FLAG);
+            rt_kprintf("The adc task has been deleted.\n");
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s end\n",__func__);
+        return -1;
+    }
+    return -1;
+}
+MSH_CMD_EXPORT(adc_task, adc task operation);
+#endif
+/* wdt test */
+#ifdef BSP_USING_WDT
+static void wdt_test(void)
+{
+    rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
+}
+
+static int wdt_task(int argc, char *argv[])
+{
+    rt_err_t ret = -RT_ERROR;
+    rt_uint16_t wdt_time = 5;
+    char dev_name[] = "wdt";
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            /* Find wdt devices */
+            wdt_dev = rt_device_find(dev_name);
+            if(wdt_dev == RT_NULL)
+            {
+                rt_kprintf("No corresponding equipment found.\n");
+                return -1;
+            }
+            /* Configuring the Watchdog */
+            ret = rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &wdt_time);
+            if(ret != RT_EOK)
+            {
+                rt_kprintf("wdt configuration failed.\n");
+                return -1;
+            }
+            /* Start the Watchdog */
+            ret = rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_START, RT_NULL);
+            if(ret != RT_EOK)
+            {
+                rt_kprintf("wdt start failed.\n");
+                return -1;
+            }
+            /* Setting up idle threads */
+            rt_thread_idle_sethook(wdt_test);
+            rt_kprintf("Watchdog started successfully.\n");
+        }
+        else if(rt_strcmp(argv[1],"stop") == 0)
+        {
+            /* Verify device handle */
+            if(wdt_dev == RT_NULL)
+            {
+                rt_kprintf("Device handle does not exist.\n");
+                return -1;
+            }
+            /* Stop the Watchdog */
+            ret = rt_device_control(wdt_dev, RT_DEVICE_CTRL_WDT_STOP, RT_NULL);
+            if(ret != RT_EOK)
+            {
+                rt_kprintf("wdt start failed.\n");
+                return -1;
+            }
+            /* Hook function to delete idle threads */
+            rt_thread_idle_delhook(wdt_test);
+            rt_kprintf("Watchdog has stopped.\n");
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s stop\n",__func__);
+        return -1;
+    }
+    return -1;
+}
+MSH_CMD_EXPORT(wdt_task, wdt task operation);
+#endif
+/* usbd test */
+#ifdef BSP_USING_USBD
+static void usbd_test(void *parameter)
+{
+    rt_device_t dev = RT_NULL;
+    char dev_name[] = "vcom";
+    char buf[] = "usbd vcom test!\r\n";
+
+    dev = rt_device_find(dev_name);
+
+    if (dev)
+    {
+        rt_device_open(dev, RT_DEVICE_FLAG_RDWR);
+    }
+    else
+    {
+        rt_kprintf("Device with name %s not found.\n",dev_name);
+        rt_thread_t tid = rt_thread_self();
+        rt_thread_delete(tid);
+    }
+    while (1)
+    {
+        rt_device_write(dev, 0, buf, rt_strlen(buf));
+        rt_thread_mdelay(500);
+    }
+}
+
+static int usbd_task(int argc, char *argv[])
+{
+    rt_err_t ret = -RT_ERROR;
+
+    if(argc == 2)
+    {
+        if(rt_strcmp(argv[1],"start") == 0)
+        {
+            /* Gpio input test tasks */
+            rt_thread_t usbd_vcom_task = rt_thread_create("usbd_vcom_task",
+                                            usbd_test, RT_NULL,
+                                            THREAD_STACK_SIZE,
+                                            THREAD_PRIORITY, THREAD_TIMESLICE);
+            if (usbd_vcom_task != RT_NULL)
+            {
+                rt_thread_startup(usbd_vcom_task);
+                rt_kprintf("The usbd vcom task is registered.\n");
+            }
+            else
+            {
+                rt_kprintf("usbd vcom task registration failed.\n");
+            }
+            ret = RT_EOK;
+        }
+        else if(rt_strcmp(argv[1],"stop") == 0)
+        {
+            ret = RT_EOK;
+        }
+    }
+    else
+    {
+        rt_kprintf("Necessary parameters are missing.\n");
+        rt_kprintf("You can use the following commands.\n");
+        rt_kprintf("%s start\n",__func__);
+        rt_kprintf("%s stop\n",__func__);
+    }
+    return ret;
+}
+MSH_CMD_EXPORT(usbd_task, usbd task operation);
+
+#endif /* BSP_USING_USBD */
+
+#ifdef BSP_USING_CAN
+
+#define CAN_DEV_NAME       BSP_USING_CAN_NAME
+
+static struct rt_semaphore rx_sem;
+static rt_device_t can_dev;
+
+static rt_err_t can_rx_call(rt_device_t dev, rt_size_t size)
+{
+    rt_sem_release(&rx_sem);
+    return RT_EOK;
+}
+static rt_err_t can_tx_data(void)
+{
+    struct rt_can_msg msg = {0};
+    rt_size_t  size;
+
+    msg.id = 0x540;
+    msg.ide = RT_CAN_STDID;
+    msg.rtr = RT_CAN_DTR;
+    msg.len = 8;
+
+    msg.data[0] = 0x00;
+    msg.data[1] = 0x01;
+    msg.data[2] = 0x02;
+    msg.data[3] = 0x03;
+    msg.data[4] = 0x04;
+    msg.data[5] = 0x05;
+    msg.data[6] = 0x06;
+    msg.data[7] = 0x07;
+
+    size = rt_device_write(can_dev, 0, &msg, sizeof(msg));
+    if (size == 0)
+    {
+        rt_kprintf("can dev write data failed!\n");
+    }
+    return 0;
+}
+
+static void can_rx_thread(void *parameter)
+{
+    int i;
+    rt_size_t size;
+    rt_uint8_t send_cut = 0;
+    struct rt_can_msg rxmsg = {0};
+
+    /* Setting the receive callback function */
+    rt_device_set_rx_indicate(can_dev, can_rx_call);
+
+    /* Setting the Hardware Filter Table */
+    struct rt_can_filter_item items[1] =
+    {   /* id ide rtr mode mask */
+        RT_CAN_FILTER_ITEM_INIT(0x541, RT_CAN_STDID, RT_CAN_DTR, 0, 0x7ff),
+    };
+    struct rt_can_filter_config cfg = {1, 1, items};
+    rt_device_control(can_dev, RT_CAN_CMD_SET_FILTER, &cfg);
+
+    can_tx_data();
+    while (1)
+    {
+
+        rxmsg.hdr_index = -1;
+        rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
+        rt_device_read(can_dev, 0, &rxmsg, sizeof(rxmsg));
+
+        rt_kprintf("ID:%x ", rxmsg.id);
+        for (i = 0; i < 8; i++)
+        {
+            rt_kprintf(" %2x", rxmsg.data[i]);
+            rxmsg.data[i] += 1;
+        }
+        rt_kprintf(" \n");
+        rxmsg.id = 0x540;
+        rxmsg.ide = RT_CAN_STDID;
+        rxmsg.rtr = RT_CAN_DTR;
+        rxmsg.len = 8;
+        rt_thread_mdelay(1000);
+        if(send_cut < 10)
+        {
+            size = rt_device_write(can_dev, 0, &rxmsg, sizeof(rxmsg));
+            send_cut++;
+            if (size == 0)
+            {
+                rt_kprintf("can dev write data failed!\n");
+            }
+        }
+    }
+}
+
+int can_test(int argc, char *argv[])
+{
+    rt_err_t res;
+    rt_thread_t thread;
+    char can_name[RT_NAME_MAX];
+
+    if (argc == 2)
+    {
+        rt_strncpy(can_name, argv[1], RT_NAME_MAX);
+    }
+    else
+    {
+        rt_strncpy(can_name, CAN_DEV_NAME, RT_NAME_MAX);
+    }
+
+    /* Find a CAN Device */
+    can_dev = rt_device_find(can_name);
+    if (!can_dev)
+    {
+        rt_kprintf("find %s failed!\n", can_name);
+        return -RT_ERROR;
+    }
+
+    rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
+
+    res = rt_device_open(can_dev, RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_INT_RX);
+    RT_ASSERT(res == RT_EOK);
+
+    res = rt_device_control(can_dev, RT_CAN_CMD_SET_BAUD, (void *)CAN500kBaud);
+    RT_ASSERT(res == RT_EOK);
+
+    thread = rt_thread_create("can_rx", can_rx_thread, RT_NULL, 1024, 25, 10);
+    if (thread != RT_NULL)
+    {
+        rt_thread_startup(thread);
+    }
+    else
+    {
+        rt_kprintf("create can_rx thread failed!\n");
+    }
+
+    return res;
+}
+
+MSH_CMD_EXPORT(can_test, can device sample);
+
+#endif /* BSP_USING_CAN */
+
+#endif /* BSP_USING_TEST */

+ 449 - 0
bsp/ht32/ht32f53252/board/Kconfig

@@ -0,0 +1,449 @@
+menu "Hardware Drivers Config"
+
+menu "Chip Configuration"
+    config SOC_KERNEL
+        bool
+        select SOC_SERIES_HT32F5 if CORTEX_M0
+        select SOC_SERIES_HT32F1 if CORTEX_M3
+        select RT_USING_COMPONENTS_INIT
+        select RT_USING_USER_MAIN
+        default y
+        choice
+            prompt "Select the kernel"
+            default CORTEX_M0
+            config CORTEX_M0
+                bool "CORTEX_M0"
+            config CORTEX_M3
+                bool "CORTEX_M3" 
+        endchoice
+
+    choice
+        prompt "Select the chip you are using"
+        depends on CORTEX_M0
+        default HT32F52352
+            config SOC_HT32F0006
+                bool "HT32F0006"
+            config SOC_HT32F0008
+                bool "HT32F0008"
+            config SOC_HT32F50241
+                bool "HT32F50241"
+            config SOC_HT32F50343
+                bool "HT32F50343"
+            config SOC_HT32F50441
+                bool "HT32F50441"
+            config SOC_HT32F50452
+                bool "HT32F50452"
+            config SOC_HT32F52241
+                bool "HT32F52241"
+            config SOC_HT32F52244
+                bool "HT32F52244"
+            config SOC_HT32F52253
+                bool "HT32F52253"
+            config SOC_HT32F52341
+                bool "HT32F52341"
+            config SOC_HT32F52352
+                bool "HT32F52352"
+            config SOC_HT32F52354
+                bool "HT32F52354"
+            config SOC_HT32F52367
+                bool "HT32F52367"
+            config SOC_HT32F53241
+                bool "HT32F53241"
+            config SOC_HT32F53252
+                bool "HT32F53252"
+            config SOC_HT32F54241
+                bool "HT32F54241"
+            config SOC_HT32F54253
+                bool "HT32F54253"
+            config SOC_HT32F57341
+                bool "HT32F57341"
+            config SOC_HT32F57352
+                bool "HT32F57352"
+            config SOC_HT32F5828
+                bool "HT32F5828"
+            config SOC_HT32F59041
+                bool "HT32F59041"
+            config SOC_HT32F59741
+                bool "HT32F59741"
+            config SOC_HT32F61141
+                bool "HT32F61141"
+            config SOC_HT32F61245
+                bool "HT32F61245"
+            config SOC_HT32F61355
+                bool "HT32F61355"
+            config SOC_HT32F61356
+                bool "HT32F61356"
+            config SOC_HT32F61357
+                bool "HT32F61357"
+            config SOC_HT32F61641
+                bool "HT32F61641"
+            config SOC_HT32F65240
+                bool "HT32F65240"
+            config SOC_HT32F67051
+                bool "HT32F67051"
+            config SOC_HT32F67741
+                bool "HT32F67741"
+    endchoice
+    
+    choice
+        prompt "Select the chip you are using"
+        depends on CORTEX_M3
+        default HT32F52352
+        config SOC_HT32F1654
+            bool "HT32F1654"
+        config SOC_HT32F1656
+            bool "HT32F1656"
+        config SOC_HT32F12345
+            bool "HT32F12345"
+        config SOC_HT32F12364
+            bool "HT32F12364"
+        config SOC_HT32F12366
+            bool "HT32F12366"
+    endchoice
+endmenu
+
+menu "Onboard Peripheral Drivers"
+
+    config BSP_USING_TEST
+        bool "Enable test"
+        default n
+
+    if RT_USING_CONSOLE
+		config RT_CONSOLE_DEVICE_NAME
+		string "the device name for console"
+		default "usart1"
+	endif
+
+endmenu
+
+menu "On-chip Peripheral Drivers"
+
+    config BSP_USING_GPIO
+        bool "Enable GPIO"
+        select RT_USING_PIN if BSP_USING_GPIO
+        default n
+
+    menuconfig BSP_USING_UART
+        bool "Enable UART"
+        default n
+        select RT_USING_SERIAL
+        if BSP_USING_UART
+            config BSP_USING_USART0
+                bool "Enable USART0"
+                default n
+                config BSP_USING_USART0_NAME
+                depends on BSP_USING_USART0
+                string "usart0 bus name"
+                default "usart0"
+
+            config BSP_USING_USART1
+                bool "Enable USART1"
+                default n
+                config BSP_USING_USART1_NAME
+                depends on BSP_USING_USART1
+                string "usart1 bus name"
+                default "usart1"
+
+            config BSP_USING_UART0
+                bool "Enable UART0"
+                default n
+                config BSP_USING_UART0_NAME
+                depends on BSP_USING_UART0
+                string "uart0 bus name"
+                default "uart0"
+
+            config BSP_USING_UART1
+                bool "Enable UART1"
+                default n
+                config BSP_USING_UART1_NAME
+                depends on BSP_USING_UART1
+                string "uart1 bus name"
+                default "uart1"
+        endif
+
+    menuconfig BSP_USING_SPI
+        bool "Enable SPI Bus"
+        default n
+        select RT_USING_SPI if BSP_USING_SPI
+        if BSP_USING_SPI
+            config BSP_USING_SPI0
+                bool "Enable SPI0 Bus"
+                default n
+                config BSP_USING_SPI0_NAME
+                depends on BSP_USING_SPI0
+                string "spi0 bus name"
+                default "spi0"
+
+            config BSP_USING_SPI1
+                bool "Enable SPI1 Bus"
+                default n
+                config BSP_USING_SPI1_NAME
+                depends on BSP_USING_SPI1
+                string "spi1 bus name"
+                default "spi1"
+        endif
+
+    menuconfig BSP_USING_I2C
+        bool "Enable I2C Bus"
+        default n
+        if BSP_USING_I2C
+            menuconfig BSP_USING_I2C_HW
+                bool "Enable I2C Bus(hardware)"
+                default n
+                select RT_USING_I2C if BSP_USING_I2C_HW
+                if BSP_USING_I2C_HW
+                    config BSP_USING_I2C0_HW
+                    bool "Enable Hardware I2C0 Bus"
+                    default n
+                    config BSP_USING_I2C0_HW_NAME
+                    depends on BSP_USING_I2C0_HW
+                    string "hardware i2c0 name"
+                    default "hw_i2c0"
+
+                    config BSP_USING_I2C1_HW
+                    bool "Enable Hardware I2C1 Bus"
+                    default n
+                    config BSP_USING_I2C1_HW_NAME
+                    depends on BSP_USING_I2C1_HW
+                    string "hardware i2c1 name"
+                    default "hw_i2c1"
+                endif
+
+            menuconfig BSP_USING_I2C_SW
+                bool "Enable I2C Bus(software)"
+                default n
+                select BSP_USING_GPIO if BSP_USING_I2C_SW
+                select RT_USING_I2C if BSP_USING_I2C_SW
+                
+                if BSP_USING_I2C_SW
+                    config BSP_USING_I2C0_SW
+                    bool "Enable Software I2C0 Bus"
+                    default n
+                    config BSP_USING_I2C0_SW_NAME
+                    depends on BSP_USING_I2C0_SW
+                    string "software i2c0 name"
+                    default "sw_i2c0"
+                    if BSP_USING_I2C0_SW
+                            config BSP_I2C0_SLC_PIN
+                            int "i2c0 slc pin number"
+                            range 0 51
+                            default 22
+
+                            config BSP_I2C0_SDA_PIN
+                            int "i2c0 sda pin number"
+                            range 0 51
+                            default 23
+                    endif
+                    
+                    config BSP_USING_I2C1_SW
+                    bool "Enable Software I2C1 Bus"
+                    default n
+                    config BSP_USING_I2C1_SW_NAME
+                    depends on BSP_USING_I2C1_SW
+                    string "software i2c1 name"
+                    default "sw_i2c1"
+                    if BSP_USING_I2C1_SW
+                            config BSP_I2C1_SLC_PIN
+                            int "i2c1 slc pin number"
+                            range 0 51
+                            default 24
+
+                            config BSP_I2C1_SDA_PIN
+                            int "i2c1 sda pin number"
+                            range 0 51
+                            default 25
+                    endif
+                    
+                    config BSP_USING_I2C2_SW
+                    bool "Enable Software I2C2 Bus"
+                    default n
+                    config BSP_USING_I2C2_SW_NAME
+                    depends on BSP_USING_I2C2_SW
+                    string "software i2c2 name"
+                    default "sw_i2c2"
+                    if BSP_USING_I2C2_SW
+                            config BSP_I2C2_SLC_PIN
+                            int "i2c2 slc pin number"
+                            range 0 51
+                            default 26
+
+                            config BSP_I2C2_SDA_PIN
+                            int "i2c2 sda pin number"
+                            range 0 51
+                            default 27
+                    endif
+                endif
+        endif
+
+    menuconfig BSP_USING_ADC
+        bool "Enable ADC"
+        default n
+        select RT_USING_ADC if BSP_USING_ADC
+        if BSP_USING_ADC
+            config BSP_USING_ADC0
+            bool "Enable ADC0"
+            default n
+            config BSP_USING_ADC0_NAME
+            depends on BSP_USING_ADC0
+            string "adc0 device name"
+            default "adc0"
+
+            config BSP_USING_ADC1
+            bool "Enable ADC1"
+            depends on SOC_HT32F65240
+            default n
+            config BSP_USING_ADC1_NAME
+            depends on BSP_USING_ADC1
+            string "adc1 device name"
+            default "adc1"
+        endif
+
+    menuconfig BSP_USING_WDT
+        bool "Enable WDT"
+        default n
+        select RT_USING_WDT if BSP_USING_WDT
+        config BSP_USING_WDT_NAME
+        depends on BSP_USING_WDT
+        string "wdt device name"
+        default "wdt"
+
+    menuconfig BSP_USING_CAN
+        bool "Enable CAN"
+        depends on SOC_HT32F53241 || SOC_HT32F53242 || SOC_HT32F53252
+        default n
+        select RT_USING_CAN if BSP_USING_CAN
+        config BSP_USING_CAN_NAME
+        depends on BSP_USING_CAN
+        string "can device name"
+        default "can"
+        if BSP_USING_CAN
+            config CAN_DEFAULT_BASE_CONFIGURATION  
+                choice
+                    prompt "Default CAN baud rate"
+                    default BSP_USING_CAN500kBaud
+                    config BSP_USING_CAN1MBaud
+                        bool "CAN1MBaud"
+                    config BSP_USING_CAN800kBaud
+                        bool "CAN800kBaud"
+                    config BSP_USING_CAN500kBaud
+                        bool "CAN500kBaud"
+                    config BSP_USING_CAN250kBaud
+                        bool "CAN250kBaud"
+                    config BSP_USING_CAN125kBaud
+                        bool "CAN125kBaud"
+                    config BSP_USING_CAN100kBaud
+                        bool "CAN100kBaud"
+                    config BSP_USING_CAN50kBaud
+                        bool "CAN50kBaud"
+                    config BSP_USING_CAN20kBaud
+                        bool "CAN20kBaud"
+                    config BSP_USING_CAN10kBaud
+                        bool "CAN10kBaud"
+                endchoice
+                choice
+                    prompt "Default CAN mode"
+                    default BSP_USING_RT_CAN_MODE_NORMAL
+                    config BSP_USING_RT_CAN_MODE_NORMAL
+                        bool "RT_CAN_MODE_NORMAL"
+                    config BSP_USING_RT_CAN_MODE_LISTEN
+                        bool "RT_CAN_MODE_LISTEN"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACK
+                        bool "RT_CAN_MODE_LOOPBACK"
+                    config BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+                        bool "RT_CAN_MODE_LOOPBACKANLISTEN"
+                endchoice
+
+                config BSP_USING_CAN_BAUD
+                int
+                default 1000000 if BSP_USING_CAN1MBaud
+                default 800000 if BSP_USING_CAN800kBaud
+                default 500000 if BSP_USING_CAN500kBaud
+                default 250000 if BSP_USING_CAN250kBaud
+                default 125000 if BSP_USING_CAN125kBaud
+                default 100000 if BSP_USING_CAN100kBaud
+                default 50000 if BSP_USING_CAN50kBaud
+                default 20000 if BSP_USING_CAN20kBaud
+                default 10000 if BSP_USING_CAN10kBaud
+
+                config BSP_USING_CAN_MODE
+                int
+                default 0 if BSP_USING_RT_CAN_MODE_NORMAL
+                default 1 if BSP_USING_RT_CAN_MODE_LISTEN
+                default 2 if BSP_USING_RT_CAN_MODE_LOOPBACK
+                default 3 if BSP_USING_RT_CAN_MODE_LOOPBACKANLISTEN
+            
+            config CAN_DEFAULT_FILTER_TABLE_CONFIGURATION
+                choice
+                    prompt "Default filter id mode"
+                    default BSP_USING_CAN_STD_ID
+                    config BSP_USING_CAN_STD_ID
+                        bool "CAN_STD_ID"
+                    config BSP_USING_CAN_EXT_ID
+                        bool "CAN_EXT_ID"
+                endchoice
+
+                choice
+                    prompt "Default filter frame mode"
+                    default BSP_USING_CAN_DATA_FRAME
+                    config BSP_USING_CAN_DATA_FRAME
+                        bool "CAN_DATA_FRAME"
+                    config BSP_USING_CAN_REMOTE_FRAME
+                        bool "CAN_REMOTE_FRAME"
+                endchoice
+
+                config BSP_USING_CAN_ID_MODE
+                int
+                default 0 if BSP_USING_CAN_STD_ID
+                default 1 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_FRAME_MODE
+                int
+                default 0 if BSP_USING_CAN_REMOTE_FRAME
+                default 1 if BSP_USING_CAN_DATA_FRAME
+
+                config BSP_USING_CAN_MSG_NUM
+                int "Default filter table number"
+                range 0 31
+                default 0
+
+                config BSP_USING_CAN_ID
+                hex "Default filter arbitration bit(ID)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x541 if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x541 if BSP_USING_CAN_EXT_ID
+
+                config BSP_USING_CAN_MASK
+                hex "Default filter mask bit(MASK)"
+                range 0 0x7FF if BSP_USING_CAN_STD_ID
+                default 0x7FF if BSP_USING_CAN_STD_ID
+                range 0 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+                default 0x1FFFFFFF if BSP_USING_CAN_EXT_ID
+
+        endif
+
+    menuconfig BSP_USING_SDIO
+        bool "Enable SDIO"
+        depends on SOC_HT32F12345 || SOC_HT32F12365 || SOC_HT32F12366
+        default n
+        select RT_USING_SDIO if BSP_USING_SDIO
+        config BSP_USING_SDIO_NAME
+        depends on BSP_USING_SDIO
+        string "sdio device name"
+        default "sdio"
+
+    menuconfig BSP_USING_USBD
+        bool "Enable USB BUS"
+        default n
+        select RT_USING_USB_DEVICE if BSP_USING_USBD
+        config BSP_USING_USBD_NAME
+        depends on BSP_USING_USBD
+        string "usbd device name"
+        default "usbd"
+endmenu
+
+menu "Board extended module Drivers"
+
+endmenu
+
+endmenu

+ 27 - 0
bsp/ht32/ht32f53252/board/SConscript

@@ -0,0 +1,27 @@
+
+import os
+import rtconfig
+from building import *
+
+Import('SDK_LIB')
+
+cwd = GetCurrentDir()
+
+src = Glob('src/*.c')
+
+startup_path_prefix = SDK_LIB
+if rtconfig.CROSS_TOOL == 'gcc':
+    src += [startup_path_prefix + '/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/GCC/startup_ht32f5xxxx_gcc_01.s']
+elif rtconfig.CROSS_TOOL == 'keil':
+    src += [startup_path_prefix + '/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f5xxxx_15.s']
+elif rtconfig.CROSS_TOOL == 'iar':
+    src += [startup_path_prefix + '/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/IAR/startup_ht32f5xxxx_iar_01.s']
+
+path = [cwd]
+path = [cwd + '/inc']
+
+CPPDEFINES = ['USE_HT32F53252_SK, USE_HT32F53242_52, USE_MEM_HT32F53252']
+
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
+
+Return('group')

+ 56 - 0
bsp/ht32/ht32f53252/board/inc/board.h

@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2006-2024, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-04-08     QT-one       first version
+ */
+
+#ifndef __BOARD_H__
+#define __BOARD_H__
+
+#include <rtthread.h>
+#include "ht32.h"
+#include "ht32_msp.h"
+
+#ifdef BSP_USING_GPIO
+    #include "drv_gpio.h"
+#endif
+
+#ifdef BSP_USING_SPI
+    #include "drv_spi.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* whether use board external SRAM memory */
+#define HT32_EXT_SRAM 0
+#define HT32_EXT_SRAM_BEGIN 0x68000000
+#define HT32_EXT_SRAM_END (HT32_EXT_SRAM_BEGIN + HT32_EXT_SRAM*1024)
+
+/* internal sram memory size */
+#define HT32_SRAM_END (0x20000000 + LIBCFG_RAM_SIZE)
+
+#ifdef __CC_ARM
+extern int Image$$RW_IRAM1$$ZI$$Limit;
+#define HEAP_BEGIN  ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
+#elif __ICCARM__
+#pragma section="HEAP"
+#define HEAP_BEGIN  (__segment_end("HEAP"))
+#else
+extern int __bss_end;
+#define HEAP_BEGIN  ((void *)&__bss_end)
+#endif
+#define HEAP_END    HT32_SRAM_END
+
+void rt_hw_board_clock_init(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __BOARD_H__ */

+ 111 - 0
bsp/ht32/ht32f53252/board/inc/ht32_can_config.h

@@ -0,0 +1,111 @@
+/*********************************************************************************************************//**
+ * @file    CAN/Send_DATA/ht32_can_config.h
+ * @version $Rev:: 8164         $
+ * @date    $Date:: 2024-09-20 #$
+ * @brief   The header file of CAN baudrate configuration.
+ *************************************************************************************************************
+ * @attention
+ *
+ * Firmware Disclaimer Information
+ *
+ * 1. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, which is supplied by Holtek Semiconductor Inc., (hereinafter referred to as "HOLTEK") is the
+ *    proprietary and confidential intellectual property of HOLTEK, and is protected by copyright law and
+ *    other intellectual property laws.
+ *
+ * 2. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, is confidential information belonging to HOLTEK, and must not be disclosed to any third parties
+ *    other than HOLTEK and the customer.
+ *
+ * 3. The program technical documentation, including the code, is provided "as is" and for customer reference
+ *    only. After delivery by HOLTEK, the customer shall use the program technical documentation, including
+ *    the code, at their own risk. HOLTEK disclaims any expressed, implied or statutory warranties, including
+ *    the warranties of merchantability, satisfactory quality and fitness for a particular purpose.
+ *
+ * <h2><center>Copyright (C) Holtek Semiconductor Inc. All rights reserved</center></h2>
+ ************************************************************************************************************/
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+/* Define to prevent recursive inclusion -------------------------------------------------------------------*/
+#ifndef __HT32_CAN_CONFIG_H
+#define __HT32_CAN_CONFIG_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+//  <q0> Enable CAN Config Check
+//     <i> Display related setting by printf().
+#define HTCFG_CAN_CONF_CHECK_ENABLE               (0)
+
+//  <h> Core Clock Setting
+//  </h>
+//  <o0> -- Core Clock Calculation Setting
+//     <i> HTCFG_CAN_CORECLKSEL
+//     <i> Define the Core Clock by default maximum clock setting or manual input.
+//     <i> 0 = Default Maximum (LIBCFG_MAX_SPEED)
+//     <i> 1 = Manual Input (HTCFG_CAN_CORECLK_MANUAL)
+//       <0=> Default Maximum (LIBCFG_MAX_SPEED)
+//       <1=> Manual Input (HTCFG_CAN_CORECLK_MANUAL)
+//     <i> Note: CK_CAN = (Core Clock) / (CAN Peripheral Clock Prescaler)
+//  <o1> -- Core Clock Manual Input (Hz)
+//     <i> HTCFG_CAN_CORECLK_MANUAL
+//     <i> Only meaningful when HTCFG_CAN_CLKSEL = 1 (Manual Input)
+#define HTCFG_CAN_CORECLKSEL                      (0)         // 0 = Default Maximum (LIBCFG_MAX_SPEED), 1 = Manual Input (HTCFG_CAN_CORECLK_MANUAL)
+#define HTCFG_CAN_CORECLK_MANUAL                  (8000000)  // Only meaningful when HTCFG_CAN_CORECLKSEL = 1 (Manual Input)
+
+//  <h> ------------------------------------------
+//  </h>
+
+//  <h> CAN Config 0 Setting
+//  </h>
+//  <o0> CAN Peripheral Clock Selection (CANnPCLK)
+//     <i> HTCFG_CAN_CLK_PRESCALER
+//       <0=> Div 1
+//       <1=> Div 2
+//       <2=> Div 4
+//       <3=> Div 8
+#define HTCFG_CAN_CF0_CLK_DIV                     (0)         // 0 = /1, 1 = /2, 2 = /4, 3 = /8
+
+/*
+//  <o> CAN Baudrate
+//    <i> HTCFG_CAN_BAUDRATE
+//      <1000000=> 1000 kbps
+//      <800000=>   800 kbps
+//      <500000=>   500 kbps
+//      <250000=>   250 kbps
+//      <125000=>   125 kbps
+//      <100000=>   100 kbps
+//      <50000=>     50 kbps
+//      <20000=>     20 kbps
+//      <10000=>     10 kbps
+//      <5000=>       5 kbps
+//    <i> The CAN baudrate specifies the frequency of transitions occurring per second.
+*/
+#define HTCFG_CAN_CF0_BAUDRATE                    (500000)
+
+/*
+//  <o> CAN Sample Point Target (%) <50-90:1>
+//    <i> HTCFG_CAN_SAMPLE_POINT
+//    <i> The Sample Point is the specific location within each bit period where the CAN_Core samples the CAN bus's state (dominant or recessive).
+//    <i> Notice: The real calculation result may small than the HTCFG_CAN_SAMPLE_POINT setting.
+*/
+#define HTCFG_CAN_CF0_SAMPLE_POINT                (70)
+
+//  <o> CAN SJW (Synchronisation Jump Width)
+//    <i> HTCFG_CAN_BIT_TIME_SJW
+//    <i> The (Re-)Synchronisation Jump Width.
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+#define HTCFG_CAN_CF0_BIT_TIME_SJW                (1)       // 1 ~ 4
+
+#include "ht32_can_config0_calc.h"
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 368 - 0
bsp/ht32/ht32f53252/board/inc/ht32_msp.h

@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 2006-2024, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-04-08     QT-one       first version
+ */
+
+#ifndef __HT32_MSP_H__
+#define __HT32_MSP_H__
+
+#include <rtthread.h>
+#include "ht32.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UART gpio */
+#ifdef BSP_USING_UART
+#ifdef BSP_USING_USART0
+#define HTCFG_USART0_IPN                          USART0
+
+#define _HTCFG_USART0_TX_GPIOX                    A
+#define _HTCFG_USART0_TX_GPION                    2
+#define _HTCFG_USART0_RX_GPIOX                    A
+#define _HTCFG_USART0_RX_GPION                    3
+
+#define HTCFG_USART0_TX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_USART0_TX_GPIOX)
+#define HTCFG_USART0_TX_GPIO_CLK                  STRCAT2(P,              _HTCFG_USART0_TX_GPIOX)
+#define HTCFG_USART0_TX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_USART0_TX_GPIOX)
+#define HTCFG_USART0_TX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_USART0_TX_GPION)
+
+#define HTCFG_USART0_RX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_USART0_RX_GPIOX)
+#define HTCFG_USART0_RX_GPIO_CLK                  STRCAT2(P,              _HTCFG_USART0_RX_GPIOX)
+#define HTCFG_USART0_RX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_USART0_RX_GPIOX)
+#define HTCFG_USART0_RX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_USART0_RX_GPION)
+
+#endif
+#ifdef BSP_USING_USART1
+
+#define HTCFG_USART1_IPN                          USART1
+
+#define _HTCFG_USART1_TX_GPIOX                    A
+#define _HTCFG_USART1_TX_GPION                    4
+#define _HTCFG_USART1_RX_GPIOX                    A
+#define _HTCFG_USART1_RX_GPION                    5
+
+#define HTCFG_USART1_TX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_USART1_TX_GPIOX)
+#define HTCFG_USART1_TX_GPIO_CLK                  STRCAT2(P,              _HTCFG_USART1_TX_GPIOX)
+#define HTCFG_USART1_TX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_USART1_TX_GPIOX)
+#define HTCFG_USART1_TX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_USART1_TX_GPION)
+
+#define HTCFG_USART1_RX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_USART1_RX_GPIOX)
+#define HTCFG_USART1_RX_GPIO_CLK                  STRCAT2(P,              _HTCFG_USART1_RX_GPIOX)
+#define HTCFG_USART1_RX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_USART1_RX_GPIOX)
+#define HTCFG_USART1_RX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_USART1_RX_GPION)
+
+#endif
+#ifdef BSP_USING_UART0
+
+#define HTCFG_UART0_IPN                          UART0
+
+#define _HTCFG_UART0_TX_GPIOX                    B
+#define _HTCFG_UART0_TX_GPION                    2
+#define _HTCFG_UART0_RX_GPIOX                    B
+#define _HTCFG_UART0_RX_GPION                    3
+
+#define HTCFG_UART0_TX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_UART0_TX_GPIOX)
+#define HTCFG_UART0_TX_GPIO_CLK                  STRCAT2(P,              _HTCFG_UART0_TX_GPIOX)
+#define HTCFG_UART0_TX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_UART0_TX_GPIOX)
+#define HTCFG_UART0_TX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_UART0_TX_GPION)
+
+#define HTCFG_UART0_RX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_UART0_RX_GPIOX)
+#define HTCFG_UART0_RX_GPIO_CLK                  STRCAT2(P,              _HTCFG_UART0_RX_GPIOX)
+#define HTCFG_UART0_RX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_UART0_RX_GPIOX)
+#define HTCFG_UART0_RX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_UART0_RX_GPION)
+
+#endif
+#ifdef BSP_USING_UART1
+
+#define HTCFG_UART1_IPN                          UART1
+
+#define _HTCFG_UART1_TX_GPIOX                    B
+#define _HTCFG_UART1_TX_GPION                    4
+#define _HTCFG_UART1_RX_GPIOX                    B
+#define _HTCFG_UART1_RX_GPION                    5
+
+#define HTCFG_UART1_TX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_UART1_TX_GPIOX)
+#define HTCFG_UART1_TX_GPIO_CLK                  STRCAT2(P,              _HTCFG_UART1_TX_GPIOX)
+#define HTCFG_UART1_TX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_UART1_TX_GPIOX)
+#define HTCFG_UART1_TX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_UART1_TX_GPION)
+
+#define HTCFG_UART1_RX_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_UART1_RX_GPIOX)
+#define HTCFG_UART1_RX_GPIO_CLK                  STRCAT2(P,              _HTCFG_UART1_RX_GPIOX)
+#define HTCFG_UART1_RX_GPIO_PORT                 STRCAT2(HT_GPIO,        _HTCFG_UART1_RX_GPIOX)
+#define HTCFG_UART1_RX_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_UART1_RX_GPION)
+
+#endif
+#endif
+
+/* SPI gpio */
+#ifdef BSP_USING_SPI
+#ifdef BSP_USING_SPI0
+
+#define HTCFG_SPI0_IPN                           SPI0
+
+#define _HTCFG_SPI0_SCK_GPIOX                    C
+#define _HTCFG_SPI0_SCK_GPION                    0
+
+#define _HTCFG_SPI0_MISO_GPIOX                   A
+#define _HTCFG_SPI0_MISO_GPION                   11
+
+#define _HTCFG_SPI0_MOSI_GPIOX                   A
+#define _HTCFG_SPI0_MOSI_GPION                   9
+
+#define HTCFG_SPI0_SCK_GPIO_CLK                  STRCAT2(P,              _HTCFG_SPI0_SCK_GPIOX)
+#define HTCFG_SPI0_SCK_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_SPI0_SCK_GPIOX)
+#define HTCFG_SPI0_SCK_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_SPI0_SCK_GPION)
+
+#define HTCFG_SPI0_MISO_GPIO_CLK                 STRCAT2(P,              _HTCFG_SPI0_MISO_GPIOX)
+#define HTCFG_SPI0_MISO_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SPI0_MISO_GPIOX)
+#define HTCFG_SPI0_MISO_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SPI0_MISO_GPION)
+
+#define HTCFG_SPI0_MOSI_GPIO_CLK                 STRCAT2(P,              _HTCFG_SPI0_MOSI_GPIOX)
+#define HTCFG_SPI0_MOSI_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SPI0_MOSI_GPIOX)
+#define HTCFG_SPI0_MOSI_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SPI0_MOSI_GPION)
+
+#endif
+#ifdef BSP_USING_SPI1
+
+#define HTCFG_SPI1_IPN                           SPI1
+
+#define _HTCFG_SPI1_SCK_GPIOX                    C
+#define _HTCFG_SPI1_SCK_GPION                    5
+
+#define _HTCFG_SPI1_MISO_GPIOX                   C
+#define _HTCFG_SPI1_MISO_GPION                   9
+
+#define _HTCFG_SPI1_MOSI_GPIOX                   C
+#define _HTCFG_SPI1_MOSI_GPION                   8
+
+#define HTCFG_SPI1_SCK_GPIO_CLK                  STRCAT2(P,              _HTCFG_SPI1_SCK_GPIOX)
+#define HTCFG_SPI1_SCK_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_SPI1_SCK_GPIOX)
+#define HTCFG_SPI1_SCK_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_SPI1_SCK_GPION)
+
+#define HTCFG_SPI1_MISO_GPIO_CLK                 STRCAT2(P,              _HTCFG_SPI1_MISO_GPIOX)
+#define HTCFG_SPI1_MISO_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SPI1_MISO_GPIOX)
+#define HTCFG_SPI1_MISO_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SPI1_MISO_GPION)
+
+#define HTCFG_SPI1_MOSI_GPIO_CLK                 STRCAT2(P,              _HTCFG_SPI1_MOSI_GPIOX)
+#define HTCFG_SPI1_MOSI_GPIO_ID                  STRCAT2(GPIO_P,         _HTCFG_SPI1_MOSI_GPIOX)
+#define HTCFG_SPI1_MOSI_GPIO_PIN                 STRCAT2(GPIO_PIN_,      _HTCFG_SPI1_MOSI_GPION)
+
+#endif
+#endif
+
+/* I2C gpio */
+#ifdef BSP_USING_I2C_HW
+#ifdef BSP_USING_I2C0_HW
+
+#define HTCFG_I2C0_IPN                           I2C0
+
+#define _HTCFG_I2C0_SCL_GPIOX                    C
+#define _HTCFG_I2C0_SCL_GPION                    12
+
+#define _HTCFG_I2C0_SDA_GPIOX                    C
+#define _HTCFG_I2C0_SDA_GPION                    13
+
+#define HTCFG_I2C0_SCL_GPIO_CLK                  STRCAT2(P,              _HTCFG_I2C0_SCL_GPIOX)
+#define HTCFG_I2C0_SCL_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_I2C0_SCL_GPIOX)
+#define HTCFG_I2C0_SCL_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_I2C0_SCL_GPION)
+
+#define HTCFG_I2C0_SDA_GPIO_CLK                  STRCAT2(P,              _HTCFG_I2C0_SDA_GPIOX)
+#define HTCFG_I2C0_SDA_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_I2C0_SDA_GPIOX)
+#define HTCFG_I2C0_SDA_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_I2C0_SDA_GPION)
+
+#endif
+#ifdef BSP_USING_I2C1_HW
+
+#define HTCFG_I2C1_IPN                           I2C1
+
+#define _HTCFG_I2C1_SCL_GPIOX                    A
+#define _HTCFG_I2C1_SCL_GPION                    0
+
+#define _HTCFG_I2C1_SDA_GPIOX                    A
+#define _HTCFG_I2C1_SDA_GPION                    1
+
+#define HTCFG_I2C1_SCL_GPIO_CLK                  STRCAT2(P,              _HTCFG_I2C1_SCL_GPIOX)
+#define HTCFG_I2C1_SCL_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_I2C1_SCL_GPIOX)
+#define HTCFG_I2C1_SCL_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_I2C1_SCL_GPION)
+
+#define HTCFG_I2C1_SDA_GPIO_CLK                  STRCAT2(P,              _HTCFG_I2C1_SDA_GPIOX)
+#define HTCFG_I2C1_SDA_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_I2C1_SDA_GPIOX)
+#define HTCFG_I2C1_SDA_GPIO_PIN                  STRCAT2(GPIO_PIN_,      _HTCFG_I2C1_SDA_GPION)
+
+#endif
+#endif
+
+/* ADC gpio */
+#ifdef BSP_USING_ADC
+#ifdef BSP_USING_ADC0
+
+#define HTCFG_ADC0_IPN                           ADC0
+
+#define _HTCFG_ADC0CH0_GPIOX                     A
+#define _HTCFG_ADC0CH0_AFION                     0
+
+#define _HTCFG_ADC0CH1_GPIOX                     A
+#define _HTCFG_ADC0CH1_AFION                     1
+
+#define _HTCFG_ADC0CH2_GPIOX                     A
+#define _HTCFG_ADC0CH2_AFION                     2
+
+#define _HTCFG_ADC0CH3_GPIOX                     A
+#define _HTCFG_ADC0CH3_AFION                     3
+
+#define _HTCFG_ADC0CH4_GPIOX                     A
+#define _HTCFG_ADC0CH4_AFION                     4
+
+#define _HTCFG_ADC0CH5_GPIOX                     A
+#define _HTCFG_ADC0CH5_AFION                     5
+
+#define _HTCFG_ADC0CH6_GPIOX                     A
+#define _HTCFG_ADC0CH6_AFION                     6
+
+#define _HTCFG_ADC0CH7_GPIOX                     A
+#define _HTCFG_ADC0CH7_AFION                     7
+
+#define _HTCFG_ADC0CH8_GPIOX                     C
+#define _HTCFG_ADC0CH8_AFION                     4
+
+#define _HTCFG_ADC0CH9_GPIOX                     C
+#define _HTCFG_ADC0CH9_AFION                     5
+
+#define _HTCFG_ADC0CH10_GPIOX                    C
+#define _HTCFG_ADC0CH10_AFION                    8
+
+#define _HTCFG_ADC0CH11_GPIOX                    C
+#define _HTCFG_ADC0CH11_AFION                    9
+
+#define _HTCFG_ADC0CH12_GPIOX                    C
+#define _HTCFG_ADC0CH12_AFION                    1
+
+#define _HTCFG_ADC0CH13_GPIOX                    C
+#define _HTCFG_ADC0CH13_AFION                    1
+
+#define _HTCFG_ADC0CH14_GPIOX                    C
+#define _HTCFG_ADC0CH14_AFION                    1
+
+#define _HTCFG_ADC0CH15_GPIOX                    C
+#define _HTCFG_ADC0CH15_AFION                    1
+
+#define HTCFG_ADC0CH0_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH0_GPIOX)
+#define HTCFG_ADC0CH1_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH1_GPIOX)
+#define HTCFG_ADC0CH2_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH2_GPIOX)
+#define HTCFG_ADC0CH3_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH3_GPIOX)
+#define HTCFG_ADC0CH4_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH4_GPIOX)
+#define HTCFG_ADC0CH5_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH5_GPIOX)
+#define HTCFG_ADC0CH6_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH6_GPIOX)
+#define HTCFG_ADC0CH7_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH7_GPIOX)
+#define HTCFG_ADC0CH8_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH8_GPIOX)
+#define HTCFG_ADC0CH9_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC0CH9_GPIOX)
+#define HTCFG_ADC0CH10_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH10_GPIOX)
+#define HTCFG_ADC0CH11_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH11_GPIOX)
+#define HTCFG_ADC0CH12_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH12_GPIOX)
+#define HTCFG_ADC0CH13_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH13_GPIOX)
+#define HTCFG_ADC0CH14_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH14_GPIOX)
+#define HTCFG_ADC0CH15_GPIO_ID                   STRCAT2(GPIO_P,         _HTCFG_ADC0CH15_GPIOX)
+
+#define HTCFG_ADC0CH0_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH0_AFION)
+#define HTCFG_ADC0CH1_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH1_AFION)
+#define HTCFG_ADC0CH2_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH2_AFION)
+#define HTCFG_ADC0CH3_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH3_AFION)
+#define HTCFG_ADC0CH4_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH4_AFION)
+#define HTCFG_ADC0CH5_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH5_AFION)
+#define HTCFG_ADC0CH6_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH6_AFION)
+#define HTCFG_ADC0CH7_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH7_AFION)
+#define HTCFG_ADC0CH8_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH8_AFION)
+#define HTCFG_ADC0CH9_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH9_AFION)
+#define HTCFG_ADC0CH10_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH10_AFION)
+#define HTCFG_ADC0CH11_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH11_AFION)
+#define HTCFG_ADC0CH12_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH12_AFION)
+#define HTCFG_ADC0CH13_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH13_AFION)
+#define HTCFG_ADC0CH14_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH14_AFION)
+#define HTCFG_ADC0CH15_AFIO_PIN                  STRCAT2(AFIO_PIN_,      _HTCFG_ADC0CH15_AFION)
+
+#endif
+#ifdef BSP_USING_ADC1
+
+#define HTCFG_ADC1_IPN                           ADC1
+
+#define _HTCFG_ADC1CH0_GPIOX                     B
+#define _HTCFG_ADC1CH0_AFION                     8
+
+#define _HTCFG_ADC1CH1_GPIOX                     A
+#define _HTCFG_ADC1CH1_AFION                     0
+
+#define _HTCFG_ADC1CH2_GPIOX                     A
+#define _HTCFG_ADC1CH2_AFION                     1
+
+#define _HTCFG_ADC1CH3_GPIOX                     A
+#define _HTCFG_ADC1CH3_AFION                     2
+
+#define _HTCFG_ADC1CH4_GPIOX                     A
+#define _HTCFG_ADC1CH4_AFION                     3
+
+#define _HTCFG_ADC1CH5_GPIOX                     A
+#define _HTCFG_ADC1CH5_AFION                     4
+
+#define _HTCFG_ADC1CH6_GPIOX                     A
+#define _HTCFG_ADC1CH6_AFION                     5
+
+#define _HTCFG_ADC1CH7_GPIOX                     A
+#define _HTCFG_ADC1CH7_AFION                     6
+
+#define HTCFG_ADC1CH0_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH0_GPIOX)
+#define HTCFG_ADC1CH1_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH1_GPIOX)
+#define HTCFG_ADC1CH2_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH2_GPIOX)
+#define HTCFG_ADC1CH3_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH3_GPIOX)
+#define HTCFG_ADC1CH4_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH4_GPIOX)
+#define HTCFG_ADC1CH5_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH5_GPIOX)
+#define HTCFG_ADC1CH6_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH6_GPIOX)
+#define HTCFG_ADC1CH7_GPIO_ID                    STRCAT2(GPIO_P,         _HTCFG_ADC1CH7_GPIOX)
+
+#define HTCFG_ADC1CH0_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH0_AFION)
+#define HTCFG_ADC1CH1_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH1_AFION)
+#define HTCFG_ADC1CH2_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH2_AFION)
+#define HTCFG_ADC1CH3_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH3_AFION)
+#define HTCFG_ADC1CH4_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH4_AFION)
+#define HTCFG_ADC1CH5_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH5_AFION)
+#define HTCFG_ADC1CH6_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH6_AFION)
+#define HTCFG_ADC1CH7_AFIO_PIN                   STRCAT2(AFIO_PIN_,      _HTCFG_ADC1CH7_AFION)
+
+#endif
+#endif
+/* CAN gpio */
+#ifdef BSP_USING_CAN
+#define HTCFG_CAN_IPN                            CAN0
+
+#define _HTCFG_CAN_TX_GPIOX                      C
+#define _HTCFG_CAN_TX_GPION                      6
+
+#define _HTCFG_CAN_RX_GPIOX                      C
+#define _HTCFG_CAN_RX_GPION                      7
+
+#define HTCFG_CAN_TX_GPIO_CLK                    STRCAT2(P,              _HTCFG_CAN_TX_GPIOX)
+#define HTCFG_CAN_TX_GPIO_ID                     STRCAT2(GPIO_P,         _HTCFG_CAN_TX_GPIOX)
+#define HTCFG_CAN_TX_GPIO_PIN                    STRCAT2(GPIO_PIN_,      _HTCFG_CAN_TX_GPION)
+
+#define HTCFG_CAN_RX_GPIO_CLK                    STRCAT2(P,              _HTCFG_CAN_RX_GPIOX)
+#define HTCFG_CAN_RX_GPIO_ID                     STRCAT2(GPIO_P,         _HTCFG_CAN_RX_GPIOX)
+#define HTCFG_CAN_RX_GPIO_PIN                    STRCAT2(GPIO_PIN_,      _HTCFG_CAN_RX_GPION)
+#endif
+
+void ht32_usart_gpio_init(void *instance);
+void ht32_spi_gpio_init(void *instance);
+void ht32_hardware_i2c_gpio_init(void *instance);
+void ht32_adc_gpio_init(void *instance,int8_t channel);
+void ht32_can_gpio_init(void *instance);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HT32_MSP_H__ */

+ 453 - 0
bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_01_usbdconf.h

@@ -0,0 +1,453 @@
+/*********************************************************************************************************//**
+ * @file    IP/Example/ht32f5xxxx_01_usbdconf.h
+ * @version $Rev:: 2390         $
+ * @date    $Date:: 2017-12-21 #$
+ * @brief   The configuration file of USB Device Driver.
+ *************************************************************************************************************
+ * @attention
+ *
+ * Firmware Disclaimer Information
+ *
+ * 1. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, which is supplied by Holtek Semiconductor Inc., (hereinafter referred to as "HOLTEK") is the
+ *    proprietary and confidential intellectual property of HOLTEK, and is protected by copyright law and
+ *    other intellectual property laws.
+ *
+ * 2. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, is confidential information belonging to HOLTEK, and must not be disclosed to any third parties
+ *    other than HOLTEK and the customer.
+ *
+ * 3. The program technical documentation, including the code, is provided "as is" and for customer reference
+ *    only. After delivery by HOLTEK, the customer shall use the program technical documentation, including
+ *    the code, at their own risk. HOLTEK disclaims any expressed, implied or statutory warranties, including
+ *    the warranties of merchantability, satisfactory quality and fitness for a particular purpose.
+ *
+ * <h2><center>Copyright (C) Holtek Semiconductor Inc. All rights reserved</center></h2>
+ ************************************************************************************************************/
+// <<< Use Configuration Wizard in Context Menu >>>
+
+/* Define to prevent recursive inclusion -------------------------------------------------------------------*/
+#ifndef __HT32F5XXXX_01_USBDCONF_H
+#define __HT32F5XXXX_01_USBDCONF_H
+
+// <e0> Enter Low Power mode when Suspended
+#define USBDCORE_ENABLE_LOW_POWER   (0)
+// </e>
+
+#if (USBDCORE_ENABLE_LOW_POWER == 1)
+  #define USBDCore_LowPower()      PWRCU_DeepSleep1(PWRCU_SLEEP_ENTRY_WFE)
+#else
+  #define USBDCore_LowPower(...)
+#endif
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* USB Interrupt Enable                                                                                     */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <h> USB Interrupt Setting (UIER)
+//    <o0.0> USB Global Interrupt Enable (UGIE) (Default)
+//    <o0.1> Start Of Frame Interrupt Enable (SOFIE)
+//    <o0.2> USB Reset Interrupt Enable (URSTIE) (Default)
+//    <o0.3> Resume Interrupt Enable (RSMIE) (Default)
+//    <o0.4> Suspend Interrupt Enable (SUSPIE) (Default)
+//    <o0.5> Expected Start of Frame Interrupt Enable (ESOFE)
+//    <o0.8> Control Endpoint Interrupt Enable (EP0IE) (Default)
+//    <o0.9> Endpoint1 Interrupt Enable (EP1IE)
+//    <o0.10> Endpoint2 Interrupt Enable (EP2IE)
+//    <o0.11> Endpoint3 Interrupt Enable (EP3IE)
+//    <o0.12> Endpoint4 Interrupt Enable (EP4IE)
+//    <o0.13> Endpoint5 Interrupt Enable (EP5IE)
+//    <o0.14> Endpoint6 Interrupt Enable (EP6IE)
+//    <o0.15> Endpoint7 Interrupt Enable (EP7IE)
+#define _UIER               (0xFF1D)
+//  </h>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint0 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <h> Control Endpoint0 Configuration
+//    <o0> Endpoint Buffer Length (EPLEN)
+//      <8=> 8 bytes
+//      <16=> 16 bytes
+//      <32=> 32 bytes
+//      <64=> 64 bytes
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP0LEN             (64)
+
+
+//    <h> Control Endpoint0 Interrupt Enable Settings (EP0IER)
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE) (Default)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE) (Default)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+//      <o0.8> SETUP Token Packet Received Interrupt Enable (STRXIE)
+//      <o0.9> SETUP Data Packet Received Interrupt Enable (SDRXIE) (Default)
+//      <o0.10> SETUP Data Error Interrupt Enable (SDERIE)
+//      <o0.11> Zero Length Data Packet Received Interrupt Enable (ZLRXIE)
+#define _EP0_IER            (0x212)
+//    </h>
+//  </h>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint1 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint1 Configuration
+#define _EP1_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP1_CFG_EPADR      (1)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP1_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP1_TYPR           (2)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP1_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP1LEN_TMP         (64)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP1_IER            (0x12)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint2 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint2 Configuration
+#define _EP2_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP2_CFG_EPADR      (2)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP2_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP2_TYPR           (2)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP2_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP2LEN_TMP         (64)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP2_IER            (0x012)
+// </h>
+// </e>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint3 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint3 Configuration
+#define _EP3_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP3_CFG_EPADR      (3)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP3_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP3_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP3_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP3LEN_TMP         (64)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP3_IER            (0x12)
+// </h>
+// </e>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint4 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint4 Configuration
+#define _EP4_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP4_CFG_EPADR      (4)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP4_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP4_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP4_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP4LEN_TMP         (64)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP4_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP4_IER            (0x12)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint5 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint5 Configuration
+#define _EP5_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP5_CFG_EPADR      (5)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP5_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP5_TYPR           (1)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP5_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP5LEN_TMP         (64)
+
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP5_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP5_IER            (0x12)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint6 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint6 Configuration
+#define _EP6_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP6_CFG_EPADR      (6)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP6_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP6_TYPR           (1)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP6_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP6LEN_TMP         (64)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP6_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP6_IER            (0x12)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint7 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint7 Configuration
+#define _EP7_ENABLE         (1)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+#define _EP7_CFG_EPADR      (7)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP7_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP7_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP7_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP7LEN_TMP         (64)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP7_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP7_IER            (0x12)
+// </h>
+// </e>
+
+#endif

+ 569 - 0
bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_02_usbdconf.h

@@ -0,0 +1,569 @@
+/*********************************************************************************************************//**
+ * @file    IP/Example/ht32f5xxxx_02_usbdconf.h
+ * @version $Rev:: 5656         $
+ * @date    $Date:: 2021-11-24 #$
+ * @brief   The configuration file of USB Device Driver.
+ *************************************************************************************************************
+ * @attention
+ *
+ * Firmware Disclaimer Information
+ *
+ * 1. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, which is supplied by Holtek Semiconductor Inc., (hereinafter referred to as "HOLTEK") is the
+ *    proprietary and confidential intellectual property of HOLTEK, and is protected by copyright law and
+ *    other intellectual property laws.
+ *
+ * 2. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, is confidential information belonging to HOLTEK, and must not be disclosed to any third parties
+ *    other than HOLTEK and the customer.
+ *
+ * 3. The program technical documentation, including the code, is provided "as is" and for customer reference
+ *    only. After delivery by HOLTEK, the customer shall use the program technical documentation, including
+ *    the code, at their own risk. HOLTEK disclaims any expressed, implied or statutory warranties, including
+ *    the warranties of merchantability, satisfactory quality and fitness for a particular purpose.
+ *
+ * <h2><center>Copyright (C) Holtek Semiconductor Inc. All rights reserved</center></h2>
+ ************************************************************************************************************/
+// <<< Use Configuration Wizard in Context Menu >>>
+
+/* Define to prevent recursive inclusion -------------------------------------------------------------------*/
+#ifndef __HT32F5XXXX_02_USBDCONF_H
+#define __HT32F5XXXX_02_USBDCONF_H
+
+// <e0> Enter Low Power mode when Suspended
+#define USBDCORE_ENABLE_LOW_POWER   (0)
+// </e>
+
+#if (USBDCORE_ENABLE_LOW_POWER == 1)
+  #define USBDCore_LowPower()      PWRCU_DeepSleep1(PWRCU_SLEEP_ENTRY_WFE)
+#else
+  #define USBDCore_LowPower(...)
+#endif
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* USB Interrupt Enable                                                                                     */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <h> USB Interrupt Setting (UIER)
+//    <o0.0> USB Global Interrupt Enable (UGIE) (Default)
+//    <o0.1> Start Of Frame Interrupt Enable (SOFIE)
+//    <o0.2> USB Reset Interrupt Enable (URSTIE) (Default)
+//    <o0.3> Resume Interrupt Enable (RSMIE) (Default)
+//    <o0.4> Suspend Interrupt Enable (SUSPIE) (Default)
+//    <o0.5> Expected Start of Frame Interrupt Enable (ESOFE)
+//    <o0.8> Control Endpoint Interrupt Enable (EP0IE) (Default)
+//    <o0.9> Endpoint1 Interrupt Enable (EP1IE)
+//    <o0.10> Endpoint2 Interrupt Enable (EP2IE)
+//    <o0.11> Endpoint3 Interrupt Enable (EP3IE)
+//    <o0.12> Endpoint4 Interrupt Enable (EP4IE)
+//    <o0.13> Endpoint5 Interrupt Enable (EP5IE)
+//    <o0.14> Endpoint6 Interrupt Enable (EP6IE)
+//    <o0.15> Endpoint7 Interrupt Enable (EP7IE)
+//    <o0.16> Endpoint8 Interrupt Enable (EP8IE)
+//    <o0.17> Endpoint9 Interrupt Enable (EP9IE)
+#define _UIER               (0x011D)
+//  </h>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint0 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <h> Control Endpoint0 Configuration
+//    <o0> Endpoint Buffer Length (EPLEN)
+//      <8=> 8 bytes
+//      <16=> 16 bytes
+//      <32=> 32 bytes
+//      <64=> 64 bytes
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP0LEN             (64)
+
+
+//    <h> Control Endpoint0 Interrupt Enable Settings (EP0IER)
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE) (Default)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE) (Default)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+//      <o0.8> SETUP Token Packet Received Interrupt Enable (STRXIE)
+//      <o0.9> SETUP Data Packet Received Interrupt Enable (SDRXIE) (Default)
+//      <o0.10> SETUP Data Error Interrupt Enable (SDERIE)
+//      <o0.11> Zero Length Data Packet Received Interrupt Enable (ZLRXIE)
+#define _EP0_IER            (0x212)
+//    </h>
+//  </h>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint1 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint1 Configuration
+#define _EP1_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP1_CFG_EPADR      (1)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP1_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP1_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP1_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP1LEN_TMP         (8)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP1_IER            (0x10)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint2 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint2 Configuration
+#define _EP2_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP2_CFG_EPADR      (2)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP2_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP2_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP2_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP2LEN_TMP         (8)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP2_IER            (0x002)
+// </h>
+// </e>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint3 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint3 Configuration
+#define _EP3_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP3_CFG_EPADR      (3)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP3_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP3_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP3_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP3LEN_TMP         (8)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP3_IER            (0x10)
+// </h>
+// </e>
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint4 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint4 Configuration
+#define _EP4_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP4_CFG_EPADR      (4)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP4_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP4_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP4_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP4LEN_TMP         (8)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP4_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP4_IER            (0x02)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint5 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint5 Configuration
+#define _EP5_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP5_CFG_EPADR      (5)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP5_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP5_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP5_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP5LEN_TMP         (8)
+
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP5_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP5_IER            (0x10)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint6 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint6 Configuration
+#define _EP6_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP6_CFG_EPADR      (6)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP6_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP6_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP6_CFG_EPDIR      (0)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP6LEN_TMP         (8)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP6_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP6_IER            (0x02)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint7 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint7 Configuration
+#define _EP7_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP7_CFG_EPADR      (7)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP7_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <1=> Isochronous
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP7_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP7_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-1000:4>
+                            /* Maximum: 1000 Bytes                                                          */
+#define _EP7LEN_TMP         (8)
+
+//    <o0> Single/Double Buffer Selection (SDBS)
+//      <0=> Single Buffer
+//      <1=> Double Buffer
+#define _EP7_CFG_SDBS       (0)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP7_IER            (0x10)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint8 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint8 Configuration
+#define _EP8_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP8_CFG_EPADR      (8)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP8_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP8_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP8_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP8LEN_TMP         (8)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP8_IER            (0x10)
+// </h>
+// </e>
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* Endpoint9 Configuration Setting                                                                          */
+/*----------------------------------------------------------------------------------------------------------*/
+//  <e0> Endpoint9 Configuration
+#define _EP9_ENABLE         (0)
+
+//    <o0> Endpoint Address (EPADR)
+//      <1=> 1
+//      <2=> 2
+//      <3=> 3
+//      <4=> 4
+//      <5=> 5
+//      <6=> 6
+//      <7=> 7
+//      <8=> 8
+//      <9=> 9
+#define _EP9_CFG_EPADR      (9)
+
+//    <o0.0> Endpoint Enable (EPEN)
+#define _EP9_CFG_EPEN_TMP   (1)
+
+//    <o0> Endpoint Transfer Type
+//      <2=> Bulk
+//      <3=> Interrupt
+#define _EP9_TYPR           (3)
+
+//    <o0> Endpoint Direction (EPDIR)
+//      <1=> IN
+//      <0=> OUT
+#define _EP9_CFG_EPDIR      (1)
+
+//    <o0> Endpoint Buffer Length (EPLEN) (in byte) <4-64:4>
+                            /* Maximum: 64 Bytes                                                            */
+#define _EP9LEN_TMP         (8)
+
+//    <h> Endpoint Interrupt Enable Settings (EPIER)
+//      <o0> Endpoint Interrupt Enable Settings (EPIER) <0x0-0xFF:1>
+//      <o0.0> OUT Token Packet Received Interrupt Enable (OTRXIE)
+//      <o0.1> OUT Data Packet Received Interrupt Enable (ODRXIE)
+//      <o0.2> OUT Data Buffer Overrun Interrupt Enable (ODOVIE)
+//      <o0.3> IN Token Packet Received Interrupt Enable (ITRXIE)
+//      <o0.4> IN Data Packet Transmitted Interrupt Enable (IDTXIE)
+//      <o0.5> NAK Transmitted Interrupt Enable (NAKIE)
+//      <o0.6> STALL Transmitted Interrupt Enable (STLIE)
+//      <o0.7> USB Error Interrupt Enable (UERIE)
+#define _EP9_IER            (0x10)
+// </h>
+// </e>
+
+#endif

+ 556 - 0
bsp/ht32/ht32f53252/board/inc/ht32f5xxxx_conf.h

@@ -0,0 +1,556 @@
+/*********************************************************************************************************//**
+ * @file    IP/Example/ht32f5xxxx_conf.h
+ * @version $Rev:: 7109         $
+ * @date    $Date:: 2023-08-10 #$
+ * @brief   Library configuration file.
+ *************************************************************************************************************
+ * @attention
+ *
+ * Firmware Disclaimer Information
+ *
+ * 1. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, which is supplied by Holtek Semiconductor Inc., (hereinafter referred to as "HOLTEK") is the
+ *    proprietary and confidential intellectual property of HOLTEK, and is protected by copyright law and
+ *    other intellectual property laws.
+ *
+ * 2. The customer hereby acknowledges and agrees that the program technical documentation, including the
+ *    code, is confidential information belonging to HOLTEK, and must not be disclosed to any third parties
+ *    other than HOLTEK and the customer.
+ *
+ * 3. The program technical documentation, including the code, is provided "as is" and for customer reference
+ *    only. After delivery by HOLTEK, the customer shall use the program technical documentation, including
+ *    the code, at their own risk. HOLTEK disclaims any expressed, implied or statutory warranties, including
+ *    the warranties of merchantability, satisfactory quality and fitness for a particular purpose.
+ *
+ * <h2><center>Copyright (C) Holtek Semiconductor Inc. All rights reserved</center></h2>
+ ************************************************************************************************************/
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+
+/* Define to prevent recursive inclusion -------------------------------------------------------------------*/
+#ifndef __HT32F5XXXX_CONF_H
+#define __HT32F5XXXX_CONF_H
+
+/* Exported constants --------------------------------------------------------------------------------------*/
+
+#define RETARGET_USB        1
+#define RETARGET_SYSLOG     2
+#define RETARGET_COM1       10
+#define RETARGET_COM2       11
+#define RETARGET_USART0     12
+#define RETARGET_USART1     13
+#define RETARGET_UART0      14
+#define RETARGET_UART1      15
+#define RETARGET_UART2      16
+#define RETARGET_UART3      17
+
+
+/* Retarget settings of the C standard I/O library functions (printf, scanf, getchar, ...etc.)              */
+/*
+//  <q> Enable Retarget
+//  <o1> Retarget Port
+//      <1=> USB Virtual COM
+//      <2=> Syslog
+//      <10=> COM1
+//      <11=> COM2
+//      <12=> USART0
+//      <13=> USART1
+//      <14=> UART0
+//      <15=> UART1
+//      <16=> UART2
+//      <17=> UART3
+//  <q2> Enable Auto Return
+//       <i> Auto Return function adds "\r" before "\n" automatically when print message by Retarget.
+*/
+#define _RETARGET            1
+#define RETARGET_PORT        10
+#define _AUTO_RETURN         0
+
+#ifndef AUTO_RETURN
+#if (_AUTO_RETURN == 1)
+#define AUTO_RETURN
+#endif
+#endif
+
+/* Enable Interrupt Mode for UxART Retarget
+// <h> Retarget COM/UxART Setting
+//  <o0> UxART Baudrate
+//  <q1> Enable Interrupt Mode for UxART Tx Retarget
+//  <q2> Define UxARTn_IRQHandler By Retarget (ht32_serial.c)
+//    <i> Disable (RETARGET_DEFINE_HANDLER = 0) if application already have UxARTn_IRQHandler.
+//    <i> RETARGET_UART_IRQHandler() shall be called by UxARTn_IRQHandler when disable.
+//  <o3> Tx Buffer Length (in byte)
+// </h>
+*/
+#define RETARGET_UxART_BAUDRATE       115200
+#define RETARGET_INT_MODE             0
+#define RETARGET_DEFINE_HANDLER       1
+#define RETARGET_INT_BUFFER_SIZE      64
+
+#if (_RETARGET == 1)
+#if (RETARGET_PORT == RETARGET_USB)
+  #define RETARGET_IS_USB
+//  <h> Retarget USB Virtual COM Setting
+//  <o0> Communication (Interrupt IN)
+//      <1=> Endpoint 1
+//      <2=> Endpoint 2
+//      <3=> Endpoint 3
+//      <4=> Endpoint 4
+//      <5=> Endpoint 5
+//      <6=> Endpoint 6
+//      <7=> Endpoint 7
+//  <o1> Data Rx (Bulk OUT)
+//      <1=> Endpoint 1
+//      <2=> Endpoint 2
+//      <3=> Endpoint 3
+//      <4=> Endpoint 4
+//      <5=> Endpoint 5
+//      <6=> Endpoint 6
+//      <7=> Endpoint 7
+//  <o2> Data Tx (Bulk IN)
+//      <1=> Endpoint 1
+//      <2=> Endpoint 2
+//      <3=> Endpoint 3
+//      <4=> Endpoint 4
+//      <5=> Endpoint 5
+//      <6=> Endpoint 6
+//      <7=> Endpoint 7
+//  <o3> Communication Endpoint Buffer Length (in byte) <4-64:4>
+//  <o4> Data Rx Endpoint Buffer Length (in byte) <4-64:4>
+//  <o5> Data Tx Endpoint Buffer Length (in byte) <4-64:4>
+//  <o6> Rx Buffer Length (in byte) <64-1024:4>
+//  <o7> Tx Buffer Length (in byte) <1-63:1>
+//    <i> Please use "SERIAL_Flush()" to sent out the buffer data immediately when Tx Buffer Length > 1.
+//  <o8> USB Tx Mode (BULK IN)
+//      <0=> Block Mode (Wait until both USB and terminal software are ready)
+//      <1=> Non-Block Mode (Drop data if USB or terminal software is not ready)
+//  <q9> Enable HSI Auto Trim By USB Function
+//    <i> Need turn on if the USB clock source is from HSI (PLL USBPLL clock Source).
+  #define RETARGET_CTRL_EPT      (5)
+  #define RETARGET_RX_EPT        (6)
+  #define RETARGET_TX_EPT        (7)
+  #define RETARGET_CTRL_EPTLEN   (8)
+  #define RETARGET_RX_EPTLEN     (64)
+  #define RETARGET_TX_EPTLEN     (64)
+  #define RETARGET_BUFFER_SIZE   (64)
+  #define RETARGET_TXBUFFER_SIZE (1) // Use "SERIAL_Flush()" to sent out the buffer data immediately when Tx Buffer Length > 1.
+  #define RETARGET_USB_MODE      (0)
+  #define RETARGET_HSI_ATM       (1)
+// </h>
+#elif (RETARGET_PORT == RETARGET_COM1)
+  #define RETARGET_COM_PORT         COM1
+  #define RETARGET_USART_PORT       COM1_PORT
+  #define RETARGET_UART_IRQn        COM1_IRQn
+  #define RETARGET_UART_IRQHandler  COM1_IRQHandler
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_COM2)
+  #define RETARGET_COM_PORT         COM2
+  #define RETARGET_USART_PORT       COM2_PORT
+  #define RETARGET_UART_IRQn        COM2_IRQn
+  #define RETARGET_UART_IRQHandler  COM2_IRQHandler
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_USART0)
+  #define RETARGET_UxART_IPN        USART0
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_USART1)
+  #define RETARGET_UxART_IPN        USART1
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_UART0)
+  #define RETARGET_UxART_IPN        UART0
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_UART1)
+  #define RETARGET_UxART_IPN        UART1
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_UART2)
+  #define RETARGET_UxART_IPN        UART2
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#elif (RETARGET_PORT == RETARGET_UART3)
+  #define RETARGET_UxART_IPN        UART3
+  #define RETARGET_USART_PORT       STRCAT2(HT_, RETARGET_UxART_IPN)
+  #define RETARGET_UART_IRQn        STRCAT2(RETARGET_UxART_IPN, _IRQn)
+  #define RETARGET_UART_IRQHandler  STRCAT2(RETARGET_UxART_IPN, _IRQHandler)
+  #define RETARGET_IS_UART
+#endif
+  extern void RETARGET_Configuration(void);
+#else
+  #define RETARGET_Configuration(...)
+  #undef printf
+  #undef getchar
+  #define printf(...)
+  #define getchar()  (0)
+#endif
+
+#if (RETARGET_DEFINE_HANDLER == 0)
+#undef RETARGET_UART_IRQHandler
+#endif
+
+/*
+//<e0> Enable HT32 Time Function
+//  <i> Provide "Time_GetTick()" and "Time_Dealy()" functions.
+
+//  <o1> Timer Selection
+//      <0=> BFTM0
+//      <1=> BFTM1
+//      <2=> SCTM0
+//      <3=> SCTM1
+//      <4=> SCTM2
+//      <5=> SCTM3
+//      <6=> PWM0
+//      <7=> PWM1
+//      <8=> PWM2
+//      <9=> GPTM0
+//      <10=> GPTM1
+//      <11=> MCTM0
+
+//  <h> Timer Clock Setting
+//  </h>
+//    <i> Timer Clock = (Core Clock) / (APB Peripheral Clock Prescaler)
+//    <i> HTCFG_TIME_CLKSRC = _HTCFG_TIME_CORECLK / (2^HTCFG_TIME_PCLK_DIV)
+//    <i> _HTCFG_TIME_CORECLK = LIBCFG_MAX_SPEED or HTCFG_TIME_CLK_MANUAL (selected by HTCFG_TIME_CLKSEL)
+
+//  <o2> -- Core Clock Setting (CK_AHB)
+//    <i> HTCFG_TIME_CLKSEL
+//    <i> 0 = Default Maximum (LIBCFG_MAX_SPEED)
+//    <i> 1 = Manual Input (HTCFG_TIME_CLK_MANUAL)
+//       <0=> Default Maximum (LIBCFG_MAX_SPEED)
+//       <1=> Manual Input (HTCFG_TIME_CLK_MANUAL)
+
+//  <o3> -- Core Clock Manual Input (Hz)
+//    <i> HTCFG_TIME_CLK_MANUAL
+//    <i> Only meaningful when Core Clock Setting (HTCFG_TIME_CLKSEL) = Manual Input (1)
+
+//  <o4> -- APB Peripheral Clock Prescaler
+//    <i> HTCFG_TIME_PCLK_DIV
+//       <0=> /1
+//       <1=> /2
+//       <2=> /4
+//       <3=> /8
+
+//  <o5> Time Tick (Hz, not applicable for BFTM) <1-1000000:100>
+//    <i> Not applicable for BFTM, fixed TICKHZ to HTCFG_TIME_CLKSRC for BFTM.
+*/
+#if (0) // Enable HT32 Time Function
+#define HTCFG_TIME_IPSEL                          (0)
+#define HTCFG_TIME_CLKSEL                         (0)         // 0 = Default Maximum (LIBCFG_MAX_SPEED), 1 = Manual Input (HTCFG_TIME_CLKSRC)
+#define HTCFG_TIME_CLK_MANUAL                     (20000000)  // Only meaningful when HTCFG_TIME_CLKSEL = 1 (Manual Input)
+#define HTCFG_TIME_PCLK_DIV                       (0)         // 0 ~ 3. (/1, /2, /4, /8)
+#define HTCFG_TIME_TICKHZ                         (1000)      // Hz, not applicable for BFTM, fixed TICKHZ to HTCFG_TIME_CLKSRC for BFTM
+#define HTCFG_TIME_MULTIPLE                       (1)         // MUST be 1, 2, 4, 8. TICK = COUNT / MULTIPLE. Not applicable for BFTM.
+/*
+
+  Timer Clock = (Core Clock) / (APB Peripheral Clock Prescaler)
+  HTCFG_TIME_CLKSRC = (_HTCFG_TIME_CORECLK) / (2^HTCFG_TIME_PCLK_DIV)
+  where _HTCFG_TIME_CORECLK can be LIBCFG_MAX_SPEED or HTCFG_TIME_CLK_MANUAL (selected by HTCFG_TIME_CLKSEL)
+
+  Tick Range: 0 ~ 2^32 / HTCFG_TIME_TICKHZ (maximum tick time)
+  Interrupt Time: _HTCFG_TIME_OVERFLOW_VALUE / (HTCFG_TIME_TICKHZ * HTCFG_TIME_MULTIPLE) Second
+  (Interrupt Time is not applicable for BFTM)
+
+  Example: 32-bit BFTM with 48 MHz Timer Clock
+    HTCFG_TIME_TICKHZ = HTCFG_TIME_CLKSRC = 48000000
+    Tick Range: 0 ~ 2^32 / 48000000 = 0 ~ 89.478485 Second (maximum tick time, return to 0 every 89.478485 Second)
+    BFTM do not use interrupt
+
+  Example: 16-bit GPTM with 1 ms tick
+    HTCFG_TIME_TICKHZ = 1000 (Hz)
+    HTCFG_TIME_MULTIPLE = 1 (1 Timer Count = 1 Tick)
+    Tick Range: 0 ~ 2^32 / 1000 = 0 ~ 4294967 Second = 0 ~ 49.7 Day (maximum tick time, return to 0 every 49.7 Day)
+    Interrupt Time: 65536 / (1000 * 1) = 65.536 Second (Trigger interrupt every 65.536 Second)
+*/
+#endif
+/*
+//</e>
+*/
+
+/* !!! NOTICE !!!
+ * How to adjust the value of High Speed External oscillator (HSE)?
+   The default value of HSE is define by "HSE_VALUE" in "ht32fxxxxx_nn.h".
+   If your board uses a different HSE speed, please add a new compiler preprocessor
+   C define, "HSE_VALUE=n000000" ("n" represents n MHz) in the toolchain/IDE,
+   or edit the "HSE_VALUE" in the "ht32f5xxxx_conf.h" file (this file).
+*/
+/*
+//<e0> Enable User Define HSE Value
+//  <i> Enable user define HSE value to overwrite default "HSE_VALUE" define in "ht32fxxxxx_nn.h".
+//  <o1> HSE Value (Hz)
+*/
+#if (0)
+#define HSE_VALUE                 16000000
+#endif
+/*
+//</e>
+*/
+
+/*
+//<q> Enable CKOUT Function
+*/
+#define ENABLE_CKOUT              0
+
+/*
+//<q> Enable Get CK_ADC of "CKCU_GetClocksFrequency()"
+//<i> Enable ADC0_Freq and ADC1_Freq of the "CKCU_GetClocksFrequency()" function. It required the division calculation (by C Library) and increased the code size.
+*/
+#define HT32_LIB_ENABLE_GET_CK_ADC              0
+
+/* The DEBUG definition to enter debug mode for library                                                     */
+/*
+//<q> Library Debug Mode
+*/
+#define HT32_LIB_DEBUG      0
+
+
+/* Enable/disable the specific peripheral inclusion                                                         */
+
+//  <h> Library Inclusion Configuration
+/* ADC -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> ADC Library
+*/
+#define _ADC          1
+
+/* AES -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> AES Library
+*/
+#define _AES          1
+
+/* BFTM ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> BFTM Library
+*/
+#define _BFTM         1
+
+/* CAN -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> CAN Library
+*/
+#define _CAN          1
+
+/* Clock Control -------------------------------------------------------------------------------------------*/
+/*
+//<q> Clock Control Library
+*/
+#define _CKCU         1
+
+/* Comparator ----------------------------------------------------------------------------------------------*/
+/*
+//<q> Comparator Library
+*/
+#define _CMP          1
+
+/* CRC -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> CRC Library
+*/
+#define _CRC          1
+
+/* DAC -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> DAC Library
+*/
+#define _DAC          1
+
+/* DAC Dual 16-bit -----------------------------------------------------------------------------------------*/
+/*
+//<q> DAC_Dual16 Library
+*/
+#define _DAC_DUAL16   1
+
+/* DIV -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> DIV Library
+*/
+#define _DIV          1
+
+/* EBI -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> EBI Library
+*/
+#define _EBI          1
+
+/* EXTI ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> EXTI Library
+*/
+#define _EXTI         1
+
+/* Flash ---------------------------------------------------------------------------------------------------*/
+/*
+//<q> Flash Library
+*/
+#define _FLASH        1
+
+/* GPIO ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> GPIO Library
+*/
+#define _GPIO         1
+
+/* GPTM ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> GPTM Library
+*/
+#define _GPTM         1
+
+/* I2C -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> I2C Library
+*/
+#define _I2C          1
+
+/* I2S -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> I2S Library
+*/
+#define _I2S          1
+
+/* LCD -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> LCD Library
+*/
+#define _LCD          1
+
+/* LEDC ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> LEDC Library
+*/
+#define _LEDC         1
+
+/* MCTM ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> MCTM Library
+*/
+#define _MCTM         1
+
+/* MIDI ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> MIDI Library
+*/
+#define _MIDI         1
+
+/* OPA -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> OPA
+*/
+#define _OPA          1
+
+/* PDMA ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> PDMA Library
+*/
+#define _PDMA         1
+
+/* PWM -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> PWM Library
+*/
+#define _PWM          1
+
+/* PWRCU ---------------------------------------------------------------------------------------------------*/
+/*
+//<q> PWRCU Library
+*/
+#define _PWRCU        1
+
+/* RSTCU ---------------------------------------------------------------------------------------------------*/
+/*
+//<q> RSTCU Library
+*/
+#define _RSTCU        1
+
+/* RTC -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> RTC Library
+*/
+#define _RTC          1
+
+/* SCI -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> SCI Library
+*/
+#define _SCI          1
+
+/* SCTM ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> SCTM Library
+*/
+#define _SCTM         1
+
+/* SLED ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> SLED Library
+*/
+#define _SLED         1
+
+/* SPI -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> SPI Library
+*/
+#define _SPI          1
+
+/* TKEY ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> TKEY Library
+*/
+#define _TKEY         1
+
+/* USART ---------------------------------------------------------------------------------------------------*/
+/*
+//<q0> USART/UART Library
+*/
+#define _USART        1
+
+/* USBD ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> USB Library
+*/
+#define _USB          1
+
+/* WDT -----------------------------------------------------------------------------------------------------*/
+/*
+//<q> WDT Library
+*/
+#define _WDT          1
+
+/* Misc ----------------------------------------------------------------------------------------------------*/
+/*
+//<q> Misc Library
+*/
+#define _MISC         1
+
+/* Serial --------------------------------------------------------------------------------------------------*/
+/*
+//<q> Serial Library
+*/
+#define _SERIAL       1
+
+/* Software DIV --------------------------------------------------------------------------------------------*/
+/*
+//<q> Software Divider Library
+*/
+#define _SWDIV        1
+
+/* Software Random Number ----------------------------------------------------------------------------------*/
+/*
+//<q> Software Random Number Library
+*/
+#define _SWRAND       1
+
+
+// </h>
+
+#endif

+ 28 - 0
bsp/ht32/ht32f53252/board/linker_scripts/link.icf

@@ -0,0 +1,28 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__   = 0x080FFFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
+define symbol __ICFEDIT_region_RAM_end__   = 0x20017FFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x0400;
+define symbol __ICFEDIT_size_heap__   = 0x0000;
+/**** End of ICF editor section. ###ICF###*/
+
+define memory mem with size = 4G;
+define region ROM_region      = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region      = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite, last block CSTACK};

+ 156 - 0
bsp/ht32/ht32f53252/board/linker_scripts/link.lds

@@ -0,0 +1,156 @@
+/*
+ * linker script for AT32 with GNU ld
+ */
+
+/* Program Entry, set to mark it as "used" and avoid gc */
+MEMORY
+{
+    ROM (rx) : ORIGIN = 0x08000000, LENGTH = 1024k /* 1024KB flash */
+    RAM (rw) : ORIGIN = 0x20000000, LENGTH =  96k /* 96K sram */
+}
+ENTRY(Reset_Handler)
+_system_stack_size = 0x200;
+
+SECTIONS
+{
+    .text :
+    {
+        . = ALIGN(4);
+        _stext = .;
+        KEEP(*(.isr_vector))            /* Startup code */
+
+        . = ALIGN(4);
+        *(.text)                        /* remaining code */
+        *(.text.*)                      /* remaining code */
+        *(.rodata)                      /* read-only data (constants) */
+        *(.rodata*)
+        *(.glue_7)
+        *(.glue_7t)
+        *(.gnu.linkonce.t*)
+
+        /* section information for finsh shell */
+        . = ALIGN(4);
+        __fsymtab_start = .;
+        KEEP(*(FSymTab))
+        __fsymtab_end = .;
+
+        . = ALIGN(4);
+        __vsymtab_start = .;
+        KEEP(*(VSymTab))
+        __vsymtab_end = .;
+
+        /* section information for initial. */
+        . = ALIGN(4);
+        __rt_init_start = .;
+        KEEP(*(SORT(.rti_fn*)))
+        __rt_init_end = .;
+
+        . = ALIGN(4);
+
+        PROVIDE(__ctors_start__ = .);
+        KEEP (*(SORT(.init_array.*)))
+        KEEP (*(.init_array))
+        PROVIDE(__ctors_end__ = .);
+
+        . = ALIGN(4); 
+
+        _etext = .;
+    } > ROM = 0
+
+    /* .ARM.exidx is sorted, so has to go in its own output section.  */
+    __exidx_start = .;
+    .ARM.exidx :
+    {
+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+
+        /* This is used by the startup in order to initialize the .data secion */
+        _sidata = .;
+    } > ROM
+    __exidx_end = .;
+
+    /* .data section which is used for initialized data */
+
+    .data : AT (_sidata)
+    {
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data secion */
+        _sdata = . ;
+
+        *(.data)
+        *(.data.*)
+        *(.gnu.linkonce.d*)
+
+        PROVIDE(__dtors_start__ = .);
+        KEEP(*(SORT(.dtors.*)))
+        KEEP(*(.dtors))
+        PROVIDE(__dtors_end__ = .);
+        
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data secion */
+        _edata = . ;
+    } >RAM
+
+    .stack : 
+    {
+        . = ALIGN(4);
+        _sstack = .;
+        . = . + _system_stack_size;
+        . = ALIGN(4);
+        _estack = .;
+    } >RAM
+
+    __bss_start = .;
+    .bss :
+    {
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss secion */
+        _sbss = .;
+
+        *(.bss)
+        *(.bss.*)
+        *(COMMON)
+
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss secion */
+        _ebss = . ;
+        
+        *(.bss.init)
+    } > RAM
+    __bss_end = .;
+
+    _end = .;
+
+    /* Stabs debugging sections.  */
+    .stab          0 : { *(.stab) }
+    .stabstr       0 : { *(.stabstr) }
+    .stab.excl     0 : { *(.stab.excl) }
+    .stab.exclstr  0 : { *(.stab.exclstr) }
+    .stab.index    0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment       0 : { *(.comment) }
+    /* DWARF debug sections.
+     * Symbols in the DWARF debugging sections are relative to the beginning
+     * of the section so we begin them at 0.  */
+    /* DWARF 1 */
+    .debug          0 : { *(.debug) }
+    .line           0 : { *(.line) }
+    /* GNU DWARF 1 extensions */
+    .debug_srcinfo  0 : { *(.debug_srcinfo) }
+    .debug_sfnames  0 : { *(.debug_sfnames) }
+    /* DWARF 1.1 and DWARF 2 */
+    .debug_aranges  0 : { *(.debug_aranges) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    /* DWARF 2 */
+    .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+    .debug_abbrev   0 : { *(.debug_abbrev) }
+    .debug_line     0 : { *(.debug_line) }
+    .debug_frame    0 : { *(.debug_frame) }
+    .debug_str      0 : { *(.debug_str) }
+    .debug_loc      0 : { *(.debug_loc) }
+    .debug_macinfo  0 : { *(.debug_macinfo) }
+    /* SGI/MIPS DWARF 2 extensions */
+    .debug_weaknames 0 : { *(.debug_weaknames) }
+    .debug_funcnames 0 : { *(.debug_funcnames) }
+    .debug_typenames 0 : { *(.debug_typenames) }
+    .debug_varnames  0 : { *(.debug_varnames) }
+}

+ 15 - 0
bsp/ht32/ht32f53252/board/linker_scripts/link.sct

@@ -0,0 +1,15 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001FE00  {    ; load region size_region
+  ER_IROM1 0x00000000 0x0001FE00  {  ; load address = execution address
+   *.o (RESET, +First)
+   *(InRoot$$Sections)
+   .ANY (+RO)
+  }
+  RW_IRAM1 0x20000000 0x00004000  {  ; RW data
+   .ANY (+RW +ZI)
+  }
+}
+

+ 17 - 0
bsp/ht32/ht32f53252/board/src/board.c

@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2006-2024, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-04-08     QT-one       first version
+ */
+
+#include "board.h"
+
+/* This feature will initialize the HT32 chip clock */
+void rt_hw_board_clock_init(void)
+{
+
+}

+ 272 - 0
bsp/ht32/ht32f53252/board/src/ht32_msp.c

@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 2006-2025, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2024-04-08     QT-one       first version
+ */
+
+#include "ht32_msp.h"
+
+/* GPIO configuration for UART */
+#ifdef BSP_USING_UART
+void ht32_usart_gpio_init(void *instance)
+{
+    CKCU_PeripClockConfig_TypeDef   CKCUClock = {{0}};
+    HT_USART_TypeDef *usart_x = (HT_USART_TypeDef *)instance;
+#ifdef BSP_USING_USART0
+    if (HT_USART0 == usart_x)
+    {
+        CKCUClock.Bit.HTCFG_USART0_TX_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_USART0_RX_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Turn on UxART Rx internal pull up resistor to prevent unknow state */
+        GPIO_PullResistorConfig(HTCFG_USART0_RX_GPIO_PORT, HTCFG_USART0_RX_GPIO_PIN, GPIO_PR_UP);
+        /* Config AFIO mode as UxART function */
+        AFIO_GPxConfig(HTCFG_USART0_TX_GPIO_ID, HTCFG_USART0_TX_GPIO_PIN, AFIO_FUN_USART_UART);
+        AFIO_GPxConfig(HTCFG_USART0_RX_GPIO_ID, HTCFG_USART0_RX_GPIO_PIN, AFIO_FUN_USART_UART);
+    }
+#endif
+#ifdef BSP_USING_USART1
+    if (HT_USART1 == usart_x)
+    {
+        CKCUClock.Bit.HTCFG_USART1_TX_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_USART1_RX_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Turn on UxART Rx internal pull up resistor to prevent unknow state */
+        GPIO_PullResistorConfig(HTCFG_USART1_RX_GPIO_PORT, HTCFG_USART1_RX_GPIO_PIN, GPIO_PR_UP);
+        /* Config AFIO mode as UxART function */
+        AFIO_GPxConfig(HTCFG_USART1_TX_GPIO_ID, HTCFG_USART1_TX_GPIO_PIN, AFIO_FUN_USART_UART);
+        AFIO_GPxConfig(HTCFG_USART1_RX_GPIO_ID, HTCFG_USART1_RX_GPIO_PIN, AFIO_FUN_USART_UART);
+    }
+#endif
+#ifdef BSP_USING_UART0
+    if (HT_UART0 == usart_x)
+    {
+        CKCUClock.Bit.HTCFG_UART0_TX_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_UART0_RX_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Turn on UxART Rx internal pull up resistor to prevent unknow state */
+        GPIO_PullResistorConfig(HTCFG_UART0_RX_GPIO_PORT, HTCFG_UART0_RX_GPIO_PIN, GPIO_PR_UP);
+        /* Config AFIO mode as UxART function */
+        AFIO_GPxConfig(HTCFG_UART0_TX_GPIO_ID, HTCFG_UART0_TX_GPIO_PIN, AFIO_FUN_USART_UART);
+        AFIO_GPxConfig(HTCFG_UART0_RX_GPIO_ID, HTCFG_UART0_RX_GPIO_PIN, AFIO_FUN_USART_UART);
+    }
+#endif
+#ifdef BSP_USING_UART1
+    if (HT_UART1 == usart_x)
+    {
+        CKCUClock.Bit.HTCFG_UART1_TX_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_UART1_RX_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Turn on UxART Rx internal pull up resistor to prevent unknow state */
+        GPIO_PullResistorConfig(HTCFG_UART1_RX_GPIO_PORT, HTCFG_UART1_RX_GPIO_PIN, GPIO_PR_UP);
+        /* Config AFIO mode as UxART function */
+        AFIO_GPxConfig(HTCFG_UART1_TX_GPIO_ID, HTCFG_UART1_TX_GPIO_PIN, AFIO_FUN_USART_UART);
+        AFIO_GPxConfig(HTCFG_UART1_RX_GPIO_ID, HTCFG_UART1_RX_GPIO_PIN, AFIO_FUN_USART_UART);
+    }
+#endif
+}
+#endif
+
+/* GPIO configuration for SPI */
+#ifdef BSP_USING_SPI
+void ht32_spi_gpio_init(void *instance)
+{
+    CKCU_PeripClockConfig_TypeDef   CKCUClock = {{0}};
+    HT_SPI_TypeDef *spi_x = (HT_SPI_TypeDef *)instance;
+#ifdef BSP_USING_SPI0
+    if (HT_SPI0 == spi_x)
+    {
+        CKCUClock.Bit.HTCFG_SPI0_SCK_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_SPI0_MISO_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_SPI0_MOSI_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+
+        AFIO_GPxConfig(HTCFG_SPI0_SCK_GPIO_ID, HTCFG_SPI0_SCK_GPIO_PIN, AFIO_FUN_SPI);
+        AFIO_GPxConfig(HTCFG_SPI0_MISO_GPIO_ID, HTCFG_SPI0_MISO_GPIO_PIN, AFIO_FUN_SPI);
+        AFIO_GPxConfig(HTCFG_SPI0_MOSI_GPIO_ID, HTCFG_SPI0_MOSI_GPIO_PIN, AFIO_FUN_SPI);
+    }
+#endif
+#ifdef BSP_USING_SPI1
+    if (HT_SPI1 == spi_x)
+    {
+        CKCUClock.Bit.HTCFG_SPI1_SCK_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_SPI1_MISO_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_SPI1_MOSI_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+
+        AFIO_GPxConfig(HTCFG_SPI1_SCK_GPIO_ID, HTCFG_SPI1_SCK_GPIO_PIN, AFIO_FUN_SPI);
+        AFIO_GPxConfig(HTCFG_SPI1_MISO_GPIO_ID, HTCFG_SPI1_MISO_GPIO_PIN, AFIO_FUN_SPI);
+        AFIO_GPxConfig(HTCFG_SPI1_MOSI_GPIO_ID, HTCFG_SPI1_MOSI_GPIO_PIN, AFIO_FUN_SPI);
+    }
+#endif
+}
+#endif
+
+/* GPIO configuration for I2C */
+#ifdef BSP_USING_I2C_HW
+void ht32_hardware_i2c_gpio_init(void *instance)
+{
+    CKCU_PeripClockConfig_TypeDef   CKCUClock = {{0}};
+    HT_I2C_TypeDef *i2c_x = (HT_I2C_TypeDef *)instance;
+#ifdef BSP_USING_I2C0_HW
+    if (HT_I2C0 == i2c_x)
+    {
+        CKCUClock.Bit.HTCFG_I2C0_SCL_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_I2C0_SDA_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Configure GPIO to I2C mode */
+        AFIO_GPxConfig(HTCFG_I2C0_SCL_GPIO_ID, HTCFG_I2C0_SCL_GPIO_PIN, AFIO_FUN_I2C);
+        AFIO_GPxConfig(HTCFG_I2C0_SDA_GPIO_ID, HTCFG_I2C0_SDA_GPIO_PIN, AFIO_FUN_I2C);
+    }
+#endif
+#ifdef BSP_USING_I2C1_HW
+    if (HT_I2C1 == i2c_x)
+    {
+        CKCUClock.Bit.HTCFG_I2C1_SCL_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_I2C1_SDA_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Configure GPIO to I2C mode */
+        AFIO_GPxConfig(HTCFG_I2C1_SCL_GPIO_ID, HTCFG_I2C1_SCL_GPIO_PIN, AFIO_FUN_I2C);
+        AFIO_GPxConfig(HTCFG_I2C1_SDA_GPIO_ID, HTCFG_I2C1_SDA_GPIO_PIN, AFIO_FUN_I2C);
+    }
+#endif
+}
+#endif
+
+/* GPIO configuration for ADC */
+#ifdef BSP_USING_ADC
+void ht32_adc_gpio_init(void *instance,int8_t channel)
+{
+    CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
+    HT_ADC_TypeDef *adc_x = (HT_ADC_TypeDef *)instance;
+#ifdef BSP_USING_ADC0
+    if (HT_ADC0 == adc_x)
+    {
+        /* Enable peripheral clock */
+        CKCUClock.Bit.AFIO = 1;
+        CKCUClock.Bit.ADC0 = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+
+        /* Configure AFIO mode as ADC function */
+        switch(channel)
+        {
+            case 0:
+                AFIO_GPxConfig(HTCFG_ADC0CH0_GPIO_ID, HTCFG_ADC0CH0_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 1:
+                AFIO_GPxConfig(HTCFG_ADC0CH1_GPIO_ID, HTCFG_ADC0CH1_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 2:
+                AFIO_GPxConfig(HTCFG_ADC0CH2_GPIO_ID, HTCFG_ADC0CH2_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 3:
+                AFIO_GPxConfig(HTCFG_ADC0CH3_GPIO_ID, HTCFG_ADC0CH3_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 4:
+                AFIO_GPxConfig(HTCFG_ADC0CH4_GPIO_ID, HTCFG_ADC0CH4_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 5:
+                AFIO_GPxConfig(HTCFG_ADC0CH5_GPIO_ID, HTCFG_ADC0CH5_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 6:
+                AFIO_GPxConfig(HTCFG_ADC0CH6_GPIO_ID, HTCFG_ADC0CH6_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 7:
+                AFIO_GPxConfig(HTCFG_ADC0CH7_GPIO_ID, HTCFG_ADC0CH7_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 8:
+                AFIO_GPxConfig(HTCFG_ADC0CH8_GPIO_ID, HTCFG_ADC0CH8_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 9:
+                AFIO_GPxConfig(HTCFG_ADC0CH9_GPIO_ID, HTCFG_ADC0CH9_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 10:
+                AFIO_GPxConfig(HTCFG_ADC0CH10_GPIO_ID, HTCFG_ADC0CH10_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 11:
+                AFIO_GPxConfig(HTCFG_ADC0CH11_GPIO_ID, HTCFG_ADC0CH11_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 12:
+                AFIO_GPxConfig(HTCFG_ADC0CH12_GPIO_ID, HTCFG_ADC0CH12_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 13:
+                AFIO_GPxConfig(HTCFG_ADC0CH13_GPIO_ID, HTCFG_ADC0CH13_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 14:
+                AFIO_GPxConfig(HTCFG_ADC0CH14_GPIO_ID, HTCFG_ADC0CH14_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 15:
+                AFIO_GPxConfig(HTCFG_ADC0CH15_GPIO_ID, HTCFG_ADC0CH15_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            default:
+                break;
+        }
+    }
+#endif
+#ifdef BSP_USING_ADC1
+    if (HT_ADC1 == adc_x)
+    {
+        /* Enable peripheral clock */
+        CKCUClock.Bit.AFIO = 1;
+        CKCUClock.Bit.ADC1 = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+
+        /* Configure AFIO mode as ADC function */
+        switch(channel)
+        {
+            case 0:
+                AFIO_GPxConfig(HTCFG_ADC1CH0_GPIO_ID, HTCFG_ADC1CH0_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 1:
+                AFIO_GPxConfig(HTCFG_ADC1CH1_GPIO_ID, HTCFG_ADC1CH1_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 2:
+                AFIO_GPxConfig(HTCFG_ADC1CH2_GPIO_ID, HTCFG_ADC1CH2_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 3:
+                AFIO_GPxConfig(HTCFG_ADC1CH3_GPIO_ID, HTCFG_ADC1CH3_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 4:
+                AFIO_GPxConfig(HTCFG_ADC1CH4_GPIO_ID, HTCFG_ADC1CH4_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 5:
+                AFIO_GPxConfig(HTCFG_ADC1CH5_GPIO_ID, HTCFG_ADC1CH5_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 6:
+                AFIO_GPxConfig(HTCFG_ADC1CH6_GPIO_ID, HTCFG_ADC1CH6_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            case 7:
+                AFIO_GPxConfig(HTCFG_ADC1CH7_GPIO_ID, HTCFG_ADC1CH7_AFIO_PIN, AFIO_FUN_ADC0);
+                break;
+            default:
+                break;
+        }
+    }
+#endif
+}
+#endif
+/* GPIO configuration for ADC */
+#ifdef BSP_USING_CAN
+void ht32_can_gpio_init(void *instance)
+{
+    CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
+    HT_CAN_TypeDef *can_x = (HT_CAN_TypeDef *)instance;
+
+    if (HT_CAN0 == can_x)
+    {
+        CKCUClock.Bit.HTCFG_CAN_TX_GPIO_CLK = 1;
+        CKCUClock.Bit.HTCFG_CAN_RX_GPIO_CLK = 1;
+        CKCU_PeripClockConfig(CKCUClock, ENABLE);
+        /* Configure GPIO to CAN mode */
+        AFIO_GPxConfig(HTCFG_CAN_TX_GPIO_ID, HTCFG_CAN_TX_GPIO_PIN, AFIO_FUN_CAN);
+        AFIO_GPxConfig(HTCFG_CAN_RX_GPIO_ID, HTCFG_CAN_RX_GPIO_PIN, AFIO_FUN_CAN);
+    }
+
+}
+#endif
+
+

二进制
bsp/ht32/ht32f53252/figures/board.jpg


+ 1203 - 0
bsp/ht32/ht32f53252/project.uvoptx

@@ -0,0 +1,1203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>rt-thread</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>8000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\build\keil\List\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>0</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>255</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <nTsel>2</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile></tIfile>
+        <pMon>BIN\CMSIS_AGDI.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN2 -FF0HT32F -FS00 -FL0100000 -FF1HT32F_OPT -FS11FF00000 -FL11000 -FP0($$Device:HT32F53252$ARM\Flash\HT32F.FLM) -FP1($$Device:HT32F53252$ARM\Flash\HT32F_OPT.FLM))</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>CMSIS_AGDI</Key>
+          <Name>-X"Any" -UAny -O206 -S8 -C0 -P00 -TO18 -TC10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN2 -FF0HT32F -FS00 -FL01FC00 -FF1HT32F_OPT -FS11FF00000 -FL1400</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>1</periodic>
+        <aLwin>0</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>0</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>Applications</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>applications\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Compiler</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\armlibc\syscall_mem.c</PathWithFileName>
+      <FilenameWithoutPath>syscall_mem.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\armlibc\syscalls.c</PathWithFileName>
+      <FilenameWithoutPath>syscalls.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\cctype.c</PathWithFileName>
+      <FilenameWithoutPath>cctype.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\cstdlib.c</PathWithFileName>
+      <FilenameWithoutPath>cstdlib.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\cstring.c</PathWithFileName>
+      <FilenameWithoutPath>cstring.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\ctime.c</PathWithFileName>
+      <FilenameWithoutPath>ctime.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\cunistd.c</PathWithFileName>
+      <FilenameWithoutPath>cunistd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\libc\compilers\common\cwchar.c</PathWithFileName>
+      <FilenameWithoutPath>cwchar.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>DeviceDrivers</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\core\device.c</PathWithFileName>
+      <FilenameWithoutPath>device.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_comm.c</PathWithFileName>
+      <FilenameWithoutPath>completion_comm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\completion_up.c</PathWithFileName>
+      <FilenameWithoutPath>completion_up.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\condvar.c</PathWithFileName>
+      <FilenameWithoutPath>condvar.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\dataqueue.c</PathWithFileName>
+      <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\pipe.c</PathWithFileName>
+      <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\ringblk_buf.c</PathWithFileName>
+      <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\ringbuffer.c</PathWithFileName>
+      <FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\waitqueue.c</PathWithFileName>
+      <FilenameWithoutPath>waitqueue.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\ipc\workqueue.c</PathWithFileName>
+      <FilenameWithoutPath>workqueue.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\pin\dev_pin.c</PathWithFileName>
+      <FilenameWithoutPath>dev_pin.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>21</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\drivers\serial\dev_serial.c</PathWithFileName>
+      <FilenameWithoutPath>dev_serial.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Drivers</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>22</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>board\src\board.c</PathWithFileName>
+      <FilenameWithoutPath>board.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>23</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>board\src\ht32_msp.c</PathWithFileName>
+      <FilenameWithoutPath>ht32_msp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\ARM\startup_ht32f5xxxx_15.s</PathWithFileName>
+      <FilenameWithoutPath>startup_ht32f5xxxx_15.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\ht32_drivers\drv_common.c</PathWithFileName>
+      <FilenameWithoutPath>drv_common.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>26</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\ht32_drivers\drv_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>27</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\ht32_drivers\drv_usart.c</PathWithFileName>
+      <FilenameWithoutPath>drv_usart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Finsh</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>28</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\finsh\msh_parse.c</PathWithFileName>
+      <FilenameWithoutPath>msh_parse.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>29</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\finsh\cmd.c</PathWithFileName>
+      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>30</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\finsh\msh.c</PathWithFileName>
+      <FilenameWithoutPath>msh.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>31</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\components\finsh\shell.c</PathWithFileName>
+      <FilenameWithoutPath>shell.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Kernel</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>32</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\clock.c</PathWithFileName>
+      <FilenameWithoutPath>clock.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>33</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\components.c</PathWithFileName>
+      <FilenameWithoutPath>components.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>34</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\cpu_up.c</PathWithFileName>
+      <FilenameWithoutPath>cpu_up.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>35</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\defunct.c</PathWithFileName>
+      <FilenameWithoutPath>defunct.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>36</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\idle.c</PathWithFileName>
+      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>37</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\ipc.c</PathWithFileName>
+      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>38</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\irq.c</PathWithFileName>
+      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>39</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\kservice.c</PathWithFileName>
+      <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>40</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\mem.c</PathWithFileName>
+      <FilenameWithoutPath>mem.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>41</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\memheap.c</PathWithFileName>
+      <FilenameWithoutPath>memheap.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>42</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\mempool.c</PathWithFileName>
+      <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>43</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\object.c</PathWithFileName>
+      <FilenameWithoutPath>object.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>44</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\scheduler_comm.c</PathWithFileName>
+      <FilenameWithoutPath>scheduler_comm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>45</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\scheduler_up.c</PathWithFileName>
+      <FilenameWithoutPath>scheduler_up.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>46</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\thread.c</PathWithFileName>
+      <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>47</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\timer.c</PathWithFileName>
+      <FilenameWithoutPath>timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>klibc</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>48</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstring.c</PathWithFileName>
+      <FilenameWithoutPath>kstring.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>49</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kstdio.c</PathWithFileName>
+      <FilenameWithoutPath>kstdio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>50</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsnprintf_tiny.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsnprintf_tiny.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>51</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\kerrno.c</PathWithFileName>
+      <FilenameWithoutPath>kerrno.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>52</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\src\klibc\rt_vsscanf.c</PathWithFileName>
+      <FilenameWithoutPath>rt_vsscanf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>libcpu</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>53</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\libcpu\arm\common\div0.c</PathWithFileName>
+      <FilenameWithoutPath>div0.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>54</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\libcpu\arm\common\showmem.c</PathWithFileName>
+      <FilenameWithoutPath>showmem.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>55</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\libcpu\arm\cortex-m0\context_rvds.S</PathWithFileName>
+      <FilenameWithoutPath>context_rvds.S</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>56</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\libcpu\arm\cortex-m0\cpuport.c</PathWithFileName>
+      <FilenameWithoutPath>cpuport.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Libraries</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>57</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>58</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32_cm0plus_misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>59</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ledc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_ledc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>60</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_tm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>61</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_wdt.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>62</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_bftm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_bftm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>63</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_usart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>64</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_flash.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>65</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_ebi.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>66</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_ckcu.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>67</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_div.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_div.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>68</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_pwrcu.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>69</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_i2c.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>70</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_cmp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>71</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_pdma.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>72</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_can.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_can.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>73</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_crc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_crc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>74</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_rtc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>75</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_mctm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>76</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_adc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>77</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_15.c</PathWithFileName>
+      <FilenameWithoutPath>system_ht32f5xxxx_15.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>78</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_exti.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>79</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_rstcu.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>80</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_spi.c</PathWithFileName>
+      <FilenameWithoutPath>ht32f5xxxx_spi.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>

+ 2234 - 0
bsp/ht32/ht32f53252/project.uvprojx

@@ -0,0 +1,2234 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>rt-thread</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>HT32F53252</Device>
+          <Vendor>Holtek</Vendor>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
+          <Cpu>IRAM(0x20000000-0x20003FFF) IROM(0x00000000-0x0001FBFF) CLOCK(8000000) CPUTYPE("Cortex-M0+")</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile>"STARTUP\Holtek\HT32F5xxxx\startup_ht32f53242_52.s" ("Holtek HT32F5xxxx Startup Code")</StartupFile>
+          <FlashDriverDll>UL2CM3(-O142 -S0 -C0 -FO7 -FD20000000 -FC800 -FN2 -FF0HT32F -FS00 -FL01FC00 -FF1HT32F_OPT -FS11FF00000 -FL1400)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>HT32F5xxxx_01.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>SFD\Holtek\HT32F5xxxx\HT32F53242_52.SFR</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath>Holtek\HT32F5xxxx\</RegisterFilePath>
+          <DBRegisterFilePath>Holtek\HT32F5xxxx\</DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\build\keil\Obj\</OutputDirectory>
+          <OutputName>rt-thread</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>0</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\build\keil\List\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments></SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0+</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments></TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0+</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>0</Capability>
+            <DriverSelection>-1</DriverSelection>
+          </Flash1>
+          <bUseTDR>1</bUseTDR>
+          <Flash2>BIN\UL2CM3.DLL</Flash2>
+          <Flash3></Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0+"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>0</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x4000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1fc00</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1fc00</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x4000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>1</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>2</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls>--gnu</MiscControls>
+              <Define>__CLK_TCK=RT_TICK_PER_SECOND, USE_HT32_DRIVER, RT_USING_ARMLIBC, __STDC_LIMIT_MACROS, USE_HT32F53252_SK, USE_HT32F53242_52, USE_MEM_HT32F53252, __RTTHREAD__, RT_USING_LIBC</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\components\libc\posix\io\epoll;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\HT32_STD_5xxxx_FWLib\library\CMSIS\Include;..\..\..\components\drivers\phy;..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Include;..\..\..\components\drivers\include;.;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\libc\compilers\common\include;..\..\..\libcpu\arm\cortex-m0;..\..\..\components\finsh;board\inc;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\libcpu\arm\common;..\libraries\ht32_drivers;applications;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\smp_call;..\..\..\components\drivers\include;..\libraries\usbd_library\inc;..\..\..\components\libc\compilers\common\extension;..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\inc;..\..\..\include</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>USE_HT32_CHIP=28</Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>1</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x20000000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile></ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>Applications</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>applications\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Compiler</GroupName>
+          <Files>
+            <File>
+              <FileName>syscall_mem.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\armlibc\syscall_mem.c</FilePath>
+            </File>
+            <File>
+              <FileName>syscalls.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
+            </File>
+            <File>
+              <FileName>cctype.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\cctype.c</FilePath>
+            </File>
+            <File>
+              <FileName>cstdlib.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\cstdlib.c</FilePath>
+            </File>
+            <File>
+              <FileName>cstring.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\cstring.c</FilePath>
+            </File>
+            <File>
+              <FileName>ctime.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\ctime.c</FilePath>
+            </File>
+            <File>
+              <FileName>cunistd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\cunistd.c</FilePath>
+            </File>
+            <File>
+              <FileName>cwchar.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\libc\compilers\common\cwchar.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>DeviceDrivers</GroupName>
+          <Files>
+            <File>
+              <FileName>device.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\core\device.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>completion_comm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\completion_comm.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>completion_up.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\completion_up.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>condvar.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\condvar.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>dataqueue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\dataqueue.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>pipe.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\pipe.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>ringblk_buf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\ringblk_buf.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>ringbuffer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\ringbuffer.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>waitqueue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\waitqueue.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>workqueue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\ipc\workqueue.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>dev_pin.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\pin\dev_pin.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>dev_serial.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\drivers\serial\dev_serial.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_IPC_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Drivers</GroupName>
+          <Files>
+            <File>
+              <FileName>board.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>board\src\board.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32_msp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>board\src\ht32_msp.c</FilePath>
+            </File>
+            <File>
+              <FileName>startup_ht32f5xxxx_15.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\ARM\startup_ht32f5xxxx_15.s</FilePath>
+            </File>
+            <File>
+              <FileName>drv_common.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\ht32_drivers\drv_common.c</FilePath>
+            </File>
+            <File>
+              <FileName>drv_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\ht32_drivers\drv_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>drv_usart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\ht32_drivers\drv_usart.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Finsh</GroupName>
+          <Files>
+            <File>
+              <FileName>msh_parse.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\finsh\msh_parse.c</FilePath>
+            </File>
+            <File>
+              <FileName>cmd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\finsh\cmd.c</FilePath>
+            </File>
+            <File>
+              <FileName>msh.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\finsh\msh.c</FilePath>
+            </File>
+            <File>
+              <FileName>shell.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\components\finsh\shell.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Kernel</GroupName>
+          <Files>
+            <File>
+              <FileName>clock.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\clock.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>components.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\components.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>cpu_up.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\cpu_up.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>defunct.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\defunct.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>idle.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\idle.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\ipc.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>irq.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\irq.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>kservice.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\kservice.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>mem.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\mem.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>memheap.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\memheap.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>mempool.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\mempool.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>object.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\object.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>scheduler_comm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\scheduler_comm.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>scheduler_up.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\scheduler_up.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>thread.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\thread.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\timer.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>1</IncludeInBuild>
+                  <AlwaysBuild>0</AlwaysBuild>
+                  <GenerateAssemblyFile>0</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>0</AssembleAssemblyFile>
+                  <PublicsOnly>0</PublicsOnly>
+                  <StopOnExitCode>3</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls> </MiscControls>
+                      <Define>__RT_KERNEL_SOURCE__</Define>
+                      <Undefine> </Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>klibc</GroupName>
+          <Files>
+            <File>
+              <FileName>kstring.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstring.c</FilePath>
+            </File>
+            <File>
+              <FileName>kstdio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kstdio.c</FilePath>
+            </File>
+            <File>
+              <FileName>rt_vsnprintf_tiny.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsnprintf_tiny.c</FilePath>
+            </File>
+            <File>
+              <FileName>kerrno.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\kerrno.c</FilePath>
+            </File>
+            <File>
+              <FileName>rt_vsscanf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\src\klibc\rt_vsscanf.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>libcpu</GroupName>
+          <Files>
+            <File>
+              <FileName>div0.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\libcpu\arm\common\div0.c</FilePath>
+            </File>
+            <File>
+              <FileName>showmem.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\libcpu\arm\common\showmem.c</FilePath>
+            </File>
+            <File>
+              <FileName>context_rvds.S</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\libcpu\arm\cortex-m0\context_rvds.S</FilePath>
+            </File>
+            <File>
+              <FileName>cpuport.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\libcpu\arm\cortex-m0\cpuport.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Libraries</GroupName>
+          <Files>
+            <File>
+              <FileName>ht32f5xxxx_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32_cm0plus_misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32_cm0plus_misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_ledc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ledc.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_tm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_tm.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_wdt.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_wdt.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_bftm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_bftm.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_usart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_usart.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_flash.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_flash.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_ebi.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ebi.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_ckcu.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_ckcu.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_div.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_div.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_pwrcu.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pwrcu.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_i2c.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_i2c.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_cmp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_cmp.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_pdma.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_pdma.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_can.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_can.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_crc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_crc.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_rtc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rtc.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_mctm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_mctm.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_adc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_adc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system_ht32f5xxxx_15.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\Device\Holtek\HT32F5xxxx\Source\system_ht32f5xxxx_15.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_exti.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_exti.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_rstcu.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_rstcu.c</FilePath>
+            </File>
+            <File>
+              <FileName>ht32f5xxxx_spi.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\libraries\HT32_STD_5xxxx_FWLib\library\HT32F5xxxx_Driver\src\ht32f5xxxx_spi.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>

+ 394 - 0
bsp/ht32/ht32f53252/rtconfig.h

@@ -0,0 +1,394 @@
+#ifndef RT_CONFIG_H__
+#define RT_CONFIG_H__
+
+/* RT-Thread Kernel */
+
+/* klibc options */
+
+/* rt_vsnprintf options */
+
+/* end of rt_vsnprintf options */
+
+/* rt_vsscanf options */
+
+/* end of rt_vsscanf options */
+
+/* rt_memset options */
+
+/* end of rt_memset options */
+
+/* rt_memcpy options */
+
+/* end of rt_memcpy options */
+
+/* rt_memmove options */
+
+/* end of rt_memmove options */
+
+/* rt_memcmp options */
+
+/* end of rt_memcmp options */
+
+/* rt_strstr options */
+
+/* end of rt_strstr options */
+
+/* rt_strcasecmp options */
+
+/* end of rt_strcasecmp options */
+
+/* rt_strncpy options */
+
+/* end of rt_strncpy options */
+
+/* rt_strcpy options */
+
+/* end of rt_strcpy options */
+
+/* rt_strncmp options */
+
+/* end of rt_strncmp options */
+
+/* rt_strcmp options */
+
+/* end of rt_strcmp options */
+
+/* rt_strlen options */
+
+/* end of rt_strlen options */
+
+/* rt_strnlen options */
+
+/* end of rt_strnlen options */
+/* end of klibc options */
+#define RT_NAME_MAX 8
+#define RT_CPUS_NR 1
+#define RT_ALIGN_SIZE 4
+#define RT_THREAD_PRIORITY_32
+#define RT_THREAD_PRIORITY_MAX 32
+#define RT_TICK_PER_SECOND 1000
+#define RT_USING_HOOK
+#define RT_HOOK_USING_FUNC_PTR
+#define RT_USING_IDLE_HOOK
+#define RT_IDLE_HOOK_LIST_SIZE 4
+#define IDLE_THREAD_STACK_SIZE 512
+
+/* kservice options */
+
+/* end of kservice options */
+
+/* Inter-Thread communication */
+
+#define RT_USING_SEMAPHORE
+#define RT_USING_MUTEX
+#define RT_USING_EVENT
+#define RT_USING_MAILBOX
+#define RT_USING_MESSAGEQUEUE
+/* end of Inter-Thread communication */
+
+/* Memory Management */
+
+#define RT_USING_MEMPOOL
+#define RT_USING_SMALL_MEM
+#define RT_USING_MEMHEAP
+#define RT_MEMHEAP_FAST_MODE
+#define RT_USING_SMALL_MEM_AS_HEAP
+#define RT_USING_HEAP
+/* end of Memory Management */
+#define RT_USING_DEVICE
+#define RT_USING_CONSOLE
+#define RT_CONSOLEBUF_SIZE 128
+#define RT_CONSOLE_DEVICE_NAME "usart1"
+#define RT_VER_NUM 0x50200
+#define RT_BACKTRACE_LEVEL_MAX_NR 32
+/* end of RT-Thread Kernel */
+#define ARCH_ARM
+#define ARCH_ARM_CORTEX_M
+#define ARCH_ARM_CORTEX_M0
+
+/* RT-Thread Components */
+
+#define RT_USING_COMPONENTS_INIT
+#define RT_USING_USER_MAIN
+#define RT_MAIN_THREAD_STACK_SIZE 1024
+#define RT_MAIN_THREAD_PRIORITY 10
+#define RT_USING_MSH
+#define RT_USING_FINSH
+#define FINSH_USING_MSH
+#define FINSH_THREAD_NAME "tshell"
+#define FINSH_THREAD_PRIORITY 20
+#define FINSH_THREAD_STACK_SIZE 1024
+#define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 5
+#define FINSH_USING_SYMTAB
+#define FINSH_CMD_SIZE 32
+#define MSH_USING_BUILT_IN_COMMANDS
+#define FINSH_USING_DESCRIPTION
+#define FINSH_ARG_MAX 10
+#define FINSH_USING_OPTION_COMPLETION
+
+/* DFS: device virtual file system */
+
+/* end of DFS: device virtual file system */
+
+/* Device Drivers */
+
+#define RT_USING_DEVICE_IPC
+#define RT_UNAMED_PIPE_NUMBER 64
+#define RT_USING_SERIAL
+#define RT_USING_SERIAL_V1
+#define RT_SERIAL_RB_BUFSZ 64
+#define RT_USING_PIN
+/* end of Device Drivers */
+
+/* C/C++ and POSIX layer */
+
+/* ISO-ANSI C layer */
+
+/* Timezone and Daylight Saving Time */
+
+#define RT_LIBC_USING_LIGHT_TZ_DST
+#define RT_LIBC_TZ_DEFAULT_HOUR 8
+#define RT_LIBC_TZ_DEFAULT_MIN 0
+#define RT_LIBC_TZ_DEFAULT_SEC 0
+/* end of Timezone and Daylight Saving Time */
+/* end of ISO-ANSI C layer */
+
+/* POSIX (Portable Operating System Interface) layer */
+
+
+/* Interprocess Communication (IPC) */
+
+
+/* Socket is in the 'Network' category */
+
+/* end of Interprocess Communication (IPC) */
+/* end of POSIX (Portable Operating System Interface) layer */
+/* end of C/C++ and POSIX layer */
+
+/* Network */
+
+/* end of Network */
+
+/* Memory protection */
+
+/* end of Memory protection */
+
+/* Utilities */
+
+/* end of Utilities */
+
+/* Using USB legacy version */
+
+/* end of Using USB legacy version */
+/* end of RT-Thread Components */
+
+/* RT-Thread Utestcases */
+
+/* end of RT-Thread Utestcases */
+
+/* RT-Thread online packages */
+
+/* IoT - internet of things */
+
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+/* end of Marvell WiFi */
+
+/* Wiced WiFi */
+
+/* end of Wiced WiFi */
+
+/* CYW43012 WiFi */
+
+/* end of CYW43012 WiFi */
+
+/* BL808 WiFi */
+
+/* end of BL808 WiFi */
+
+/* CYW43439 WiFi */
+
+/* end of CYW43439 WiFi */
+/* end of Wi-Fi */
+
+/* IoT Cloud */
+
+/* end of IoT Cloud */
+/* end of IoT - internet of things */
+
+/* security packages */
+
+/* end of security packages */
+
+/* language packages */
+
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+/* XML: Extensible Markup Language */
+
+/* end of XML: Extensible Markup Language */
+/* end of language packages */
+
+/* multimedia packages */
+
+/* LVGL: powerful and easy-to-use embedded GUI library */
+
+/* end of LVGL: powerful and easy-to-use embedded GUI library */
+
+/* u8g2: a monochrome graphic library */
+
+/* end of u8g2: a monochrome graphic library */
+/* end of multimedia packages */
+
+/* tools packages */
+
+/* end of tools packages */
+
+/* system packages */
+
+/* enhanced kernel services */
+
+/* end of enhanced kernel services */
+
+/* acceleration: Assembly language or algorithmic acceleration packages */
+
+/* end of acceleration: Assembly language or algorithmic acceleration packages */
+
+/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
+
+/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
+
+/* Micrium: Micrium software products porting for RT-Thread */
+
+/* end of Micrium: Micrium software products porting for RT-Thread */
+/* end of system packages */
+
+/* peripheral libraries and drivers */
+
+/* HAL & SDK Drivers */
+
+/* STM32 HAL & SDK Drivers */
+
+/* end of STM32 HAL & SDK Drivers */
+
+/* Infineon HAL Packages */
+
+/* end of Infineon HAL Packages */
+
+/* Kendryte SDK */
+
+/* end of Kendryte SDK */
+/* end of HAL & SDK Drivers */
+
+/* sensors drivers */
+
+/* end of sensors drivers */
+
+/* touch drivers */
+
+/* end of touch drivers */
+/* end of peripheral libraries and drivers */
+
+/* AI packages */
+
+/* end of AI packages */
+
+/* Signal Processing and Control Algorithm Packages */
+
+/* end of Signal Processing and Control Algorithm Packages */
+
+/* miscellaneous packages */
+
+/* project laboratory */
+
+/* end of project laboratory */
+
+/* samples: kernel and components samples */
+
+/* end of samples: kernel and components samples */
+
+/* entertainment: terminal games and other interesting software packages */
+
+/* end of entertainment: terminal games and other interesting software packages */
+/* end of miscellaneous packages */
+
+/* Arduino libraries */
+
+
+/* Projects and Demos */
+
+/* end of Projects and Demos */
+
+/* Sensors */
+
+/* end of Sensors */
+
+/* Display */
+
+/* end of Display */
+
+/* Timing */
+
+/* end of Timing */
+
+/* Data Processing */
+
+/* end of Data Processing */
+
+/* Data Storage */
+
+/* Communication */
+
+/* end of Communication */
+
+/* Device Control */
+
+/* end of Device Control */
+
+/* Other */
+
+/* end of Other */
+
+/* Signal IO */
+
+/* end of Signal IO */
+
+/* Uncategorized */
+
+/* end of Arduino libraries */
+/* end of RT-Thread online packages */
+#define SOC_FAMILY_HT32
+#define SOC_SERIES_HT32F5
+
+/* Hardware Drivers Config */
+
+/* Chip Configuration */
+
+#define SOC_KERNEL
+#define CORTEX_M0
+#define SOC_HT32F53252
+/* end of Chip Configuration */
+
+/* Onboard Peripheral Drivers */
+
+/* end of Onboard Peripheral Drivers */
+
+/* On-chip Peripheral Drivers */
+
+#define BSP_USING_GPIO
+#define BSP_USING_UART
+#define BSP_USING_USART1
+#define BSP_USING_USART1_NAME "usart1"
+/* end of On-chip Peripheral Drivers */
+
+/* Board extended module Drivers */
+
+/* end of Hardware Drivers Config */
+
+#endif

+ 152 - 0
bsp/ht32/ht32f53252/rtconfig.py

@@ -0,0 +1,152 @@
+import os
+
+# toolchains options
+ARCH='arm'
+CPU='cortex-m0'
+CROSS_TOOL='keil'
+
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
+if os.getenv('RTT_CC'):
+    CROSS_TOOL = os.getenv('RTT_CC')
+if os.getenv('RTT_ROOT'):
+    RTT_ROOT = os.getenv('RTT_ROOT')
+
+# cross_tool provides the cross compiler
+# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
+if  CROSS_TOOL == 'gcc':
+    PLATFORM    = 'gcc'
+    EXEC_PATH   = r'C:\Users\XXYYZZ'
+elif CROSS_TOOL == 'keil':
+    PLATFORM    = 'armcc'
+#    EXEC_PATH   = r'D:\keil5\keil_v532\UV4'
+    EXEC_PATH   = r'C:/Keil_v5'
+elif CROSS_TOOL == 'iar':
+    PLATFORM    = 'iar'
+    EXEC_PATH   = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0'
+
+if os.getenv('RTT_EXEC_PATH'):
+    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
+
+BUILD = 'debug'
+
+if PLATFORM == 'gcc':
+    # toolchains
+    PREFIX = 'arm-none-eabi-'
+    CC = PREFIX + 'gcc'
+    AS = PREFIX + 'gcc'
+    AR = PREFIX + 'ar'
+    CXX = PREFIX + 'g++'
+    LINK = PREFIX + 'gcc'
+    TARGET_EXT = 'elf'
+    SIZE = PREFIX + 'size'
+    OBJDUMP = PREFIX + 'objdump'
+    OBJCPY = PREFIX + 'objcopy'
+
+    DEVICE = ' -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections'
+    CFLAGS = DEVICE + ' -Dgcc'
+    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
+    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds'
+    CFLAGS += ' -D USE_HT32F53242_52'
+    CPATH = ''
+    LPATH = ''
+
+    if BUILD == 'debug':
+        CFLAGS += ' -O0 -gdwarf-2 -g'
+        AFLAGS += ' -gdwarf-2'
+    else:
+        CFLAGS += ' -O2'
+
+    CXXFLAGS = CFLAGS 
+
+    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
+
+elif PLATFORM == 'armcc':
+    # toolchains
+    CC = 'armcc'
+    CXX = 'armcc'
+    AS = 'armasm'
+    AR = 'armar'
+    LINK = 'armlink'
+    TARGET_EXT = 'axf'
+
+    DEVICE = ' --cpu Cortex-M0 '
+    CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99'
+    AFLAGS = DEVICE + ' --apcs=interwork '
+    LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict'
+    CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include'
+    LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib'
+
+    CFLAGS += ' -D__MICROLIB '
+    AFLAGS += ' --pd "__MICROLIB SETA 1" '
+    LFLAGS += ' --library_type=microlib '
+    EXEC_PATH += '/ARM/ARMCC/bin/'
+
+    if BUILD == 'debug':
+        CFLAGS += ' -g -O0'
+        AFLAGS += ' -g'
+    else:
+        CFLAGS += ' -O2'
+
+    CXXFLAGS = CFLAGS 
+    CFLAGS += ' -std=c99'
+
+    POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
+
+elif PLATFORM == 'iar':
+    # toolchains
+    CC = 'iccarm'
+    CXX = 'iccarm'
+    AS = 'iasmarm'
+    AR = 'iarchive'
+    LINK = 'ilinkarm'
+    TARGET_EXT = 'out'
+
+    DEVICE = '-Dewarm'
+
+    CFLAGS = DEVICE
+    CFLAGS += ' --diag_suppress Pa050'
+    CFLAGS += ' --no_cse'
+    CFLAGS += ' --no_unroll'
+    CFLAGS += ' --no_inline'
+    CFLAGS += ' --no_code_motion'
+    CFLAGS += ' --no_tbaa'
+    CFLAGS += ' --no_clustering'
+    CFLAGS += ' --no_scheduling'
+    CFLAGS += ' --endian=little'
+    CFLAGS += ' --cpu=Cortex-M0'
+    CFLAGS += ' -e'
+    CFLAGS += ' --fpu=None'
+    CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
+    CFLAGS += ' --silent'
+
+    AFLAGS = DEVICE
+    AFLAGS += ' -s+'
+    AFLAGS += ' -w+'
+    AFLAGS += ' -r'
+    AFLAGS += ' --cpu Cortex-M0'
+    AFLAGS += ' --fpu None'
+    AFLAGS += ' -S'
+
+    if BUILD == 'debug':
+        CFLAGS += ' --debug'
+        CFLAGS += ' -On'
+    else:
+        CFLAGS += ' -Oh'
+
+    LFLAGS = ' --config "board/linker_scripts/link.icf"'
+    LFLAGS += ' --entry __iar_program_start'
+    
+    CXXFLAGS = CFLAGS
+
+    EXEC_PATH = EXEC_PATH + '/arm/bin/'
+    POST_ACTION = 'ielftool --bin $TARGET rtthread.bin'
+
+def dist_handle(BSP_ROOT, dist_dir):
+    import sys
+    cwd_path = os.getcwd()
+    sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools'))
+    from sdk_dist import dist_do_building
+    dist_do_building(BSP_ROOT, dist_dir)   
+

+ 179 - 0
bsp/ht32/ht32f53252/template.uvoptx

@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>rt-thread</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>8000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\build\keil\List\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>255</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <nTsel>2</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile></tIfile>
+        <pMon>BIN\CMSIS_AGDI.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN2 -FF0HT32F -FS00 -FL0100000 -FF1HT32F_OPT -FS11FF00000 -FL11000 -FP0($$Device:HT32F53252$ARM\Flash\HT32F.FLM) -FP1($$Device:HT32F53252$ARM\Flash\HT32F_OPT.FLM))</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>CMSIS_AGDI</Key>
+          <Name>-X"Any" -UAny -O206 -S8 -C0 -P00 -TO18 -TC10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN2 -FF0HT32F -FS00 -FL01FC00 -FF1HT32F_OPT -FS11FF00000 -FL1400</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>1</periodic>
+        <aLwin>0</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>0</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>Source Group 1</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+  </Group>
+
+</ProjectOpt>

+ 391 - 0
bsp/ht32/ht32f53252/template.uvprojx

@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>rt-thread</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>HT32F53252</Device>
+          <Vendor>Holtek</Vendor>
+          <PackID>Holtek.HT32_DFP.1.0.55</PackID>
+          <PackURL>https://mcu.holtek.com.tw/pack</PackURL>
+          <Cpu>IRAM(0x20000000-0x20003FFF) IROM(0x00000000-0x0001FBFF) CLOCK(8000000) CPUTYPE("Cortex-M0+")</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile>"STARTUP\Holtek\HT32F5xxxx\startup_ht32f53242_52.s" ("Holtek HT32F5xxxx Startup Code")</StartupFile>
+          <FlashDriverDll>UL2CM3(-O142 -S0 -C0 -FO7 -FD20000000 -FC800 -FN2 -FF0HT32F -FS00 -FL01FC00 -FF1HT32F_OPT -FS11FF00000 -FL1400)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>HT32F5xxxx_01.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>SFD\Holtek\HT32F5xxxx\HT32F53242_52.SFR</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath>Holtek\HT32F5xxxx\</RegisterFilePath>
+          <DBRegisterFilePath>Holtek\HT32F5xxxx\</DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\build\keil\Obj\</OutputDirectory>
+          <OutputName>rt-thread</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>0</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\build\keil\List\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments></SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0+</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments></TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0+</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>0</Capability>
+            <DriverSelection>-1</DriverSelection>
+          </Flash1>
+          <bUseTDR>1</bUseTDR>
+          <Flash2>BIN\UL2CM3.DLL</Flash2>
+          <Flash3></Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0+"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>0</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x4000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1fc00</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1fc00</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x4000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>1</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>2</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls>--gnu</MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>USE_HT32_CHIP=28</Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>1</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x20000000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile></ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>Source Group 1</GroupName>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>

+ 1 - 0
bsp/ht32/libraries/.ignore_format.yml

@@ -5,3 +5,4 @@
 dir_path:
 - HT32_STD_1xxxx_FWLib
 - HT32_STD_5xxxx_FWLib
+- usbd_library

+ 82 - 5
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/Release_Notes.txt

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    Release_Notes.txt
- * @version V1.4.1
- * @date    2023-10-31
+ * @version V1.5.1
+ * @date    2023-11-08
  * @brief   The Release notes of HT32 Firmware Library.
  *************************************************************************************************************
  * @attention
@@ -34,6 +34,83 @@
 //   HT32F12365, HT32F12366
 //   HT32F22366
 
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_1xxxx_FWLib_V1.5.1_3190                                                                         */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-11-08
+
+  Main Changes
+  + Add new examples:
+    - "Tips/Checksum_CRC16"
+    - "Tips/StackOnTop"
+  + Add HT32 Stack Usage Analysis feature.
+    - Modify "ht32f1xxxx_conf.h", add "HTCFG_STACK_USAGE_ANALYSIS" setting for enabling HT32 Stack Usage
+      Analysis.
+    - Update project templates and "ht32_cm3_misc.c/.h", add "StackUsageAnalysisInit()" function to
+      initialize stack.
+    - Update project files, add HT32 Stack Usage Analysis component viewer.
+    - Update and sync "startup_ht32f1xxxx_nn.s" for the "Stack On Top" and "Stack Usage Analysis" feature."
+    - Add "USE_LIBCFG_RAM_SIZE" define in Keil project files for the "Stack On Top" feature.
+  + Rename WDT parameters.
+    - Old Name                          | New Name
+    - --------------------------------- | ----------------------------
+    - "MODE0_WDTSHLT_BOTH"              | "WDT_SLEEP_HALT_NONE"
+    - "MODE0_WDTSHLT_SLEEP"             | "WDT_SLEEP_HALT_DEEPSLEEP"
+    - "MODE0_WDTSHLT_SLEEP"             | "WDT_SLEEP_HALT_ALL"
+  + Fix "AES_SetKeyTable()" and "AES_SetVectorTable()" Key and Vector index errors, which cause incorrect AES
+    encryption and decryption.
+  + Update example, add "__ALIGN4" to variables and enforced type conversion for 4 bytes read/write API calls.
+    - "AES/CBC"
+    - "AES/CTR"
+    - "AES/ECB"
+  + Modify "ht32f5xxxx_01.h", fix the MCTM alias mismatch.
+    - "MCTMn_IRQHandler" alias from "MCTM0_G_IRQHandler" to "MCTM0_UP_IRQHandler"
+  + Update USB example, add the process of detecting USB bus status before USBDCore_LowPower().
+    - "CKCU/HSI_AutoTrim_By_USB"
+    - "USBD/*"
+  + Improve the thread-safe capability of "utilities/common/ring_buffer.c".
+  + Modify "ht32f1xxxx_01.h" to add alignment and packing attributes for ARM compiler versions, with GCC fallback.
+  + Update "ht32f1xxxx_rtc.c", modify the RTC_LSECmd() related flow.
+  + Modify "WDT/Auto_Enable" example to change the mechanism of the example.
+  + Update "ht32f12366_sk.h" to share EBI_BL pin with LED3.
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Update project related file and setting.
+  + Update CKCU API. Enhanced program stability with robustness settings for parameter "PCLKPrescaler"
+    in "CKCU_SetPeripPrescaler(..., CKCU_APBCLKPRE_TypeDef PCLKPrescaler)".
+  + Modify "void FLASH_SetRemappingMode(FLASH_Vector FLASH_BOOT_x);". Changed parameter name from
+    "RemapMode" to "FLASH_BOOT_x".
+  + Update "SPI_DUALCmd()" and "SPI_SoftwareSELCmd()" make sure the SPI Bus is not busy
+    before changing the settings.
+  + Modify "ht32_dependency.h",to change the preprocessors for dependency check.
+  + Update the following middleware.
+    "utilities/middleware/eeprom_emulation.c"
+    "utilities/middleware/i2c_master.c"
+    "utilities/middleware/i2c_master.h"
+    "utilities/middleware/spi_module.c"
+    "utilities/middleware/spi_module.h"
+    "utilities/middleware/spi_module_config_templet.h"
+    "utilities/middleware/uart_module.c"
+    "utilities/middleware/uart_module.h"
+  + Update AES examples.
+    - Change the key, IV, and plain text from hex array to string, making the result easier to compare with
+      online tools.
+    - Add expected cipher text and compare it with the MCU's H/W AES result as an error-proofing mechanism."
+  + Update the following readme file.
+    - "CKCU/CKCU_HSI_AutoTrim_By_USB"
+    - "CKCU/CKCU_HSI_AutoTrim_By_LSE"
+    - "USBD/*"
+  + Modify "afterbuild.bat" to add logic to use ARMCC or ARMCLANG fromelf tool based on available toolchain.
+  + Add "_ProjectConfig.ini" in the "CKCU/HSI_AutoTrim_By_LSE" example.
+  + Update "project_template/Script" for improving script mechanism.
+    - "Script/_CreateProjectConfScript.bat"
+    - "Script/_CreateProjectScript.bat"
+    - "Script/_ht32_ic_name.ini"
+  + Update e-Link32 Pro/Lite Command line tool as "V1.20" ("utilities/elink32pro/eLink32pro.exe").
+ + Change path of the "Holtek.HT32_DFP.latest.pack".
+
+
 /*----------------------------------------------------------------------------------------------------------*/
 /* HT32_STD_1xxxx_FWLib_V1.4.1_2982                                                                         */
 /*----------------------------------------------------------------------------------------------------------*/
@@ -45,9 +122,9 @@
   + Modify examples below, add volatile qualifiers on some variables (in the for loop usage)
     to fix the Arm Compiler Version 6 optimization issue.
     ("u32" to "vu32", unsigned int to volatile unsigned int).
-    - “PWRCU/PowerDown_WAKEUPPin”
-    - “PWRCU/PowerDown_RTC”
-    - “TM/PWM”
+    - "PWRCU/PowerDown_WAKEUPPin"
+    - "PWRCU/PowerDown_RTC"
+    - "TM/PWM"
   + Modify examples below, use separate "if" statements instead of "if-else" to avoid double-entry ISR.
     - "PWRCU/DeepSleepMode1"
     - "PWRCU/DeepSleepMode2"

+ 1 - 27
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/SConscript

@@ -2,37 +2,11 @@ import os
 import sys
 import rtconfig
 from building import *
-
-def get_source(ic_model, file_path, system_path, base_path):
-    source_path = []
-    files_list = []
-    readafter = 0
-    if not os.path.isfile(file_path):
-        return
-
-    with open(file_path, 'r') as file:
-        # content = file.read()
-        for line in file:
-            if readafter == 2 and line.find('>') != -1:
-                break
-            if readafter == 2:
-                files_list.append(line.strip())
-            if line.find(ic_model) != -1:
-                readafter = 1
-            if readafter == 1 and line.find('<') != -1:
-                readafter = 2
-    for line in files_list:
-        if line.find('system') != -1:
-            source_path.append(os.path.join(system_path, line.strip()))
-        else:
-            source_path.append(os.path.join(base_path, line.strip()))
-    return source_path
-
 Import('rtconfig')
 
 tools_path = os.path.normpath(os.getcwd() + '../../..' + '/tools')
 sys.path.append(tools_path)
-
+from sdk_dist import get_source
 
 source_file_path = os.path.join(os.getcwd(), 'Source_file')
 base_path = 'library/HT32F1xxxx_Driver/src/'

+ 20 - 15
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Include/ht32f1xxxx_01.h

@@ -1,8 +1,8 @@
 /***************************************************************************//**
  * @file    ht32f1xxxx_01.h
  * @brief   CMSIS Cortex-M3 Device Peripheral Access Layer Header File
- * @version $Rev:: 2914         $
- * @date    $Date:: 2023-05-18 #$
+ * @version $Rev:: 3097         $
+ * @date    $Date:: 2024-06-20 #$
  *
  * @note
  * Copyright (C) Holtek Semiconductor Inc. All rights reserved.
@@ -156,14 +156,14 @@ typedef enum IRQn
   #endif
   ADC0_IRQn               = 25,     /*!< ADC Interrupt                                                      */
   #if !defined(USE_HT32F12364)
-  MCTM0BRK_IRQn           = 27,     /*!< MCTM0 BRK interrupt                                                */
-  MCTM0UP_IRQn            = 28,     /*!< MCTM0 UP interrupt                                                 */
-  MCTM0TR_IRQn            = 29,     /*!< MCTM0 TR interrupt                                                 */
-  MCTM0CC_IRQn            = 30,     /*!< MCTM0 CC interrupt                                                 */
-  MCTM1BRK_IRQn           = 31,     /*!< MCTM1 BRK interrupt                                                */
-  MCTM1UP_IRQn            = 32,     /*!< MCTM1 UP interrupt                                                 */
-  MCTM1TR_IRQn            = 33,     /*!< MCTM1 TR interrupt                                                 */
-  MCTM1CC_IRQn            = 34,     /*!< MCTM1 CC interrupt                                                 */
+  MCTM0_BRK_IRQn          = 27,     /*!< MCTM0 BRK interrupt                                                */
+  MCTM0_UP_IRQn           = 28,     /*!< MCTM0 UP interrupt                                                 */
+  MCTM0_TR_IRQn           = 29,     /*!< MCTM0 TR interrupt                                                 */
+  MCTM0_CC_IRQn           = 30,     /*!< MCTM0 CC interrupt                                                 */
+  MCTM1_BRK_IRQn          = 31,     /*!< MCTM1 BRK interrupt                                                */
+  MCTM1_UP_IRQn           = 32,     /*!< MCTM1 UP interrupt                                                 */
+  MCTM1_TR_IRQn           = 33,     /*!< MCTM1 TR interrupt                                                 */
+  MCTM1_CC_IRQn           = 34,     /*!< MCTM1 CC interrupt                                                 */
   #endif
   GPTM0_IRQn              = 35,     /*!< General-Purpose Timer0 Interrupt                                   */
   #if !defined(USE_HT32F12364)
@@ -223,10 +223,10 @@ typedef enum IRQn
   #endif
 } IRQn_Type;
 
-#define MCTM0_IRQn               MCTM0UP_IRQn
-#define MCTM0_IRQHandler         MCTM0UP_IRQHandler
-#define MCTM1_IRQn               MCTM1UP_IRQn
-#define MCTM1_IRQHandler         MCTM1UP_IRQHandler
+#define MCTM0_IRQn               MCTM0_UP_IRQn
+#define MCTM0_IRQHandler         MCTM0_UP_IRQHandler
+#define MCTM1_IRQn               MCTM1_UP_IRQn
+#define MCTM1_IRQHandler         MCTM1_UP_IRQHandler
 
 
 /**
@@ -303,13 +303,18 @@ typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
 
 #if defined (__CC_ARM)
   #define __ALIGN4 __align(4)
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
+  #define __ALIGN4  __attribute__((aligned(4)))
 #elif defined (__ICCARM__)
   #define __ALIGN4 _Pragma("data_alignment = 4")
 #elif defined (__GNUC__)
   #define __ALIGN4  __attribute__((aligned(4)))
 #endif
 
-#if defined (__GNUC__)
+#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
+  #define __PACKED_H
+  #define __PACKED_F __attribute__ ((packed))
+#elif defined (__GNUC__)
   #define __PACKED_H
   #define __PACKED_F __attribute__ ((packed))
 #elif defined (__ICCARM__) || (__CC_ARM)

+ 50 - 30
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12345.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_01.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -49,13 +49,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -125,14 +136,14 @@ __Vectors
                     DCD  COMP_IRQHandler                    ;  24, 40, 0x0A0,
                     DCD  ADC_IRQHandler                     ;  25, 41, 0x0A4,
                     DCD  _RESERVED                          ;  26, 42, 0x0A8,
-                    DCD  MCTM0BRK_IRQHandler                ;  27, 43, 0x0AC,
-                    DCD  MCTM0UP_IRQHandler                 ;  28, 44, 0x0B0,
-                    DCD  MCTM0TR_IRQHandler                 ;  29, 45, 0x0B4,
-                    DCD  MCTM0CC_IRQHandler                 ;  30, 46, 0x0B8,
-                    DCD  MCTM1BRK_IRQHandler                ;  31, 47, 0x0BC,
-                    DCD  MCTM1UP_IRQHandler                 ;  32, 48, 0x0C0,
-                    DCD  MCTM1TR_IRQHandler                 ;  33, 49, 0x0C4,
-                    DCD  MCTM1CC_IRQHandler                 ;  34, 50, 0x0C8,
+                    DCD  MCTM0_BRK_IRQHandler               ;  27, 43, 0x0AC,
+                    DCD  MCTM0_UP_IRQHandler                ;  28, 44, 0x0B0,
+                    DCD  MCTM0_TR_IRQHandler                ;  29, 45, 0x0B4,
+                    DCD  MCTM0_CC_IRQHandler                ;  30, 46, 0x0B8,
+                    DCD  MCTM1_BRK_IRQHandler               ;  31, 47, 0x0BC,
+                    DCD  MCTM1_UP_IRQHandler                ;  32, 48, 0x0C0,
+                    DCD  MCTM1_TR_IRQHandler                ;  33, 49, 0x0C4,
+                    DCD  MCTM1_CC_IRQHandler                ;  34, 50, 0x0C8,
                     DCD  GPTM0_IRQHandler                   ;  35, 51, 0x0CC,
                     DCD  GPTM1_IRQHandler                   ;  36, 52, 0x0D0,
                     DCD  _RESERVED                          ;  37, 53, 0x0D4,
@@ -330,14 +341,14 @@ Default_Handler     PROC
                     EXPORT  EXTI15_IRQHandler               [WEAK]
                     EXPORT  COMP_IRQHandler                 [WEAK]
                     EXPORT  ADC_IRQHandler                  [WEAK]
-                    EXPORT  MCTM0BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM0UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM0TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM0CC_IRQHandler              [WEAK]
-                    EXPORT  MCTM1BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM1UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM1TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM1CC_IRQHandler              [WEAK]
+                    EXPORT  MCTM0_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM0_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_CC_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM1_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_CC_IRQHandler             [WEAK]
                     EXPORT  GPTM0_IRQHandler                [WEAK]
                     EXPORT  GPTM1_IRQHandler                [WEAK]
                     EXPORT  BFTM0_IRQHandler                [WEAK]
@@ -395,14 +406,14 @@ EXTI14_IRQHandler
 EXTI15_IRQHandler
 COMP_IRQHandler
 ADC_IRQHandler
-MCTM0BRK_IRQHandler
-MCTM0UP_IRQHandler
-MCTM0TR_IRQHandler
-MCTM0CC_IRQHandler
-MCTM1BRK_IRQHandler
-MCTM1UP_IRQHandler
-MCTM1TR_IRQHandler
-MCTM1CC_IRQHandler
+MCTM0_BRK_IRQHandler
+MCTM0_UP_IRQHandler
+MCTM0_TR_IRQHandler
+MCTM0_CC_IRQHandler
+MCTM1_BRK_IRQHandler
+MCTM1_UP_IRQHandler
+MCTM1_TR_IRQHandler
+MCTM1_CC_IRQHandler
 GPTM0_IRQHandler
 GPTM1_IRQHandler
 BFTM0_IRQHandler
@@ -442,10 +453,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -456,14 +468,22 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 
                     ENDIF
 
-                    END
+                    END

+ 25 - 5
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12364.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_03.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -42,13 +42,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -366,10 +377,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -380,11 +392,19 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 50 - 30
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f12365_66.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_01.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -49,13 +49,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -125,14 +136,14 @@ __Vectors
                     DCD  COMP_IRQHandler                    ;  24, 40, 0x0A0,
                     DCD  ADC_IRQHandler                     ;  25, 41, 0x0A4,
                     DCD  _RESERVED                          ;  26, 42, 0x0A8,
-                    DCD  MCTM0BRK_IRQHandler                ;  27, 43, 0x0AC,
-                    DCD  MCTM0UP_IRQHandler                 ;  28, 44, 0x0B0,
-                    DCD  MCTM0TR_IRQHandler                 ;  29, 45, 0x0B4,
-                    DCD  MCTM0CC_IRQHandler                 ;  30, 46, 0x0B8,
-                    DCD  MCTM1BRK_IRQHandler                ;  31, 47, 0x0BC,
-                    DCD  MCTM1UP_IRQHandler                 ;  32, 48, 0x0C0,
-                    DCD  MCTM1TR_IRQHandler                 ;  33, 49, 0x0C4,
-                    DCD  MCTM1CC_IRQHandler                 ;  34, 50, 0x0C8,
+                    DCD  MCTM0_BRK_IRQHandler               ;  27, 43, 0x0AC,
+                    DCD  MCTM0_UP_IRQHandler                ;  28, 44, 0x0B0,
+                    DCD  MCTM0_TR_IRQHandler                ;  29, 45, 0x0B4,
+                    DCD  MCTM0_CC_IRQHandler                ;  30, 46, 0x0B8,
+                    DCD  MCTM1_BRK_IRQHandler               ;  31, 47, 0x0BC,
+                    DCD  MCTM1_UP_IRQHandler                ;  32, 48, 0x0C0,
+                    DCD  MCTM1_TR_IRQHandler                ;  33, 49, 0x0C4,
+                    DCD  MCTM1_CC_IRQHandler                ;  34, 50, 0x0C8,
                     DCD  GPTM0_IRQHandler                   ;  35, 51, 0x0CC,
                     DCD  GPTM1_IRQHandler                   ;  36, 52, 0x0D0,
                     DCD  _RESERVED                          ;  37, 53, 0x0D4,
@@ -330,14 +341,14 @@ Default_Handler     PROC
                     EXPORT  EXTI15_IRQHandler               [WEAK]
                     EXPORT  COMP_IRQHandler                 [WEAK]
                     EXPORT  ADC_IRQHandler                  [WEAK]
-                    EXPORT  MCTM0BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM0UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM0TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM0CC_IRQHandler              [WEAK]
-                    EXPORT  MCTM1BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM1UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM1TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM1CC_IRQHandler              [WEAK]
+                    EXPORT  MCTM0_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM0_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_CC_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM1_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_CC_IRQHandler             [WEAK]
                     EXPORT  GPTM0_IRQHandler                [WEAK]
                     EXPORT  GPTM1_IRQHandler                [WEAK]
                     EXPORT  BFTM0_IRQHandler                [WEAK]
@@ -395,14 +406,14 @@ EXTI14_IRQHandler
 EXTI15_IRQHandler
 COMP_IRQHandler
 ADC_IRQHandler
-MCTM0BRK_IRQHandler
-MCTM0UP_IRQHandler
-MCTM0TR_IRQHandler
-MCTM0CC_IRQHandler
-MCTM1BRK_IRQHandler
-MCTM1UP_IRQHandler
-MCTM1TR_IRQHandler
-MCTM1CC_IRQHandler
+MCTM0_BRK_IRQHandler
+MCTM0_UP_IRQHandler
+MCTM0_TR_IRQHandler
+MCTM0_CC_IRQHandler
+MCTM1_BRK_IRQHandler
+MCTM1_UP_IRQHandler
+MCTM1_TR_IRQHandler
+MCTM1_CC_IRQHandler
 GPTM0_IRQHandler
 GPTM1_IRQHandler
 BFTM0_IRQHandler
@@ -442,10 +453,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -456,14 +468,22 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 
                     ENDIF
 
-                    END
+                    END

+ 50 - 30
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f165x.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_01.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -49,13 +49,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -125,14 +136,14 @@ __Vectors
                     DCD  COMP_IRQHandler                    ;  24, 40, 0x0A0,
                     DCD  ADC_IRQHandler                     ;  25, 41, 0x0A4,
                     DCD  _RESERVED                          ;  26, 42, 0x0A8,
-                    DCD  MCTM0BRK_IRQHandler                ;  27, 43, 0x0AC,
-                    DCD  MCTM0UP_IRQHandler                 ;  28, 44, 0x0B0,
-                    DCD  MCTM0TR_IRQHandler                 ;  29, 45, 0x0B4,
-                    DCD  MCTM0CC_IRQHandler                 ;  30, 46, 0x0B8,
-                    DCD  MCTM1BRK_IRQHandler                ;  31, 47, 0x0BC,
-                    DCD  MCTM1UP_IRQHandler                 ;  32, 48, 0x0C0,
-                    DCD  MCTM1TR_IRQHandler                 ;  33, 49, 0x0C4,
-                    DCD  MCTM1CC_IRQHandler                 ;  34, 50, 0x0C8,
+                    DCD  MCTM0_BRK_IRQHandler               ;  27, 43, 0x0AC,
+                    DCD  MCTM0_UP_IRQHandler                ;  28, 44, 0x0B0,
+                    DCD  MCTM0_TR_IRQHandler                ;  29, 45, 0x0B4,
+                    DCD  MCTM0_CC_IRQHandler                ;  30, 46, 0x0B8,
+                    DCD  MCTM1_BRK_IRQHandler               ;  31, 47, 0x0BC,
+                    DCD  MCTM1_UP_IRQHandler                ;  32, 48, 0x0C0,
+                    DCD  MCTM1_TR_IRQHandler                ;  33, 49, 0x0C4,
+                    DCD  MCTM1_CC_IRQHandler                ;  34, 50, 0x0C8,
                     DCD  GPTM0_IRQHandler                   ;  35, 51, 0x0CC,
                     DCD  GPTM1_IRQHandler                   ;  36, 52, 0x0D0,
                     DCD  _RESERVED                          ;  37, 53, 0x0D4,
@@ -330,14 +341,14 @@ Default_Handler     PROC
                     EXPORT  EXTI15_IRQHandler               [WEAK]
                     EXPORT  COMP_IRQHandler                 [WEAK]
                     EXPORT  ADC_IRQHandler                  [WEAK]
-                    EXPORT  MCTM0BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM0UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM0TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM0CC_IRQHandler              [WEAK]
-                    EXPORT  MCTM1BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM1UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM1TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM1CC_IRQHandler              [WEAK]
+                    EXPORT  MCTM0_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM0_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_CC_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM1_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_CC_IRQHandler             [WEAK]
                     EXPORT  GPTM0_IRQHandler                [WEAK]
                     EXPORT  GPTM1_IRQHandler                [WEAK]
                     EXPORT  BFTM0_IRQHandler                [WEAK]
@@ -395,14 +406,14 @@ EXTI14_IRQHandler
 EXTI15_IRQHandler
 COMP_IRQHandler
 ADC_IRQHandler
-MCTM0BRK_IRQHandler
-MCTM0UP_IRQHandler
-MCTM0TR_IRQHandler
-MCTM0CC_IRQHandler
-MCTM1BRK_IRQHandler
-MCTM1UP_IRQHandler
-MCTM1TR_IRQHandler
-MCTM1CC_IRQHandler
+MCTM0_BRK_IRQHandler
+MCTM0_UP_IRQHandler
+MCTM0_TR_IRQHandler
+MCTM0_CC_IRQHandler
+MCTM1_BRK_IRQHandler
+MCTM1_UP_IRQHandler
+MCTM1_TR_IRQHandler
+MCTM1_CC_IRQHandler
 GPTM0_IRQHandler
 GPTM1_IRQHandler
 BFTM0_IRQHandler
@@ -442,10 +453,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -456,14 +468,22 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 
                     ENDIF
 
-                    END
+                    END

+ 50 - 30
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f1xxxx_01.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_01.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -49,13 +49,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -125,14 +136,14 @@ __Vectors
                     DCD  COMP_IRQHandler                    ;  24, 40, 0x0A0,
                     DCD  ADC_IRQHandler                     ;  25, 41, 0x0A4,
                     DCD  _RESERVED                          ;  26, 42, 0x0A8,
-                    DCD  MCTM0BRK_IRQHandler                ;  27, 43, 0x0AC,
-                    DCD  MCTM0UP_IRQHandler                 ;  28, 44, 0x0B0,
-                    DCD  MCTM0TR_IRQHandler                 ;  29, 45, 0x0B4,
-                    DCD  MCTM0CC_IRQHandler                 ;  30, 46, 0x0B8,
-                    DCD  MCTM1BRK_IRQHandler                ;  31, 47, 0x0BC,
-                    DCD  MCTM1UP_IRQHandler                 ;  32, 48, 0x0C0,
-                    DCD  MCTM1TR_IRQHandler                 ;  33, 49, 0x0C4,
-                    DCD  MCTM1CC_IRQHandler                 ;  34, 50, 0x0C8,
+                    DCD  MCTM0_BRK_IRQHandler               ;  27, 43, 0x0AC,
+                    DCD  MCTM0_UP_IRQHandler                ;  28, 44, 0x0B0,
+                    DCD  MCTM0_TR_IRQHandler                ;  29, 45, 0x0B4,
+                    DCD  MCTM0_CC_IRQHandler                ;  30, 46, 0x0B8,
+                    DCD  MCTM1_BRK_IRQHandler               ;  31, 47, 0x0BC,
+                    DCD  MCTM1_UP_IRQHandler                ;  32, 48, 0x0C0,
+                    DCD  MCTM1_TR_IRQHandler                ;  33, 49, 0x0C4,
+                    DCD  MCTM1_CC_IRQHandler                ;  34, 50, 0x0C8,
                     DCD  GPTM0_IRQHandler                   ;  35, 51, 0x0CC,
                     DCD  GPTM1_IRQHandler                   ;  36, 52, 0x0D0,
                     DCD  _RESERVED                          ;  37, 53, 0x0D4,
@@ -330,14 +341,14 @@ Default_Handler     PROC
                     EXPORT  EXTI15_IRQHandler               [WEAK]
                     EXPORT  COMP_IRQHandler                 [WEAK]
                     EXPORT  ADC_IRQHandler                  [WEAK]
-                    EXPORT  MCTM0BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM0UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM0TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM0CC_IRQHandler              [WEAK]
-                    EXPORT  MCTM1BRK_IRQHandler             [WEAK]
-                    EXPORT  MCTM1UP_IRQHandler              [WEAK]
-                    EXPORT  MCTM1TR_IRQHandler              [WEAK]
-                    EXPORT  MCTM1CC_IRQHandler              [WEAK]
+                    EXPORT  MCTM0_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM0_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM0_CC_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_BRK_IRQHandler            [WEAK]
+                    EXPORT  MCTM1_UP_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_TR_IRQHandler             [WEAK]
+                    EXPORT  MCTM1_CC_IRQHandler             [WEAK]
                     EXPORT  GPTM0_IRQHandler                [WEAK]
                     EXPORT  GPTM1_IRQHandler                [WEAK]
                     EXPORT  BFTM0_IRQHandler                [WEAK]
@@ -395,14 +406,14 @@ EXTI14_IRQHandler
 EXTI15_IRQHandler
 COMP_IRQHandler
 ADC_IRQHandler
-MCTM0BRK_IRQHandler
-MCTM0UP_IRQHandler
-MCTM0TR_IRQHandler
-MCTM0CC_IRQHandler
-MCTM1BRK_IRQHandler
-MCTM1UP_IRQHandler
-MCTM1TR_IRQHandler
-MCTM1CC_IRQHandler
+MCTM0_BRK_IRQHandler
+MCTM0_UP_IRQHandler
+MCTM0_TR_IRQHandler
+MCTM0_CC_IRQHandler
+MCTM1_BRK_IRQHandler
+MCTM1_UP_IRQHandler
+MCTM1_TR_IRQHandler
+MCTM1_CC_IRQHandler
 GPTM0_IRQHandler
 GPTM1_IRQHandler
 BFTM0_IRQHandler
@@ -442,10 +453,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -456,14 +468,22 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 
                     ENDIF
 
-                    END
+                    END

+ 25 - 5
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/ARM/startup_ht32f1xxxx_03.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_03.s
-;  Version          : $Rev:: 2524         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 3052         $
+;  Date             : $Date:: 2024-02-26 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -42,13 +42,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-131072:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-131072:8>
 Heap_Size           EQU     0
@@ -366,10 +377,11 @@ AES_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -380,11 +392,19 @@ AES_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 18 - 18
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/CodeSourcery/startup_ht32f1xxxx_cs3_01.s

@@ -6,8 +6,8 @@
 /*                                                                                                         */
 /*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_cs3_01.s
-;  Version          : $Rev:: 1578         $
-;  Date             : $Date:: 2019-03-29 #$
+;  Version          : $Rev:: 3030         $
+;  Date             : $Date:: 2024-01-31 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -139,14 +139,14 @@ __cs3_interrupt_vector_cortex_m:
                     .long   COMP_IRQHandler                   /*  24, 40, 0x0A0,                            */
                     .long   ADC_IRQHandler                    /*  25, 41, 0x0A4,                            */
                     .long   _RESERVED                         /*  26, 42, 0x0A8,                            */
-                    .long   MCTM0BRK_IRQHandler               /*  27, 43, 0x0AC,                            */
-                    .long   MCTM0UP_IRQHandler                /*  28, 44, 0x0B0,                            */
-                    .long   MCTM0TR_IRQHandler                /*  29, 45, 0x0B4,                            */
-                    .long   MCTM0CC_IRQHandler                /*  30, 46, 0x0B8,                            */
-                    .long   MCTM1BRK_IRQHandler               /*  31, 47, 0x0BC,                            */
-                    .long   MCTM1UP_IRQHandler                /*  32, 48, 0x0C0,                            */
-                    .long   MCTM1TR_IRQHandler                /*  33, 49, 0x0C4,                            */
-                    .long   MCTM1CC_IRQHandler                /*  34, 50, 0x0C8,                            */
+                    .long   MCTM0_BRK_IRQHandler              /*  27, 43, 0x0AC,                            */
+                    .long   MCTM0_UP_IRQHandler               /*  28, 44, 0x0B0,                            */
+                    .long   MCTM0_TR_IRQHandler               /*  29, 45, 0x0B4,                            */
+                    .long   MCTM0_CC_IRQHandler               /*  30, 46, 0x0B8,                            */
+                    .long   MCTM1_BRK_IRQHandler              /*  31, 47, 0x0BC,                            */
+                    .long   MCTM1_UP_IRQHandler               /*  32, 48, 0x0C0,                            */
+                    .long   MCTM1_TR_IRQHandler               /*  33, 49, 0x0C4,                            */
+                    .long   MCTM1_CC_IRQHandler               /*  34, 50, 0x0C8,                            */
                     .long   GPTM0_IRQHandler                  /*  35, 51, 0x0CC,                            */
                     .long   GPTM1_IRQHandler                  /*  36, 52, 0x0D0,                            */
                     .long   _RESERVED                         /*  37, 53, 0x0D4,                            */
@@ -384,14 +384,14 @@ Default_Handler:
     IRQ     EXTI15_IRQHandler
     IRQ     COMP_IRQHandler
     IRQ     ADC_IRQHandler
-    IRQ     MCTM0BRK_IRQHandler
-    IRQ     MCTM0UP_IRQHandler
-    IRQ     MCTM0TR_IRQHandler
-    IRQ     MCTM0CC_IRQHandler
-    IRQ     MCTM1BRK_IRQHandler
-    IRQ     MCTM1UP_IRQHandler
-    IRQ     MCTM1TR_IRQHandler
-    IRQ     MCTM1CC_IRQHandler
+    IRQ     MCTM0_BRK_IRQHandler
+    IRQ     MCTM0_UP_IRQHandler
+    IRQ     MCTM0_TR_IRQHandler
+    IRQ     MCTM0_CC_IRQHandler
+    IRQ     MCTM1_BRK_IRQHandler
+    IRQ     MCTM1_UP_IRQHandler
+    IRQ     MCTM1_TR_IRQHandler
+    IRQ     MCTM1_CC_IRQHandler
     IRQ     GPTM0_IRQHandler
     IRQ     GPTM1_IRQHandler
     IRQ     BFTM0_IRQHandler

+ 18 - 18
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/GCC/startup_ht32f1xxxx_gcc_01.s

@@ -6,8 +6,8 @@
 /*                                                                                                         */
 /*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_gcc_01.s
-;  Version          : $Rev:: 1578         $
-;  Date             : $Date:: 2019-03-29 #$
+;  Version          : $Rev:: 3030         $
+;  Date             : $Date:: 2024-01-31 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -163,14 +163,14 @@ __interrupt_vector_cortex_m:
                     .long   COMP_IRQHandler                   /*  24, 40, 0x0A0,                            */
                     .long   ADC_IRQHandler                    /*  25, 41, 0x0A4,                            */
                     .long   _RESERVED                         /*  26, 42, 0x0A8,                            */
-                    .long   MCTM0BRK_IRQHandler               /*  27, 43, 0x0AC,                            */
-                    .long   MCTM0UP_IRQHandler                /*  28, 44, 0x0B0,                            */
-                    .long   MCTM0TR_IRQHandler                /*  29, 45, 0x0B4,                            */
-                    .long   MCTM0CC_IRQHandler                /*  30, 46, 0x0B8,                            */
-                    .long   MCTM1BRK_IRQHandler               /*  31, 47, 0x0BC,                            */
-                    .long   MCTM1UP_IRQHandler                /*  32, 48, 0x0C0,                            */
-                    .long   MCTM1TR_IRQHandler                /*  33, 49, 0x0C4,                            */
-                    .long   MCTM1CC_IRQHandler                /*  34, 50, 0x0C8,                            */
+                    .long   MCTM0_BRK_IRQHandler              /*  27, 43, 0x0AC,                            */
+                    .long   MCTM0_UP_IRQHandler               /*  28, 44, 0x0B0,                            */
+                    .long   MCTM0_TR_IRQHandler               /*  29, 45, 0x0B4,                            */
+                    .long   MCTM0_CC_IRQHandler               /*  30, 46, 0x0B8,                            */
+                    .long   MCTM1_BRK_IRQHandler              /*  31, 47, 0x0BC,                            */
+                    .long   MCTM1_UP_IRQHandler               /*  32, 48, 0x0C0,                            */
+                    .long   MCTM1_TR_IRQHandler               /*  33, 49, 0x0C4,                            */
+                    .long   MCTM1_CC_IRQHandler               /*  34, 50, 0x0C8,                            */
                     .long   GPTM0_IRQHandler                  /*  35, 51, 0x0CC,                            */
                     .long   GPTM1_IRQHandler                  /*  36, 52, 0x0D0,                            */
                     .long   _RESERVED                         /*  37, 53, 0x0D4,                            */
@@ -442,14 +442,14 @@ Default_Handler:
     IRQ     EXTI15_IRQHandler
     IRQ     COMP_IRQHandler
     IRQ     ADC_IRQHandler
-    IRQ     MCTM0BRK_IRQHandler
-    IRQ     MCTM0UP_IRQHandler
-    IRQ     MCTM0TR_IRQHandler
-    IRQ     MCTM0CC_IRQHandler
-    IRQ     MCTM1BRK_IRQHandler
-    IRQ     MCTM1UP_IRQHandler
-    IRQ     MCTM1TR_IRQHandler
-    IRQ     MCTM1CC_IRQHandler
+    IRQ     MCTM0_BRK_IRQHandler
+    IRQ     MCTM0_UP_IRQHandler
+    IRQ     MCTM0_TR_IRQHandler
+    IRQ     MCTM0_CC_IRQHandler
+    IRQ     MCTM1_BRK_IRQHandler
+    IRQ     MCTM1_UP_IRQHandler
+    IRQ     MCTM1_TR_IRQHandler
+    IRQ     MCTM1_CC_IRQHandler
     IRQ     GPTM0_IRQHandler
     IRQ     GPTM1_IRQHandler
     IRQ     BFTM0_IRQHandler

+ 26 - 26
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/IAR/startup_ht32f1xxxx_iar_01.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_iar_01.s
-;  Version          : $Rev:: 1774         $
-;  Date             : $Date:: 2019-07-25 #$
+;  Version          : $Rev:: 3030         $
+;  Date             : $Date:: 2024-01-31 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -104,14 +104,14 @@ __vector_table
                     DCD  COMP_IRQHandler                    ;  24, 40, 0x0A0,
                     DCD  ADC_IRQHandler                     ;  25, 41, 0x0A4,
                     DCD  _RESERVED                          ;  26, 42, 0x0A8,
-                    DCD  MCTM0BRK_IRQHandler                ;  27, 43, 0x0AC,
-                    DCD  MCTM0UP_IRQHandler                 ;  28, 44, 0x0B0,
-                    DCD  MCTM0TR_IRQHandler                 ;  29, 45, 0x0B4,
-                    DCD  MCTM0CC_IRQHandler                 ;  30, 46, 0x0B8,
-                    DCD  MCTM1BRK_IRQHandler                ;  31, 47, 0x0BC,
-                    DCD  MCTM1UP_IRQHandler                 ;  32, 48, 0x0C0,
-                    DCD  MCTM1TR_IRQHandler                 ;  33, 49, 0x0C4,
-                    DCD  MCTM1CC_IRQHandler                 ;  34, 50, 0x0C8,
+                    DCD  MCTM0_BRK_IRQHandler               ;  27, 43, 0x0AC,
+                    DCD  MCTM0_UP_IRQHandler                ;  28, 44, 0x0B0,
+                    DCD  MCTM0_TR_IRQHandler                ;  29, 45, 0x0B4,
+                    DCD  MCTM0_CC_IRQHandler                ;  30, 46, 0x0B8,
+                    DCD  MCTM1_BRK_IRQHandler               ;  31, 47, 0x0BC,
+                    DCD  MCTM1_UP_IRQHandler                ;  32, 48, 0x0C0,
+                    DCD  MCTM1_TR_IRQHandler                ;  33, 49, 0x0C4,
+                    DCD  MCTM1_CC_IRQHandler                ;  34, 50, 0x0C8,
                     DCD  GPTM0_IRQHandler                   ;  35, 51, 0x0CC,
                     DCD  GPTM1_IRQHandler                   ;  36, 52, 0x0D0,
                     DCD  _RESERVED                          ;  37, 53, 0x0D4,
@@ -306,14 +306,14 @@ SysTick_Handler
         PUBWEAK EXTI15_IRQHandler
         PUBWEAK COMP_IRQHandler
         PUBWEAK ADC_IRQHandler
-        PUBWEAK MCTM0BRK_IRQHandler
-        PUBWEAK MCTM0UP_IRQHandler
-        PUBWEAK MCTM0TR_IRQHandler
-        PUBWEAK MCTM0CC_IRQHandler
-        PUBWEAK MCTM1BRK_IRQHandler
-        PUBWEAK MCTM1UP_IRQHandler
-        PUBWEAK MCTM1TR_IRQHandler
-        PUBWEAK MCTM1CC_IRQHandler
+        PUBWEAK MCTM0_BRK_IRQHandler
+        PUBWEAK MCTM0_UP_IRQHandler
+        PUBWEAK MCTM0_TR_IRQHandler
+        PUBWEAK MCTM0_CC_IRQHandler
+        PUBWEAK MCTM1_BRK_IRQHandler
+        PUBWEAK MCTM1_UP_IRQHandler
+        PUBWEAK MCTM1_TR_IRQHandler
+        PUBWEAK MCTM1_CC_IRQHandler
         PUBWEAK GPTM0_IRQHandler
         PUBWEAK GPTM1_IRQHandler
         PUBWEAK BFTM0_IRQHandler
@@ -372,14 +372,14 @@ EXTI14_IRQHandler
 EXTI15_IRQHandler
 COMP_IRQHandler
 ADC_IRQHandler
-MCTM0BRK_IRQHandler
-MCTM0UP_IRQHandler
-MCTM0TR_IRQHandler
-MCTM0CC_IRQHandler
-MCTM1BRK_IRQHandler
-MCTM1UP_IRQHandler
-MCTM1TR_IRQHandler
-MCTM1CC_IRQHandler
+MCTM0_BRK_IRQHandler
+MCTM0_UP_IRQHandler
+MCTM0_TR_IRQHandler
+MCTM0_CC_IRQHandler
+MCTM1_BRK_IRQHandler
+MCTM1_UP_IRQHandler
+MCTM1_TR_IRQHandler
+MCTM1_CC_IRQHandler
 GPTM0_IRQHandler
 GPTM1_IRQHandler
 BFTM0_IRQHandler

+ 18 - 18
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/Device/Holtek/HT32F1xxxx/Source/emStudio/startup_ht32f1xxxx_es_01.s

@@ -6,8 +6,8 @@
 /*                                                                                                         */
 /*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f1xxxx_es_01.s
-;  Version          : $Rev:: 1578         $
-;  Date             : $Date:: 2019-03-29 #$
+;  Version          : $Rev:: 3030         $
+;  Date             : $Date:: 2024-01-31 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -109,14 +109,14 @@ _vectors:
                     .long   COMP_IRQHandler                   /*  24, 40, 0x0A0,                            */
                     .long   ADC_IRQHandler                    /*  25, 41, 0x0A4,                            */
                     .long   _RESERVED                         /*  26, 42, 0x0A8,                            */
-                    .long   MCTM0BRK_IRQHandler               /*  27, 43, 0x0AC,                            */
-                    .long   MCTM0UP_IRQHandler                /*  28, 44, 0x0B0,                            */
-                    .long   MCTM0TR_IRQHandler                /*  29, 45, 0x0B4,                            */
-                    .long   MCTM0CC_IRQHandler                /*  30, 46, 0x0B8,                            */
-                    .long   MCTM1BRK_IRQHandler               /*  31, 47, 0x0BC,                            */
-                    .long   MCTM1UP_IRQHandler                /*  32, 48, 0x0C0,                            */
-                    .long   MCTM1TR_IRQHandler                /*  33, 49, 0x0C4,                            */
-                    .long   MCTM1CC_IRQHandler                /*  34, 50, 0x0C8,                            */
+                    .long   MCTM0_BRK_IRQHandler              /*  27, 43, 0x0AC,                            */
+                    .long   MCTM0_UP_IRQHandler               /*  28, 44, 0x0B0,                            */
+                    .long   MCTM0_TR_IRQHandler               /*  29, 45, 0x0B4,                            */
+                    .long   MCTM0_CC_IRQHandler               /*  30, 46, 0x0B8,                            */
+                    .long   MCTM1_BRK_IRQHandler              /*  31, 47, 0x0BC,                            */
+                    .long   MCTM1_UP_IRQHandler               /*  32, 48, 0x0C0,                            */
+                    .long   MCTM1_TR_IRQHandler               /*  33, 49, 0x0C4,                            */
+                    .long   MCTM1_CC_IRQHandler               /*  34, 50, 0x0C8,                            */
                     .long   GPTM0_IRQHandler                  /*  35, 51, 0x0CC,                            */
                     .long   GPTM1_IRQHandler                  /*  36, 52, 0x0D0,                            */
                     .long   _RESERVED                         /*  37, 53, 0x0D4,                            */
@@ -348,14 +348,14 @@ Default_Handler:
     IRQ     EXTI15_IRQHandler
     IRQ     COMP_IRQHandler
     IRQ     ADC_IRQHandler
-    IRQ     MCTM0BRK_IRQHandler
-    IRQ     MCTM0UP_IRQHandler
-    IRQ     MCTM0TR_IRQHandler
-    IRQ     MCTM0CC_IRQHandler
-    IRQ     MCTM1BRK_IRQHandler
-    IRQ     MCTM1UP_IRQHandler
-    IRQ     MCTM1TR_IRQHandler
-    IRQ     MCTM1CC_IRQHandler
+    IRQ     MCTM0_BRK_IRQHandler
+    IRQ     MCTM0_UP_IRQHandler
+    IRQ     MCTM0_TR_IRQHandler
+    IRQ     MCTM0_CC_IRQHandler
+    IRQ     MCTM1_BRK_IRQHandler
+    IRQ     MCTM1_UP_IRQHandler
+    IRQ     MCTM1_TR_IRQHandler
+    IRQ     MCTM1_CC_IRQHandler
     IRQ     GPTM0_IRQHandler
     IRQ     GPTM1_IRQHandler
     IRQ     BFTM0_IRQHandler

+ 7 - 2
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_cm3_misc.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32_cm3_misc.h
- * @version $Rev:: 5            $
- * @date    $Date:: 2017-05-11 #$
+ * @version $Rev:: 3143         $
+ * @date    $Date:: 2024-07-04 #$
  * @brief   All the function prototypes for the miscellaneous firmware library.
  *************************************************************************************************************
  * @attention
@@ -112,6 +112,11 @@ void SYSTICK_ClockSourceConfig(u32 SysTick_ClockSource);
 void SYSTICK_CounterCmd(u32 SysTick_Counter);
 void SYSTICK_IntConfig(ControlStatus NewState);
 void SYSTICK_SetReloadValue(u32 SysTick_Reload);
+#if (HTCFG_STACK_USAGE_ANALYSIS == 1)
+void StackUsageAnalysisInit(u32 addr);
+#else
+#define StackUsageAnalysisInit(...)
+#endif
 /**
   * @}
   */

+ 13 - 5
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_dependency.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32_dependency.h
- * @version $Rev:: 2971         $
- * @date    $Date:: 2023-10-25 #$
+ * @version $Rev:: 3048         $
+ * @date    $Date:: 2024-02-22 #$
  * @brief   The header file of dependency check.
  *************************************************************************************************************
  * @attention
@@ -41,14 +41,22 @@
 #if 0 // Version setting example for module
 
 /* Dependency check ----------------------------------------------------------------------------------------*/
-#if (__CORTEX_M == 0)
+#if defined(__HT32L5XXXX_LIB_H)
+#define MIN_HT32_FWLIB_VER              (0x01000000) //0xmmnnnrrr -> Vm.n.r
+#define MIN_HT32_FWLIB_SVN              (0x209)
+#endif
+#if defined(__HT32F5XXXX_LIB_H)
 #define MIN_HT32_FWLIB_VER              (0x01000024) //0xmmnnnrrr -> Vm.n.r
 #define MIN_HT32_FWLIB_SVN              (0x5762)
 #endif
-#if (__CORTEX_M == 3)
+#if defined(__HT32F1XXXX_LIB_H)
 #define MIN_HT32_FWLIB_VER              (0x01000009) //0xmmnnnrrr -> Vm.n.r
 #define MIN_HT32_FWLIB_SVN              (0x2556)
 #endif
+#if defined(__HT32F4XXXX_LIB_H)
+#define MIN_HT32_FWLIB_VER              (0x01000000) //0xmmnnnrrr -> Vm.n.r
+#define MIN_HT32_FWLIB_SVN              (0x336)
+#endif
 #include "ht32_dependency.h" // Not exist means the version of HT32 Firmware Library is older than the module required.
 
 #endif
@@ -62,7 +70,7 @@
 #endif
 
 
-// Check "ht32fxxxxx_lib.h" for the version of HT32 Firmwar Library
+// Check "ht32f1xxxx_lib.h" for the version of HT32 Firmwar Library
 #if (HT32_FWLIB_VER != 999999)
 #if HT32_FWLIB_VER < MIN_HT32_FWLIB_VER
   #error !!! The version of HT32 Firmware Library is older than the module required. Please update HT32 Firmware Library.

+ 12 - 12
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32_time.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32_time.h
- * @version $Rev:: 2896         $
- * @date    $Date:: 2023-03-04 #$
+ * @version $Rev:: 3089         $
+ * @date    $Date:: 2024-04-02 #$
  * @brief   The header file of time function.
  *************************************************************************************************************
  * @attention
@@ -132,23 +132,23 @@
 #define TIME_TICKDIFF(start, current)             ((current >= start) ? (u32)(current - start) : (u32)(0xFFFFFFFF - start + 1 + current))
 
 #if (HTCFG_TIME_TICKHZ < 1000000)
-#define TIME_US2TICK(us)                          (us / (1000000UL / HTCFG_TIME_TICKHZ))
-#define TIME_TICK2US(t)                           (t * (1000000UL / HTCFG_TIME_TICKHZ))
+#define TIME_US2TICK(us)                          ((us) / (1000000UL / HTCFG_TIME_TICKHZ))
+#define TIME_TICK2US(t)                           ((t) * (1000000UL / HTCFG_TIME_TICKHZ))
 #else
-#define TIME_US2TICK(us)                          (us * (HTCFG_TIME_TICKHZ / 1000000UL))
-#define TIME_TICK2US(t)                           (t / (HTCFG_TIME_TICKHZ / 1000000UL))
+#define TIME_US2TICK(us)                          ((us) * (HTCFG_TIME_TICKHZ / 1000000UL))
+#define TIME_TICK2US(t)                           ((t) / (HTCFG_TIME_TICKHZ / 1000000UL))
 #endif
 
 #if (HTCFG_TIME_TICKHZ < 1000)
-#define TIME_MS2TICK(ms)                          (ms / (1000UL / HTCFG_TIME_TICKHZ))
-#define TIME_TICK2MS(t)                           (t * (1000UL / HTCFG_TIME_TICKHZ))
+#define TIME_MS2TICK(ms)                          ((ms) / (1000UL / HTCFG_TIME_TICKHZ))
+#define TIME_TICK2MS(t)                           ((t) * (1000UL / HTCFG_TIME_TICKHZ))
 #else
-#define TIME_MS2TICK(ms)                          (ms * (HTCFG_TIME_TICKHZ / 1000UL))
-#define TIME_TICK2MS(t)                           (t / (HTCFG_TIME_TICKHZ / 1000UL))
+#define TIME_MS2TICK(ms)                          ((ms) * (HTCFG_TIME_TICKHZ / 1000UL))
+#define TIME_TICK2MS(t)                           ((t) / (HTCFG_TIME_TICKHZ / 1000UL))
 #endif
 
-#define TIME_S2TICK(s)                            (s * (u32)(HTCFG_TIME_TICKHZ))
-#define TIME_TICK2S(t)                            (t / (HTCFG_TIME_TICKHZ))
+#define TIME_S2TICK(s)                            ((s) * (u32)(HTCFG_TIME_TICKHZ))
+#define TIME_TICK2S(t)                            ((t) / (HTCFG_TIME_TICKHZ))
 
 
 #define GET_CNT()                                 (_HTCFG_TIME_PORT->CNTR)

+ 8 - 8
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_aes.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_aes.h
- * @version $Rev:: 2022         $
- * @date    $Date:: 2020-02-03 #$
+ * @version $Rev:: 2985         $
+ * @date    $Date:: 2023-12-14 #$
  * @brief   The header file of the ADC library.
  *************************************************************************************************************
  * @attention
@@ -159,15 +159,15 @@ typedef enum
 void AES_ECB_Init(HT_AES_TypeDef* HT_AESn, AES_InitTypeDef* AES_InitStruct);
 void AES_CBC_Init(HT_AES_TypeDef* HT_AESn, AES_InitTypeDef* AES_InitStruct);
 void AES_CTR_Init(HT_AES_TypeDef* HT_AESn, AES_InitTypeDef* AES_InitStruct);
-void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, uc8* Key, u32 keySize);
-ErrStatus _AES_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum dir, uc8 *iv, u32 length, uc8 *inputData, u8 *outputData);
+void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, u32 *Key, u32 keySize);
+ErrStatus _AES_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum dir, u32 *iv, u32 length, u32 *inputData, u32 *outputData);
 #define AES_ECB_CryptData(a, b, c, d, e)     _AES_CryptData(a, b, NULL, c, d, e)
 #define AES_CBC_CryptData                    _AES_CryptData
 #define AES_CTR_CryptData(a, b, c, d, e)     _AES_CryptData(a, AES_DIR_ENCRYPT, b, c, d, e)
 #if 0
-ErrStatus AES_ECB_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum mode, u32 length, uc8 *inputData, u8 *outputData);
-ErrStatus AES_CBC_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum mode, uc8 *iv, u32 length, uc8 *inputData, u8 *outputData);
-ErrStatus AES_CTR_CryptData(HT_AES_TypeDef* HT_AESn, uc8 *iv, u32 length, uc8 *inputData, u8 *outputData);
+ErrStatus AES_ECB_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum mode, u32 length, u32 *inputData, u32 *outputData);
+ErrStatus AES_CBC_CryptData(HT_AES_TypeDef* HT_AESn, AES_DIR_Enum mode, u32 *iv, u32 length, u32 *inputData, u32 *outputData);
+ErrStatus AES_CTR_CryptData(HT_AES_TypeDef* HT_AESn, u32 *iv, u32 length, u32 *inputData, u32 *outputData);
 #endif
 
 void AES_StartKey(HT_AES_TypeDef* HT_AESn);
@@ -180,7 +180,7 @@ FlagStatus AES_GetIntStatus(HT_AES_TypeDef* HT_AESn, u32 AES_INTSR_x);
 void AES_IntConfig(HT_AES_TypeDef* HT_AESn, u32 AES_IER_x, ControlStatus NewState);
 void AES_SetInputData(HT_AES_TypeDef* HT_AESn, uc32 AES_Data);
 u32 AES_GetOutputData(HT_AES_TypeDef* HT_AESn);
-void AES_SetVectorTable(HT_AES_TypeDef* HT_AESn, uc8* Vector);
+void AES_SetVectorTable(HT_AES_TypeDef* HT_AESn, u32 *Vector);
 void AESCore_IRQHandler(HT_AES_TypeDef* HT_AESn);
 /**
   * @}

+ 3 - 3
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_flash.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_flash.h
- * @version $Rev:: 2971         $
- * @date    $Date:: 2023-10-25 #$
+ * @version $Rev:: 3145         $
+ * @date    $Date:: 2024-07-05 #$
  * @brief   The header file of the FLASH library.
  *************************************************************************************************************
  * @attention
@@ -160,7 +160,7 @@ ErrStatus FLASH_FlashHalfCycleCmd(ControlStatus NewState);
 #if (LIBCFG_FLASH_ZWPWESAVING)
 ErrStatus FLASH_FlashZwPwrSavingCmd(ControlStatus NewState);
 #endif
-void FLASH_SetRemappingMode(FLASH_Vector RemapMode);
+void FLASH_SetRemappingMode(FLASH_Vector FLASH_BOOT_x);
 FLASH_State FLASH_ErasePage(u32 PageAddress);
 FLASH_State FLASH_EraseOptionByte(void);
 FLASH_State FLASH_MassErase(void);

+ 2 - 2
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_lib.h

@@ -34,8 +34,8 @@
 #endif
 
 /* Settings ------------------------------------------------------------------------------------------------*/
-#define HT32_FWLIB_VER                  (0x01004001)
-#define HT32_FWLIB_SVN                  (0x2982)
+#define HT32_FWLIB_VER                  (0x01005001)
+#define HT32_FWLIB_SVN                  (0x3190)
 
 #if defined(USE_HT32F1653_54)
   #include "ht32f1653_54_libcfg.h"

+ 3 - 3
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_rtc.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_rtc.h
- * @version $Rev:: 2971         $
- * @date    $Date:: 2023-10-25 #$
+ * @version $Rev:: 3094         $
+ * @date    $Date:: 2024-06-19 #$
  * @brief   The header file of the RTC library.
  *************************************************************************************************************
  * @attention
@@ -105,7 +105,7 @@ typedef enum
   RTC_ROWM_LEVEL                   /*!< Level mode.                                                         */
 } RTC_ROWM_Enum;
 /**
- * @brief Waveform mode of RTC output
+ * @brief Event selection of RTC output
  */
 typedef enum
 {

+ 9 - 9
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_spi.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_spi.h
- * @version $Rev:: 2797         $
- * @date    $Date:: 2022-11-28 #$
+ * @version $Rev:: 3180         $
+ * @date    $Date:: 2024-10-15 #$
  * @brief   The header file of the SPI library.
  *************************************************************************************************************
  * @attention
@@ -159,14 +159,14 @@ typedef struct
 #define SPI_FLAG_TOUT                               ((u32)0x00000080)
 #define SPI_FLAG_BUSY                               ((u32)0x00000100)
 
-#define IS_SPI_FLAG(FLAG)                           ((FLAG ==  SPI_FLAG_TXBE) || \
-                                                     (FLAG ==  SPI_FLAG_TXE) || \
+#define IS_SPI_FLAG(FLAG)                           ((FLAG ==  SPI_FLAG_TXBE)  || \
+                                                     (FLAG ==  SPI_FLAG_TXE)   || \
                                                      (FLAG ==  SPI_FLAG_RXBNE) || \
-                                                     (FLAG ==  SPI_FLAG_WC) || \
-                                                     (FLAG ==  SPI_FLAG_RO) || \
-                                                     (FLAG ==  SPI_FLAG_MF) || \
-                                                     (FLAG ==  SPI_FLAG_SA) || \
-                                                     (FLAG ==  SPI_FLAG_TOUT) || \
+                                                     (FLAG ==  SPI_FLAG_WC)    || \
+                                                     (FLAG ==  SPI_FLAG_RO)    || \
+                                                     (FLAG ==  SPI_FLAG_MF)    || \
+                                                     (FLAG ==  SPI_FLAG_SA)    || \
+                                                     (FLAG ==  SPI_FLAG_TOUT)  || \
                                                      (FLAG ==  SPI_FLAG_BUSY))
 
 #define IS_SPI_FLAG_CLEAR(CLEAR)                    ((CLEAR ==  SPI_FLAG_WC) || \

+ 17 - 17
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_tm.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_tm.h
- * @version $Rev:: 2971         $
- * @date    $Date:: 2023-10-25 #$
+ * @version $Rev:: 3180         $
+ * @date    $Date:: 2024-10-15 #$
  * @brief   The header file of the TM library.
  *************************************************************************************************************
  * @attention
@@ -341,11 +341,11 @@ typedef struct
  * @brief Used to check parameter of the output compare mode.
  */
 #define IS_TM_OM_CMP(x) (((x) == TM_OM_MATCH_NOCHANGE) || \
-                           ((x) == TM_OM_MATCH_INACTIVE) || \
-                           ((x) == TM_OM_MATCH_ACTIVE) || \
-                           ((x) == TM_OM_MATCH_TOGGLE) || \
-                           ((x) == TM_OM_PWM1) || \
-                           ((x) == TM_OM_PWM2))
+                         ((x) == TM_OM_MATCH_INACTIVE) || \
+                         ((x) == TM_OM_MATCH_ACTIVE)   || \
+                         ((x) == TM_OM_MATCH_TOGGLE)   || \
+                         ((x) == TM_OM_PWM1)           || \
+                         ((x) == TM_OM_PWM2))
 /**
  * @brief Used to check parameter of the output mode.
  */
@@ -377,7 +377,7 @@ typedef struct
 /**
  * @brief Used to check parameter of the counter mode.
  */
-#define IS_TM_CNT_MODE(x)   ((x == TM_CNT_MODE_UP) ||  \
+#define IS_TM_CNT_MODE(x)   ((x == TM_CNT_MODE_UP)  ||  \
                              (x == TM_CNT_MODE_CA1) || \
                              (x == TM_CNT_MODE_CA2) || \
                              (x == TM_CNT_MODE_CA3) || \
@@ -397,23 +397,23 @@ typedef struct
 /**
  * @brief Used to check parameter of the channel input selection.
  */
-#define IS_TM_CHCCS(x)  ((x == TM_CHCCS_DIRECT) || \
-                           (x == TM_CHCCS_INDIRECT) || \
-                           (x == TM_CHCCS_TRCED))
+#define IS_TM_CHCCS(x)  ((x == TM_CHCCS_DIRECT)   || \
+                         (x == TM_CHCCS_INDIRECT) || \
+                         (x == TM_CHCCS_TRCED))
 /**
  * @brief Used to check parameter of the channel capture prescaler.
  */
 #define IS_TM_CHPSC(x)  ((x == TM_CHPSC_OFF) || \
-                           (x == TM_CHPSC_2) || \
-                           (x == TM_CHPSC_4) || \
-                           (x == TM_CHPSC_8))
+                         (x == TM_CHPSC_2)   || \
+                         (x == TM_CHPSC_4)   || \
+                         (x == TM_CHPSC_8))
 /**
  * @brief Used to check parameter of the ETI prescaler.
  */
 #define IS_TM_ETIPSC(x) ((x == TM_ETIPSC_OFF) || \
-                           (x == TM_ETIPSC_2) || \
-                           (x == TM_ETIPSC_4) || \
-                           (x == TM_ETIPSC_8))
+                         (x == TM_ETIPSC_2)   || \
+                         (x == TM_ETIPSC_4)   || \
+                         (x == TM_ETIPSC_8))
 /**
  * @brief Used to check parameter of the TM interrupt.
  */

+ 3 - 3
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_usart.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_usart.h
- * @version $Rev:: 2797         $
- * @date    $Date:: 2022-11-28 #$
+ * @version $Rev:: 3180         $
+ * @date    $Date:: 2024-10-15 #$
  * @brief   The header file of the USART library.
  *************************************************************************************************************
  * @attention
@@ -459,7 +459,7 @@ typedef struct
 #define IS_USART_PDMA_REQ(REQ)                  ((REQ == USART_PDMAREQ_TX) || (REQ == USART_PDMAREQ_RX))
 
 #define IS_USART(USART)                         ((USART == HT_USART0) || \
-                                                 (IS_USART1(USART)) || \
+                                                 (IS_USART1(USART))   || \
                                                  (USART == HT_UART0)  || \
                                                  (USART == HT_UART1))
 

+ 11 - 8
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/inc/ht32f1xxxx_wdt.h

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_wdt.h
- * @version $Rev:: 122          $
- * @date    $Date:: 2017-06-13 #$
+ * @version $Rev:: 3103         $
+ * @date    $Date:: 2024-06-24 #$
  * @brief   The header file of the WDT library.
  *************************************************************************************************************
  * @attention
@@ -72,14 +72,17 @@
 
 /* WDT runs or halts in sleep and deep sleep1 mode                                                          */
 /* WDT WDTSHLT mask                                                                                         */
-#define MODE0_WDTSHLT_BOTH                        ((u32)0x00000000)
-#define MODE0_WDTSHLT_SLEEP                       ((u32)0x00004000)
-#define MODE0_WDTSHLT_HALT                        ((u32)0x00008000)
+#define WDT_SLEEP_HALT_NONE                       ((u32)0x00000000)
+#define WDT_SLEEP_HALT_DEEPSLEEP                  ((u32)0x00004000)
+#define WDT_SLEEP_HALT_ALL                        ((u32)0x00008000)
 
-#define IS_WDT_WDTSHLT_MODE(WDT_Mode)             ((WDT_Mode == MODE0_WDTSHLT_BOTH) || \
-                                                   (WDT_Mode == MODE0_WDTSHLT_SLEEP) || \
-                                                   (WDT_Mode == MODE0_WDTSHLT_HALT))
+#define MODE0_WDTSHLT_BOTH                        WDT_SLEEP_HALT_NONE
+#define MODE0_WDTSHLT_SLEEP                       WDT_SLEEP_HALT_DEEPSLEEP
+#define MODE0_WDTSHLT_HALT                        WDT_SLEEP_HALT_ALL
 
+#define IS_WDT_WDTSHLT_MODE(WDT_Mode)             ((WDT_Mode == WDT_SLEEP_HALT_NONE)      || \
+                                                   (WDT_Mode == WDT_SLEEP_HALT_DEEPSLEEP) || \
+                                                   (WDT_Mode == WDT_SLEEP_HALT_ALL))
 
 
 /* WDT Flag                                                                                                 */

+ 95 - 2
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32_cm3_misc.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32_cm3_misc.c
- * @version $Rev:: 2437         $
- * @date    $Date:: 2021-06-01 #$
+ * @version $Rev:: 3162         $
+ * @date    $Date:: 2024-07-23 #$
  * @brief   This file provides all the miscellaneous firmware functions.
  *************************************************************************************************************
  * @attention
@@ -218,6 +218,99 @@ void SYSTICK_SetReloadValue(u32 SysTick_Reload)
 
   SysTick->LOAD = SysTick_Reload;
 }
+
+#if 0
+// Copy the code below to the begin of the main().
+// START
+
+  #if (HTCFG_STACK_USAGE_ANALYSIS == 1)
+  /* !!! NOTICE !!!
+     Please update the Keil HT32 PACK and HT32 Firmware Library to the latest version to make sure the
+     Stack Usage Analysis function works properly.
+  */
+  /*
+    Set HTCFG_STACK_USAGE_ANALYSIS as 1 in the "ht32xxxxxx_conf.h" to enable Stack Usage Analysis feature.
+    This feature is only applicable to the Keil MDK-ARM. Please call the "StackUsageAnalysisInit()" function
+    in the begin of the "main()".
+    The "StackUsageAnalysisInit()" parameter shall be the start address of the vector table.
+    Under Keil Debug mode, tick "View > Watch Window > HT32 Stack Usage Analysis" to show the stack usage
+    information. Those information is only valid after calling "StackUsageAnalysisInit()" function.
+  */
+  StackUsageAnalysisInit(0x00000000);
+  #endif
+
+// END
+#endif
+
+#if (HTCFG_STACK_USAGE_ANALYSIS == 1)
+#if defined (__CC_ARM)
+#define STACKLIMITADDR  0x20000010
+#define STACKSTART      0x20000014
+u32 _StackLimit __attribute__((at(STACKLIMITADDR)))= HT_SRAM_BASE + LIBCFG_RAM_SIZE;
+u32 _StackStart __attribute__((at(STACKSTART)))= HT_SRAM_BASE;
+/*********************************************************************************************************//**
+  * @brief  Stack Usage Analysis Init
+  * @retval None
+  ***********************************************************************************************************/
+__ASM void StackUsageAnalysisInit(u32 addr)
+{
+  extern _StackLimit;
+  extern __HT_check_sp;
+  extern _StackStart;
+  LDR R0, [r0]
+  LDR R1, =_StackLimit
+  STR R0, [r1]
+
+  LDR R0, =__HT_check_sp
+  LDR R1, =_StackStart
+  STR R0, [r1]
+  MOV R1, SP
+  LDR R2, =0xCDCDCDCD
+  LDR R3, =0xABABABAB
+  STR R3, [ R0 ]
+  B Loop_Check
+Loop
+  STR R2, [ R0 ]
+Loop_Check
+  ADDS R0, R0, #0x04
+  CMP R0, R1
+  BLT Loop
+  BX LR
+  ALIGN
+}
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+#define STACKLIMITADDR  "0x20000010"
+#define STACKSTART      "0x20000014"
+u32 _StackLimit __attribute__((section(".ARM.__at_"STACKLIMITADDR))) = HT_SRAM_BASE + LIBCFG_RAM_SIZE;
+u32 _StackStart __attribute__((section(".ARM.__at_"STACKSTART))) = HT_SRAM_BASE;
+/*********************************************************************************************************//**
+  * @brief  Stack Usage Analysis Init
+  * @retval None
+  ***********************************************************************************************************/
+__attribute__((noinline)) void StackUsageAnalysisInit(u32 addr)
+{
+  __ASM volatile ("  LDR R0, [r0]");
+  __ASM volatile ("  LDR R1, =_StackLimit");
+  __ASM volatile ("  STR R0, [r1]");
+
+  __ASM volatile ("  LDR R0, =__HT_check_sp");
+  __ASM volatile ("  LDR R1, =_StackStart");
+  __ASM volatile ("  STR R0, [r1]");
+  __ASM volatile ("  MOV R1, SP");
+  __ASM volatile ("  LDR R2, =0xCDCDCDCD");
+  __ASM volatile ("  LDR R3, =0xABABABAB");
+  __ASM volatile ("  STR R3, [ R0 ]");
+  __ASM volatile ("  B Loop_Check");
+  __ASM volatile ("Loop:");
+  __ASM volatile ("  STR R2, [ R0 ]");
+  __ASM volatile ("Loop_Check:");
+  __ASM volatile ("  ADDS R0, R0, #0x04");
+  __ASM volatile ("  CMP R0, R1");
+  __ASM volatile ("  BLT Loop");
+  __ASM volatile ("  BX LR");
+}
+#endif
+#endif
 /**
   * @}
   */

+ 23 - 23
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_aes.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_aes.c
- * @version $Rev:: 2788         $
- * @date    $Date:: 2022-11-24 #$
+ * @version $Rev:: 3174         $
+ * @date    $Date:: 2024-08-27 #$
  * @brief   This file provides all the AES firmware functions.
  *************************************************************************************************************
  * @attention
@@ -331,7 +331,7 @@ u32 AES_GetOutputData(HT_AES_TypeDef* HT_AESn)
  * @param keySize: Key table's size
  * @retval None
  ************************************************************************************************************/
-void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, uc8* Key, u32 keySize)
+void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, u32 *Key, u32 keySize)
 {
   u32 i;
   u32 uCRTemp = HT_AESn->CR & (~(0x00000060UL));
@@ -353,12 +353,12 @@ void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, uc8* Key, u32 keySize)
   }
   HT_AESn->CR = uCRTemp;
 
-  for (i = 0; i < keySize; i += 4)
+  for (i = 0; i < (keySize / 4); i++)
   {
     #if (LIBCFG_AES_SWAP)
-    HT_AESn->KEYR[i >> 2] = __REV(*(u32*)&Key[i]);
+    HT_AESn->KEYR[i] = __REV(*&Key[i]);
     #else
-    HT_AESn->KEYR[i >> 2] = *(u32*)&Key[i];
+    HT_AESn->KEYR[i] = *&Key[i];
     #endif
   }
 
@@ -371,17 +371,17 @@ void AES_SetKeyTable(HT_AES_TypeDef* HT_AESn, uc8* Key, u32 keySize)
  * @param Vector:
  * @retval None
  ************************************************************************************************************/
-void AES_SetVectorTable(HT_AES_TypeDef* HT_AESn, uc8* Vector)
+void AES_SetVectorTable(HT_AES_TypeDef* HT_AESn, u32 *Vector)
 {
   int i;
   Assert_Param(IS_AES(HT_AESn));
 
-  for (i = 0; i < 16; i += 4)
+  for (i = 0; i < 4; i++)
   {
     #if (LIBCFG_AES_SWAP)
-    HT_AESn->IVR[i >> 2] = __REV(*(u32*)&Vector[i]);
+    HT_AESn->IVR[i] = __REV(*&Vector[i]);
     #else
-    HT_AESn->IVR[i >> 2] = *(u32*)&Vector[i];
+    HT_AESn->IVR[i] = *&Vector[i];
     #endif
   }
 }
@@ -398,10 +398,10 @@ void AES_SetVectorTable(HT_AES_TypeDef* HT_AESn, uc8* Vector)
  ************************************************************************************************************/
 ErrStatus _AES_CryptData(HT_AES_TypeDef* HT_AESn,
                          AES_DIR_Enum dir,
-                         uc8 *iv,
+                         u32 *iv,
                          u32 length,
-                         uc8 *inputData,
-                         u8 *outputData)
+                         u32 *inputData,
+                         u32 *outputData)
 {
   /*AES Data blocks 16 byte                                                                                 */
   if ((length % 16) != 0)
@@ -423,8 +423,8 @@ ErrStatus _AES_CryptData(HT_AES_TypeDef* HT_AESn,
   HT_AESn->CR = (HT_AESn->CR & 0xFFFFFFFD) | dir;
 
   /*Create input/output data                                                                                */
-  gpu32InputBuff = (u32*)inputData;
-  gpu32OutputBuff = (u32*)outputData;
+  gpu32InputBuff = inputData;
+  gpu32OutputBuff = outputData;
 
   /*Init Index                                                                                              */
   gu32OutputIndex = 0;
@@ -451,8 +451,8 @@ ErrStatus _AES_CryptData(HT_AES_TypeDef* HT_AESn,
 ErrStatus AES_ECB_CryptData(HT_AES_TypeDef* HT_AESn,
                        AES_DIR_Enum dir,
                        u32 length,
-                       uc8 *inputData,
-                       u8 *outputData)
+                       u32 *inputData,
+                       u32 *outputData)
 {
   return _AES_CryptData(HT_AESn,
                         dir,
@@ -474,10 +474,10 @@ ErrStatus AES_ECB_CryptData(HT_AES_TypeDef* HT_AESn,
  ************************************************************************************************************/
 ErrStatus AES_CBC_CryptData(HT_AES_TypeDef* HT_AESn,
                        AES_DIR_Enum dir,
-                       uc8 *iv,
+                       u32 *iv,
                        u32 length,
-                       uc8 *inputData,
-                       u8 *outputData)
+                       u32 *inputData,
+                       u32 *outputData)
 {
   return _AES_CryptData(HT_AESn,
                         dir,
@@ -497,10 +497,10 @@ ErrStatus AES_CBC_CryptData(HT_AES_TypeDef* HT_AESn,
  * @retval SUCCESS or ERROR
  ************************************************************************************************************/
 ErrStatus AES_CTR_CryptData(HT_AES_TypeDef* HT_AESn,
-                       uc8 *iv,
+                       u32 *iv,
                        u32 length,
-                       uc8 *inputData,
-                       u8 *outputData)
+                       u32 *inputData,
+                       u32 *outputData)
 {
   return _AES_CryptData(HT_AESn,
                         AES_DIR_ENCRYPT,

+ 52 - 52
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_ckcu.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_ckcu.c
- * @version $Rev:: 2972         $
- * @date    $Date:: 2023-10-28 #$
+ * @version $Rev:: 3181         $
+ * @date    $Date:: 2024-10-15 #$
  * @brief   This file provides all the Clock Control Unit firmware functions.
  *************************************************************************************************************
  * @attention
@@ -432,9 +432,9 @@ void CKCU_SetCKREFPrescaler(CKCU_CKREFPRE_TypeDef CKREFPRE)
 /********************************************************************************************************//**
  * @brief Configure the CK_USART prescaler.
  * @param URPRE: specify the prescaler value.
- *        This parameter can be:
- *        @arg CKCU_URPRE_DIV1: USART clock divided by 1
- *        @arg CKCU_URPRE_DIV2: USART clock divided by 2
+ *   This parameter can be:
+ *     @arg CKCU_URPRE_DIV1: USART clock divided by 1
+ *     @arg CKCU_URPRE_DIV2: USART clock divided by 2
  * @retval None
  ************************************************************************************************************/
 void CKCU_SetUSARTPrescaler(CKCU_URPRE_TypeDef URPRE)
@@ -574,28 +574,28 @@ u32 CKCU_GetPLLFrequency(void)
 /*********************************************************************************************************//**
  * @brief Configure the APB peripheral prescaler.
  * @param Perip: specify the APB peripheral.
- *        This parameter can be:
- *        @arg CKCU_PCLK_I2C0, CKCU_PCLK_I2C1,
- *             CKCU_PCLK_SPI0, CKCU_PCLK_SPI1,
- *             CKCU_PCLK_BFTM0, CKCU_PCLK_BFTM1,
- *             CKCU_PCLK_MCTM0, CKCU_PCLK_MCTM1,
- *             CKCU_PCLK_GPTM0, CKCU_PCLK_GPTM1,
- *             CKCU_PCLK_USART0, CKCU_PCLK_USART1,
- *             CKCU_PCLK_UART0, CKCU_PCLK_UART1,
- *             CKCU_PCLK_AFIO, CKCU_PCLK_EXTI, CKCU_PCLK_ADC, CKCU_PCLK_CMP,
- *             CKCU_PCLK_WDTR, CKCU_PCLK_BKPR,
- *             CKCU_PCLK_SCI0, CKCU_PCLK_SCI1,
- *             CKCU_PCLK_I2S,
- *             CKCU_PCLK_SCTM0, CKCU_PCLK_SCTM1,
- *             CKCU_PCLK_PWM0
+ *   This parameter can be:
+ *     @arg CKCU_PCLK_I2C0, CKCU_PCLK_I2C1,
+ *          CKCU_PCLK_SPI0, CKCU_PCLK_SPI1,
+ *          CKCU_PCLK_BFTM0, CKCU_PCLK_BFTM1,
+ *          CKCU_PCLK_MCTM0, CKCU_PCLK_MCTM1,
+ *          CKCU_PCLK_GPTM0, CKCU_PCLK_GPTM1,
+ *          CKCU_PCLK_USART0, CKCU_PCLK_USART1,
+ *          CKCU_PCLK_UART0, CKCU_PCLK_UART1,
+ *          CKCU_PCLK_AFIO, CKCU_PCLK_EXTI, CKCU_PCLK_ADC, CKCU_PCLK_CMP,
+ *          CKCU_PCLK_WDTR, CKCU_PCLK_BKPR,
+ *          CKCU_PCLK_SCI0, CKCU_PCLK_SCI1,
+ *          CKCU_PCLK_I2S,
+ *          CKCU_PCLK_SCTM0, CKCU_PCLK_SCTM1,
+ *          CKCU_PCLK_PWM0
  * @param PCLKPrescaler: specify the value of prescaler.
- *        This parameter can be:
- *        @arg CKCU_APBCLKPRE_DIV1:  specific peripheral clock = PCLK / 1  (inapplicable to BKPRCLK)
- *        @arg CKCU_APBCLKPRE_DIV2:  specific peripheral clock = PCLK / 2  (inapplicable to BKPRCLK)
- *        @arg CKCU_APBCLKPRE_DIV4:  specific peripheral clock = PCLK / 4
- *        @arg CKCU_APBCLKPRE_DIV8:  specific peripheral clock = PCLK / 8
- *        @arg CKCU_APBCLKPRE_DIV16: specific peripheral clock = PCLK / 16 (BKPRCLK only)
- *        @arg CKCU_APBCLKPRE_DIV32: specific peripheral clock = PCLK / 32 (BKPRCLK only)
+ *   This parameter can be:
+ *     @arg CKCU_APBCLKPRE_DIV1:  specific peripheral clock = PCLK / 1  (inapplicable to BKPRCLK)
+ *     @arg CKCU_APBCLKPRE_DIV2:  specific peripheral clock = PCLK / 2  (inapplicable to BKPRCLK)
+ *     @arg CKCU_APBCLKPRE_DIV4:  specific peripheral clock = PCLK / 4
+ *     @arg CKCU_APBCLKPRE_DIV8:  specific peripheral clock = PCLK / 8
+ *     @arg CKCU_APBCLKPRE_DIV16: specific peripheral clock = PCLK / 16 (BKPRCLK only)
+ *     @arg CKCU_APBCLKPRE_DIV32: specific peripheral clock = PCLK / 32 (BKPRCLK only)
  * @retval None
  ************************************************************************************************************/
 void CKCU_SetPeripPrescaler(CKCU_PeripPrescaler_TypeDef Perip, CKCU_APBCLKPRE_TypeDef PCLKPrescaler)
@@ -607,28 +607,28 @@ void CKCU_SetPeripPrescaler(CKCU_PeripPrescaler_TypeDef Perip, CKCU_APBCLKPRE_Ty
     Prescaler -= 2;
   }
   Perip &= 0x0000001F;
-  CKCU_BF_WRITE(*PCSR, (3UL << Perip), Perip, Prescaler);
+  CKCU_BF_WRITE(*PCSR, (3UL << Perip), Perip, (Prescaler & 0x3));
 }
 #endif
 
 /*********************************************************************************************************//**
  * @brief Return the operating frequency of the specific APB peripheral.
  * @param Perip: specify the APB peripheral.
- *        This parameter can be:
- *        @arg CKCU_PCLK_I2C0, CKCU_PCLK_I2C1,
- *             CKCU_PCLK_SPI0, CKCU_PCLK_SPI1,
- *             CKCU_PCLK_BFTM0, CKCU_PCLK_BFTM1,
- *             CKCU_PCLK_MCTM0, CKCU_PCLK_MCTM1,
- *             CKCU_PCLK_GPTM0, CKCU_PCLK_GPTM1,
- *             CKCU_PCLK_USART0, CKCU_PCLK_USART1,
- *             CKCU_PCLK_UART0, CKCU_PCLK_UART1,
- *             CKCU_PCLK_AFIO, CKCU_PCLK_EXTI, CKCU_PCLK_ADC, CKCU_PCLK_CMP,
- *             CKCU_PCLK_WDTR, CKCU_PCLK_BKPR,
- *             CKCU_PCLK_SCI0, CKCU_PCLK_SCI1,
- *             CKCU_PCLK_I2S,
- *             CKCU_PCLK_I2S,
- *             CKCU_PCLK_SCTM0, CKCU_PCLK_SCTM1,
- *             CKCU_PCLK_PWM0
+ *   This parameter can be:
+ *     @arg CKCU_PCLK_I2C0, CKCU_PCLK_I2C1,
+ *          CKCU_PCLK_SPI0, CKCU_PCLK_SPI1,
+ *          CKCU_PCLK_BFTM0, CKCU_PCLK_BFTM1,
+ *          CKCU_PCLK_MCTM0, CKCU_PCLK_MCTM1,
+ *          CKCU_PCLK_GPTM0, CKCU_PCLK_GPTM1,
+ *          CKCU_PCLK_USART0, CKCU_PCLK_USART1,
+ *          CKCU_PCLK_UART0, CKCU_PCLK_UART1,
+ *          CKCU_PCLK_AFIO, CKCU_PCLK_EXTI, CKCU_PCLK_ADC, CKCU_PCLK_CMP,
+ *          CKCU_PCLK_WDTR, CKCU_PCLK_BKPR,
+ *          CKCU_PCLK_SCI0, CKCU_PCLK_SCI1,
+ *          CKCU_PCLK_I2S,
+ *          CKCU_PCLK_I2S,
+ *          CKCU_PCLK_SCTM0, CKCU_PCLK_SCTM1,
+ *          CKCU_PCLK_PWM0
  * @retval Frequency in Hz
  ************************************************************************************************************/
 u32 CKCU_GetPeripFrequency(CKCU_PeripPrescaler_TypeDef Perip)
@@ -953,10 +953,10 @@ void CKCU_PeripClockConfig(CKCU_PeripClockConfig_TypeDef Clock, ControlStatus Cm
 /*********************************************************************************************************//**
  * @brief Configure the reference clock of HSI auto-trim function.
  * @param CLKSRC: specify the clock source.
- *        This parameter can be:
- *        @arg CKCU_ATC_LSE: LSE is selected as reference clock
- *        @arg CKCU_ATC_USB: USB is selected as reference clock
- *        @arg CKCU_ATC_CKIN: External pin (CKIN) is selected as reference clock
+ *   This parameter can be:
+ *     @arg CKCU_ATC_LSE: LSE is selected as reference clock
+ *     @arg CKCU_ATC_USB: USB is selected as reference clock
+ *     @arg CKCU_ATC_CKIN: External pin (CKIN) is selected as reference clock
  * @retval None
  ************************************************************************************************************/
 void CKCU_HSIAutoTrimClkConfig(CKCU_ATC_TypeDef CLKSRC)
@@ -983,9 +983,9 @@ void CKCU_ATCInit(CKCU_ATCInitTypeDef* ATC_InitStruct)
 /*********************************************************************************************************//**
  * @brief Automatic Trimming Algorithm Mode Selection.
  * @param Algo: Search Algorithm.
- *        This parameter can be:
- *        @arg CKCU_ATC_BINARY_SEARCH: Auto Trimming Controller is used binary search to approach the target range
- *        @arg CKCU_ATC_LINEAR_SEARCH: Auto Trimming Controller is used linear search to approach the target range
+ *   This parameter can be:
+ *     @arg CKCU_ATC_BINARY_SEARCH: Auto Trimming Controller is used binary search to approach the target range
+ *     @arg CKCU_ATC_LINEAR_SEARCH: Auto Trimming Controller is used linear search to approach the target range
  * @retval None
  ***********************************************************************************************************/
 void CKCU_HSIAutoTrimAlgorithm(u32 Algo)
@@ -996,9 +996,9 @@ void CKCU_HSIAutoTrimAlgorithm(u32 Algo)
 /*********************************************************************************************************//**
  * @brief Lock Target Range Selection.
  * @param Tolerance: Variation Tolerance.
- *        This parameter can be:
- *        @arg CKCU_ATC_DOUBLE_PRECISION: 0.2 % variation
- *        @arg CKCU_ATC_SINGLE_PRECISION: 0.1 % variation
+ *   This parameter can be:
+ *     @arg CKCU_ATC_DOUBLE_PRECISION: 0.2 % variation
+ *     @arg CKCU_ATC_SINGLE_PRECISION: 0.1 % variation
  * @retval None
  ***********************************************************************************************************/
 void CKCU_HSIAutoTrimFreqTolerance(u32 Tolerance)

+ 2 - 4
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_rtc.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_rtc.c
- * @version $Rev:: 2233         $
- * @date    $Date:: 2020-10-13 #$
+ * @version $Rev:: 2984         $
+ * @date    $Date:: 2023-11-23 #$
  * @brief   This file provides all the RTC firmware functions.
  *************************************************************************************************************
  * @attention
@@ -138,12 +138,10 @@ void RTC_LSECmd(ControlStatus NewState)
   if (NewState == DISABLE)
   {
     BB_LSE_EN = 0;
-    while (HT_CKCU->GCSR & 0x10);
   }
   else
   {
     BB_LSE_EN = 1;
-    while ((HT_CKCU->GCSR & 0x10) == 0);
   }
 }
 

+ 9 - 2
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_spi.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_spi.c
- * @version $Rev:: 2797         $
- * @date    $Date:: 2022-11-28 #$
+ * @version $Rev:: 3086         $
+ * @date    $Date:: 2024-03-28 #$
  * @brief   This file provides all the SPI firmware functions.
  *************************************************************************************************************
  * @attention
@@ -325,6 +325,11 @@ void SPI_SoftwareSELCmd(HT_SPI_TypeDef* SPIx, u32 SPI_SoftwareSEL)
   }
   else
   {
+    /* Inactive SEL pin needs to ensure the transmission has ended. If the program flow cannot guarantee    */
+    /* SPI transmission completion, you can enable the procedure below.                                     */
+    #if 0
+    while (SPIx->SR & SPI_FLAG_BUSY);      /* Wait until SPI NOT BUSY                                       */
+    #endif
     SPIx->CR0 &= SPI_SEL_INACTIVE;
   }
 }
@@ -560,6 +565,8 @@ void SPI_DUALCmd(HT_SPI_TypeDef* SPIx, ControlStatus NewState)
   Assert_Param(IS_SPI(SPIx));
   Assert_Param(IS_CONTROL_STATUS(NewState));
 
+  while (SPIx->SR & SPI_FLAG_BUSY);      /* Wait until SPI NOT BUSY                                         */
+
   (NewState == ENABLE)?(SPIx->CR0 |= CR0_DUALEN_SET):(SPIx->CR0 &= CR0_DUALEN_RESET);
 }
 

+ 5 - 5
bsp/ht32/libraries/HT32_STD_1xxxx_FWLib/library/HT32F1xxxx_Driver/src/ht32f1xxxx_wdt.c

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    ht32f1xxxx_wdt.c
- * @version $Rev:: 2797         $
- * @date    $Date:: 2022-11-28 #$
+ * @version $Rev:: 3103         $
+ * @date    $Date:: 2024-06-24 #$
  * @brief   This file provides all the WDT firmware functions.
  *************************************************************************************************************
  * @attention
@@ -109,9 +109,9 @@ void WDT_Cmd(ControlStatus NewState)
  * @brief Configure the WDT to run or halt in sleep and deep sleep1 mode.
  * @param WDT_Mode:
  *   This parameter can be one of the following values:
- *     @arg MODE0_WDTSHLT_BOTH  : WDT runs in sleep and deep sleep1 mode
- *     @arg MODE0_WDTSHLT_SLEEP : WDT runs in sleep mode
- *     @arg MODE0_WDTSHLT_HALT  : WDT halts in sleep and deep sleep1 mode
+ *     @arg WDT_SLEEP_HALT_NONE      : WDT no halt
+ *     @arg WDT_SLEEP_HALT_DEEPSLEEP : WDT halts in deep sleep1 mode
+ *     @arg WDT_SLEEP_HALT_ALL       : WDT halts in sleep and deep sleep1 mode
  * @retval None
  ************************************************************************************************************/
 void WDT_HaltConfig(u32 WDT_Mode)

+ 273 - 8
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/Release_Notes.txt

@@ -1,7 +1,7 @@
 /*********************************************************************************************************//**
  * @file    Release_Notes.txt
- * @version V1.9.1
- * @date    2023-12-22
+ * @version V1.14.3
+ * @date    2024-11-29
  * @brief   The Release notes of HT32 Firmware Library.
  *************************************************************************************************************
  * @attention
@@ -48,20 +48,24 @@
 //   HT32F57331, HT32F57341
 //   HT32F57342, HT32F57352
 //   HT32F59041, HT32F59741
-//   HT32F59046, HT32F59746
+//   HT32F59045
+//   HT32F59746
 //   HT32F5826, HT32F5828
 //   HT32F0006
 //   HT32F0008
 //   HT32F52142
 //   HT32F61030, HT32F61041
+//   HT32F61052
 //   HT32F61141
 //   HT32F61244, HT32F61245
 //   HT32F61352
 //   HT32F61355, HT32F61356, HT32F61357
 //   HT32F61630, HT32F61641
+//   HT32F61730, HT32F61741
 //   HT32F62030, HT32F62040, HT32F62050
 //   HT32F65230, HT32F65240
 //   HT32F65232
+//   HT32F66242, HT32F66246
 //   HT32F67041, HT32F67051
 //   HT32F67232
 //   HT32F67233
@@ -71,6 +75,267 @@
 //   HT50F3200S, HT50F3200T
 //   HF5032
 //   MXTX6306
+//   MXTX52231, MXTX52352
+//   NW32F61242
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.14.3_8294                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-11-29
+  Main Changes
+  + Add new device support.
+    - HT32F61052
+
+  Others
+  + Update comment, format, typing error, and coding style.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.14.2_8286                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-11-26
+  Main Changes
+  + Add example support of HT32F65232.
+  + Fix "ADC/OneShot_SWTrigger/ht32f5xxxx_01_it.h" parameter error.
+    - Rename "ADC_IRQHandler" to "HTCFG_ADC_IRQHandler"
+  + Add the "DISABLE_BOOTPIN_OUTPUT" definition in "CKCU/Clock_Configuration/ht32_board_config.h" to prevent
+    circuit conflicts on certain development boards.
+    - HT32F65232_DVB
+    - HT32F66242_DVB
+    - HT32F66246_DVB
+  + Modify the "OPA/OPA_Enable" example to use a single OPA and add "ht32_board_config.h".
+  + Add the "LED_HIGH_ACTIVE" definition to the following files and Fix "ht32f5xxxx_board_01.c" to align with
+    the LED circuit on the development board:
+    - bm18b367a_dvb.h
+    - bm53b367a_dvb.h
+    - ht32f65232_dvb.h
+    - ht32f65240_dvb.h
+    - ht32f66242_dvb.h
+    - ht32f66246_dvb.h
+
+  Others
+  + Update comment, format, typing error, and coding style.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.14.1_8273                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-11-08
+  Main Changes
+  + Add new device support.
+    - HT32F66242, HT32F66246
+  + Add new IP drivers.
+    - Programmable Gain Amplifier, "ht32f65xxx_66xxx_pga.c/h"
+    - Coordinate Rotation Digital Computer, "ht32f66xxx_cordic.c/h"
+    - Proportion Integration Differentiation driver, "ht32f66xxx_pid.c/h"
+  + Add new examples:
+    - "CORDIC/CosSin_Interrupt"
+    - "CORDIC/CosSin_Polling"
+    - "PGA/Comparator"
+    - "PGA/Inverting"
+    - "PGA/InvertingAdder"
+    - "PGA/NonInverting"
+    - "PGA/NonInvertingAdder"
+    - "PGA/VoltageFollower"
+    - "PID/ChangePara_inSameMode"
+    - "PID/Interrupt"
+    - "PID/MultiMode"
+    - "PID/Polling"
+  + Add the "LIBCFG_CKCU_NO_LPCR" definition in "ht32f65230_40_libcfg.h" and "ht32f65232_libcfg.h" to
+    fix the "CKCU_BKISOCmd" the redundant flow of the HT32F65230/65240 and HT32F65232 (related to the Low Power Control).
+  + Add the "LIBCFG_PWRCU_NO_DS2_MODE" definition in "ht32f65230_40_libcfg.h" and "ht32f65232_libcfg.h" to
+    fix the "PWRCU_DeepSleep2()" and "PWRCU_GetDMOSStatus()" the redundant flow
+    of the HT32F65230/65240 and HT32F65232 (related to the Deep-Sleep2 Mode).
+  + Remove the "LIBCFG_PWRCU_NO_PORF" definition in "ht32f65232_libcfg.h" to fix the "PWRCU_DeInit()" 
+    missing flow of the HT32F65232 (related to the Power-On Reset Flag).
+  + Change the HTCFG_TIMER_PRESCALER value according to HTCFG_PULSE_SYS_CLK is less 
+    than or greater than 60 MHz to ensure that the Counter-Reload value is less than 0xFFFF.
+    - "TM/UpdateEvent"
+    - "TM/SinglePulseMode"
+    - "TM/TriggerCounter"
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Change define "LIBCFG_CMP_65x_VER" to "LIBCFG_CMP_65x_66x_VER"  for the HT32F65xxx and HT32F66xxx series ICs.
+  + Add "IS_ADC_TRIG_CMP2()" macro, for use to confirm the adc trigger is CMP2 in ht32f65xxx_66xxx_adc.h
+  + Fix the bit position error in the "IS_ADC_INT" macro.
+  + Change define "LIBCFG_TM_652XX_V1" to "LIBCFG_TM_65X_66X_V1"
+  + Change define "LIBCFG_TM_65232" to "LIBCFG_TM_65X_66X_BK_FROM_CMP" and "LIBCFG_TM_65X_66X_RECCDI"
+
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.13.2_8218                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-10-23
+  Main Changes
+  + Fix "CAN_Legacy/TxRxLoopback" example compiling error.
+
+  Others
+  + Update comment, format, typing error, and coding style.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.13.1_8190                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-09-24
+  Main Changes
+  + Add new device support.
+    - NW32F61242
+  + Change the CAN IP Driver, switch to the latest designed API.
+  + Add new examples.
+    "CAN/Recv_DATA"
+    "CAN/Recv_Interrupt"
+    "CAN/Recv_Mask_Filter"
+    "CAN/Recv_REMOTE"
+    "CAN/Send_DATA"
+    "CAN/Send_Recv_DATA"
+    "CAN/Send_REMOTE"
+  + Fix "AES_SetKeyTable()" and "AES_SetVectorTable()" Key and Vector index errors, which cause incorrect AES
+    encryption and decryption.
+  + Modify "I2C/7_bit_mode" example, fix pin assignment error of HT32F50343.
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Update AES examples.
+    - Change the key, IV, and plain text from hex array to string, making the result easier to compare with
+      online tools.
+    - Add expected cipher text and compare it with the MCU's H/W AES result as an error-proofing mechanism.
+  + Remove device support.
+    - HT32F57541, HT32F57552
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.12.1_7949                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-08-08
+  Main Changes
+  + Add new device support.
+    - HT32F57541
+    - HT32F57552
+  + Update "uart_module.c" to fix the UART0 ~ UART3 not work issue of BM53A367A.
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Change path of the "Holtek.HT32_DFP.latest.pack".
+  + Minor changes were made to the USBD "HID_Keyboard_Virtual_COM" and "Virtual_COM" examples.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.11.1_7908                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-07-26
+  Main Changes
+  + Add new device support.
+    - HT32F59045
+    - MXTX52231, MXTX52352
+  + Remove device support.
+    - HT32F59046
+  + Rename WDT parameters.
+    - Old Name                          | New Name
+    - --------------------------------- | ----------------------------
+    - "MODE0_WDTSHLT_BOTH"              | "WDT_SLEEP_HALT_NONE"
+    - "MODE0_WDTSHLT_SLEEP"             | "WDT_SLEEP_HALT_DEEPSLEEP"
+    - "MODE0_WDTSHLT_SLEEP"             | "WDT_SLEEP_HALT_ALL"
+  + Update below files to support the BMduino shield/module Keil Driver.
+    - Modify :"utilities/bmduino_board.h".
+    - Add    :"utilities/bmduino_check.h".
+  + Modify "void StackUsageAnalysisInit(void)". Added parameter "u32 addr" and reimplemented as
+    "void StackUsageAnalysisInit(u32 addr);"
+  + Fix the below examples ADC_IRQHandler define error of HT32F65232 and HT32F65240.
+    - "ADC/AnalogWatchdog"
+    - "ADC/Continuous_Potentiometer"
+    - "ADC/Discontinuous_EXTITrigger"
+    - "ADC/OneShot_PWMTrigger"
+    - "ADC/OneShot_PWMTrigger_with_Delay"
+    - "ADC/OneShot_SWTrigger"
+  + Modify example IO define of HT32F65232.
+    - "ADC/AnalogWatchdog"
+    - "ADC/Continuous_Potentiometer"
+    - "ADC/Discontinuous_EXTITrigger"
+    - "ADC/OneShot_PWMTrigger"
+    - "ADC/OneShot_PWMTrigger_with_Delay"
+    - "ADC/OneShot_SWTrigger"
+    - "ADC/OneShot_TMTrigger_PDMA"
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Update ht32f5xxxx_01.h.
+    - Modify the preprocessor define of "__ALIGN4", "__PACKED_H", "__PACKED_F" for old Arm Compiler V6.
+  + Modify "void FLASH_SetRemappingMode(FLASH_Vector FLASH_BOOT_x);". Changed parameter name from
+    "RemapMode" to "FLASH_BOOT_x".
+  + Modify comments to remind users about "Stack Usage Analysis" notification.
+  + Remove redefined "PWRRST_SET" setting in "ht32f5xxxx_pwrcu.c".
+  + Update CKCU API. Enhanced program stability with robustness settings for parameter "PCLKPrescaler"
+    in "CKCU_SetPeripPrescaler(..., CKCU_APBCLKPRE_TypeDef PCLKPrescaler)".
+  + Update I2C Master middleware, improve setting way and fix minor errors.
+  + Update the following middleware to support the BMduino Keil Driver.
+    "utilities/middleware/i2c_master.c"
+    "utilities/middleware/i2c_master.h"
+    "utilities/middleware/spi_module.c"
+    "utilities/middleware/spi_module.h"
+    "utilities/middleware/uart_module.c"
+    "utilities/middleware/uart_module.h"
+  + Update xxTM IP Driver
+    - Remove redundant "TM_ClearOREFConfig()" function.
+  + Update "DAC_Cmd()" of "ht32f5xxxx_dac.c", remove compiler warning of the GNU compiler.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.10.1_7761                                                                        */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-06-11
+  Main Changes
+  + Add new device support.
+    - HT32F61730, HT32F61741
+  + Add new examples.
+    "ADC/BandgapVoltage"
+    "GPIO/SinkCurrentEnhanced"
+  + Update related files of HT32F59046.
+  + Fix the "USE_HT32_CHIP" ID error of HT32F52244 (change from 33 to 35).
+  + Remove "LIBCFG_GPIO_SINK_CURRENT_ENHANCED" setting error for the following part number.
+    HT32F50431/50441
+    HT32F50442/50452
+    HT32F53231/53241
+    HT32F53242/53252
+    HT32F54231/54241
+    HT32F54243/54253
+  + Change the ADC API, "ADC_VREFOutputCmd()" as "ADC_VREFOutputADVREFPCmd()".
+  + Change the CKCU API, "CKCU_Set_HSIReadyCounter" as "CKCU_SetHSIReadyCounter()".
+  + Add "LIBCFG_GPIO_SINK_CURRENT_ENHANCED" setting of HT32F50020/50030.
+  + Improve the thread-safe capability of "utilities/common/ring_buffer.c".
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Update the project file of HT32F61141, change the "ht32f5xxxx_01_usbdconf.h" as ht32f5xxxx_02_usbdconf.h".
+  + Update "SPI_DUALCmd()", "QSPI_QuadCmd()", and "QSPI_DirectionConfig()", make sure the SPI Bus is not busy
+    before changing the settings.
+
+/*----------------------------------------------------------------------------------------------------------*/
+/* HT32_STD_5xxxx_FWLib_V1.9.2_7624                                                                         */
+/*----------------------------------------------------------------------------------------------------------*/
+  Release Date: 2024-02-29
+  Main Changes
+  + Add new examples.
+    "Tips/Checksum_CRC16"
+    "Tips/StackOnTop"
+    "USART/LIN_Master"
+    "USART/LIN_Slave"
+    "CAN/TxRxLoopback"
+  + Add "LIBCFG_CMP_IVREF_CN_IN" define of the following parts, to fix the comparator function/feature
+    missing (select VREF as inverted input).
+    - HT32F50442/50452/53242/53252.
+  + Add HT32 Stack Usage Analysis feature.
+    - Modify "ht32f5xxxx_conf.h", add "HTCFG_STACK_USAGE_ANALYSIS" setting for enabling HT32 Stack Usage
+      Analysis.
+    - Update project templates and "ht32_cm0plus_misc.c/.h", add "StackUsageAnalysisInit()" function to
+      initialize stack.
+    - Update project files, add HT32 Stack Usage Analysis component viewer.
+  + Update and sync "startup_ht32f5xxxx_nn.s" for the "Stack On Top" and "Stack Usage Analysis" feature.
+  + Add "USE_LIBCFG_RAM_SIZE" define in Keil project files for the "Stack On Top" feature.
+  + Modify "ht32f5xxxx_01.h", fix the MCTM alias mismatch.
+    - "MCTMn_IRQHandler" alias from "MCTM0_G_IRQHandler" to "MCTM0_UP_IRQHandler"
+  + Update related middleware (eeprom_emulation and spi_module).
+
+  Others
+  + Update comment, format, typing error, and coding style.
+  + Update e-Link32 Pro/Lite Command line tool as "V1.20" ("utilities/elink32pro/eLink32pro.exe").
+  + Update "TM/PWM_Buzzer/buzzer_pwm.c" to remove redefine alias (they are also defined in "ht32f5xxxx_01.h.).
+  + Update Keil after build setting, add double quotes (") in the command to prevent space in the path issues.
+  + Remove "ht32_board_config.h" from the "PDMA/SoftwareTrigger" example.
 
 /*----------------------------------------------------------------------------------------------------------*/
 /* HT32_STD_5xxxx_FWLib_V1.9.1_7446                                                                         */
@@ -386,8 +651,8 @@
     - Add "gEXTIn_IRQn[]" and "EXTI_GetIRQn()"" macro to map GPIO pin number (0 ~ 15) to "EXTIn_IRQn".
     - Add "GPIO2EXTI()"" macro to map GPIO pin to EXTI Channel.
     - Change "AFIO_EXTISourceConfig()"" API, remove "AFIO_EXTI_CH_Enum" and "AFIO_ESS_Enum".
-      Old: "void AFIO_EXTISourceConfig(AFIO_EXTI_CH_Enum AFIO_EXTI_CH_n, AFIO_ESS_Enum AFIO_ESS_Px);"
-      New: "void AFIO_EXTISourceConfig(u32 GPIO_PIN_NUM_n, u32 GPIO_Px);"
+      Old: void AFIO_EXTISourceConfig(AFIO_EXTI_CH_Enum AFIO_EXTI_CH_n, AFIO_ESS_Enum AFIO_ESS_Px)
+      New: void AFIO_EXTISourceConfig(u32 GPIO_PIN_NUM_n, u32 GPIO_Px)
   + LEDC
     - Fix typing error of the following define.
       Old                  New
@@ -772,7 +1037,7 @@
   + Update GNU project (*.uvprojx), fix the compile error when use new GNU Arm version
     ("gcc-arm-none-eabi-10-2020-q2-preview-win32" or above).
   + Fix Keil compiling error when disable both retarget and MicroLib.
-  + Update "ht32f1xxxx_01.h", fix the compatibility issue when user include "stdbool.h".
+  + Update "ht32f5xxxx_01.h", fix the compatibility issue when user include "stdbool.h".
   + Modify GNU compiler settings, output text file (disassembly) after building the code.
   + Change the startup/system supporting files of specify MCU device.
       Old                                New
@@ -782,12 +1047,12 @@
       startup_ht32f5xxxx_xxx_01.s   to   startup_ht32f5xxxx_xxx_07.s
     - HT32F52344/HT32F52354
       startup_ht32f5xxxx_01.s       to   startup_ht32f5xxxx_03.s
-  + Add "HT32_FWLIB_VER" and "HT32_FWLIB_SVN" in "ht32f1xxxx_lib.h" for the version information of
+  + Add "HT32_FWLIB_VER" and "HT32_FWLIB_SVN" in "ht32f5xxxx_lib.h" for the version information of
     HT32 Firmware Library.
     Example:
     "#define HT32_FWLIB_VER                  (018)"
     "#define HT32_FWLIB_VER                  (5303)"
-  + Add new AFIO define in "ht32f1xxxx_gpio.h".
+  + Add new AFIO define in "ht32f5xxxx_gpio.h".
     - "AFIO_FUN_MCTM0", "AFIO_FUN_MCTM1"
     - "AFIO_FUN_GPTM0", "AFIO_FUN_GPTM1", "AFIO_FUN_GPTM2", "AFIO_FUN_GPTM3"
     - "AFIO_FUN_PWM0", "AFIO_FUN_PWM1", "AFIO_FUN_PWM2", "AFIO_FUN_PWM3"

+ 1 - 28
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/SConscript

@@ -2,38 +2,11 @@ import os
 import sys
 import rtconfig
 from building import *
-
-def get_source(ic_model, file_path, system_path, base_path):
-    source_path = []
-    files_list = []
-    readafter = 0
-    if not os.path.isfile(file_path):
-        return
-
-    with open(file_path, 'r') as file:
-        # content = file.read()
-        for line in file:
-            if readafter == 2 and line.find('>') != -1:
-                break
-            if readafter == 2:
-                files_list.append(line.strip())
-            if line.find(ic_model) != -1:
-                readafter = 1
-            if readafter == 1 and line.find('<') != -1:
-                readafter = 2
-    for line in files_list:
-        if line.find('system') != -1:
-            source_path.append(os.path.join(system_path, line.strip()))
-        else:
-            source_path.append(os.path.join(base_path, line.strip()))
-    return source_path
-
-
 Import('rtconfig')
 
 tools_path = os.path.normpath(os.getcwd() + '../../..' + '/tools')
 sys.path.append(tools_path)
-
+from sdk_dist import get_source
 
 source_file_path = os.path.join(os.getcwd(), 'Source_file')
 base_path = 'library/HT32F5xxxx_Driver/src/'

+ 65 - 88
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Include/ht32f5xxxx_01.h

@@ -1,8 +1,8 @@
 /***************************************************************************//**
  * @file    ht32f5xxxx_01.h
  * @brief   CMSIS Cortex-M0+ Device Peripheral Access Layer Header File
- * @version $Rev:: 7319         $
- * @date    $Date:: 2023-10-28 #$
+ * @version $Rev:: 8260         $
+ * @date    $Date:: 2024-11-05 #$
  *
  * @note
  * Copyright (C) Holtek Semiconductor Inc. All rights reserved.
@@ -255,9 +255,7 @@ typedef enum IRQn
   ADC0_IRQn               = 8,      /*!< ADC0 Interrupt                                                     */
   #if defined(USE_HT32F65230_40)
   ADC1_IRQn               = 9,      /*!< ADC1 Interrupt                                                     */
-  #elif defined(USE_HT32F66242)
-  CORDIC_IRQn             = 9,      /*!< CORDIC global Interrupt                                            */
-  #elif defined(USE_HT32F66246)
+  #elif defined(USE_HT32F66242) || defined(USE_HT32F66246)
   CORDIC_IRQn             = 9,      /*!< CORDIC global Interrupt                                            */
   #endif
   MCTM0_BRK_IRQn          = 10,     /*!< MCTM BRK Interrupt                                                 */
@@ -272,10 +270,8 @@ typedef enum IRQn
   CMP1_IRQn               = 19,     /*!< Comparator1 Interrupt                                              */
   #if defined(USE_HT32F65230_40)
   CMP2_IRQn               = 20,     /*!< Comparator2 Interrupt                                              */
-  #elif defined(USE_HT32F66242)
-  PID_IRQn                = 20,     /*!< PID global Interrupt                                               */
-  #elif defined(USE_HT32F66246)
-  PID_IRQn                = 20,     /*!< PID global Interrupt                                               */
+  #elif defined(USE_HT32F66242) || defined(USE_HT32F66246)
+  PID0_IRQn               = 20,     /*!< PID global Interrupt                                               */
   #endif
   I2C0_IRQn               = 21,     /*!< I2C global Interrupt                                               */
   SPI0_IRQn               = 22,     /*!< SPI global Interrupt                                               */
@@ -538,13 +534,18 @@ typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
 
 #if defined (__CC_ARM)
   #define __ALIGN4 __align(4)
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
+  #define __ALIGN4  __attribute__((aligned(4)))
 #elif defined (__ICCARM__)
   #define __ALIGN4 _Pragma("data_alignment = 4")
 #elif defined (__GNUC__)
   #define __ALIGN4  __attribute__((aligned(4)))
 #endif
 
-#if defined (__GNUC__)
+#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
+  #define __PACKED_H
+  #define __PACKED_F __attribute__ ((packed))
+#elif defined (__GNUC__)
   #define __PACKED_H
   #define __PACKED_F __attribute__ ((packed))
 #elif defined (__ICCARM__) || (__CC_ARM)
@@ -675,14 +676,21 @@ typedef struct
 {
                                  /* ADC0: 0x40010000                                                        */
                                  /* ADC1: 0x40050000                                                        */
-  __IO uint32_t CFGR;            /*!< 0x000         ADC Configuration Register (ADC1 only)                  */
+  __IO uint32_t CFGR;            /*!< 0x000         ADC Configuration Register (ADC1 only for specific      */
+                                 /*!                model)                                                  */
   __IO uint32_t RST;             /*!< 0x004         ADC Reset Register                                      */
   __IO uint32_t CONV;            /*!< 0x008         ADC Regular Conversion Mode Register                    */
   __IO uint32_t HCONV;           /*!< 0x00C         ADC High-priority Conversion Mode Register              */
   __IO uint32_t LST[2];          /*!< 0x010 - 0x014 ADC Conversion List Register                            */
        uint32_t RESERVE0[2];     /*!< 0x018 - 0x01C Reserved                                                */
+  #if defined(USE_HT32F65230_40) || defined(USE_HT32F65232)
   __IO uint32_t HLST;            /*!< 0x020         ADC High-priority Conversion List Register              */
        uint32_t RESERVE1[3];     /*!< 0x024 - 0x02C Reserved                                                */
+  #endif
+  #if defined(USE_HT32F66242) || defined(USE_HT32F66246)
+  __IO uint32_t HLST[3];         /*!< 0x020 - 0x028 ADC High-priority Conversion List Register 0-2          */
+       uint32_t RESERVE1[1];     /*!< 0x02C         Reserved                                                */
+  #endif
   #if defined(USE_HT32F65230_40)
   __IO uint32_t OFR[12];         /*!< 0x030 - 0x05C ADC Input Offset Register 0-11                          */
        uint32_t RESERVE2[4];     /*!< 0x060 - 0x06C Reserved                                                */
@@ -695,12 +703,9 @@ typedef struct
   __IO uint32_t STR[15];         /*!< 0x070 - 0x0A8 ADC Input Sampling Time Register 0-14                   */
        uint32_t RESERVE3[1];     /*!< 0x0AC         Reserved                                                */
   #endif
-  #if defined(USE_HT32F66242)
-       uint32_t RESERVE2[16];    /*!< 0x030 - 0x06C Reserved                                                */
-  __IO uint32_t STR[16];         /*!< 0x070 - 0x0AC ADC Input Sampling Time Register 0-15                   */
-  #endif
-  #if defined(USE_HT32F66246)
-       uint32_t RESERVE2[16];    /*!< 0x030 - 0x06C Reserved                                                */
+  #if defined(USE_HT32F66242) || defined(USE_HT32F66246)
+       uint32_t RESERVE2[15];    /*!< 0x030 - 0x068 Reserved                                                */
+       uint32_t RESERVE3[1];     /*!< 0x06C         Reserved                                                */
   __IO uint32_t STR[16];         /*!< 0x070 - 0x0AC ADC Input Sampling Time Register 0-15                   */
   #endif
   __IO uint32_t DR[8];           /*!< 0x0B0 - 0x0CC ADC Regular Conversion Data Register 0-7                */
@@ -726,15 +731,7 @@ typedef struct
   __IO uint32_t DIESR;           /*!< 0x150         Dual ADC Interrupt Enable/Status Register (ADC1 only)   */
   __IO uint32_t DPDMAR;          /*!< 0x154         Dual ADC PDMA Request Register (ADC1 only)              */
   #endif
-  #if defined(USE_HT32F66242)
-       uint32_t RESERVE8[3];     /*!< 0x144 - 0x14C Reserved                                                */
-  __IO uint32_t VREFCR;          /*!< 0x150         ADC Reference Voltage Control Register                  */
-       uint32_t RESERVE9[3];     /*!< 0x154 - 0x15C Reserved                                                */
-  __IO uint32_t HDR4[8];         /*!< 0x160 - 0x17C ADC High-priority Conversion Data Register 4-11         */
-       uint32_t RESERVE10[4];    /*!< 0x180 - 0x18C Reserved                                                */
-  __IO uint32_t STR16[2];        /*!< 0x190 - 0x194 ADC Input Sampling Time Register 16-17                  */
-  #endif
-  #if defined(USE_HT32F66246)
+  #if defined(USE_HT32F66242) || defined(USE_HT32F66246)
        uint32_t RESERVE8[3];     /*!< 0x144 - 0x14C Reserved                                                */
   __IO uint32_t VREFCR;          /*!< 0x150         ADC Reference Voltage Control Register                  */
        uint32_t RESERVE9[3];     /*!< 0x154 - 0x15C Reserved                                                */
@@ -909,7 +906,7 @@ typedef struct
   __IO uint32_t DOUTR;           /*!< 0x020         Data Output Register                                    */
   __IO uint32_t SRR;             /*!< 0x024         Output Set and Reset Control Register                   */
   __IO uint32_t RR;              /*!< 0x028         Output Reset Control Register                           */
-  #if defined(USE_HT32F50220_30) || defined(USE_HT32F50231_41) || defined(USE_HT32F54231_41) || defined(USE_HT32F54243_53) || defined(USE_HT32F53231_41) || defined(USE_HT32F53242_52) || defined(USE_HT32F50431_41) || defined(USE_HT32F50442_52)
+  #if defined(USE_HT32F50020_30) || defined(USE_HT32F50220_30) || defined(USE_HT32F50231_41)
   __IO uint32_t SCER;            /*!< 0x02C         Sink Current Enhanced Selection Register                */
   #endif
 } HT_GPIO_TypeDef;
@@ -1055,7 +1052,7 @@ typedef struct
   __IO uint32_t LVDCSR;          /*!< 0x010         Low Voltage/Brown Out Detect Control and Status Register*/
   #if defined(USE_HT32F57342_52)
        uint32_t RESERVE2[2];     /*!< 0x014 ~ 0x18  Reserved                                                */
-  __IO uint32_t LDOSR   ;        /*!< 0x01C         Power Control LDO Status Register                       */
+  __IO uint32_t LDOSR;           /*!< 0x01C         Power Control LDO Status Register                       */
   #endif
   #if defined(USE_HT32F52342_52) || defined(USE_HT32F5826) || defined(USE_HT32F52357_67)
        uint32_t RESERVE3[59];    /*!< 0x014 ~ 0x0FC Reserved                                                */
@@ -1180,7 +1177,7 @@ typedef struct
   #else
        uint32_t RESERVED3[2];  /*!< 0x040 ~ 0x44 Reserved                                                */
   #endif
-  #if defined(USE_HT32F0008) || defined(USE_HT32F50220_30) || defined(USE_HT32F50231_41) || defined(USE_HT32F0006) || defined(USE_HT32F52357_67) || defined(USE_HT32F57342_52) || defined(USE_HT32F57331_41) || defined(USE_HT32F50343) || defined(USE_HT32F54231_41) || defined(USE_HT32F54243_53) || defined(USE_HT32F61244_45) || defined(USE_HT32F53231_41) || defined(USE_HT32F53242_52) || defined(USE_HT32F50431_41) || defined(USE_HT32F50442_52)
+  #if defined(USE_HT32F0008) || defined(USE_HT32F50220_30) || defined(USE_HT32F50231_41) || defined(USE_HT32F0006) || defined(USE_HT32F52357_67) || defined(USE_HT32F57342_52) || defined(USE_HT32F57331_41) || defined(USE_HT32F50343) || defined(USE_HT32F54231_41) || defined(USE_HT32F54243_53) || defined(USE_HT32F61244_45) || defined(USE_HT32F53231_41) || defined(USE_HT32F53242_52) || defined(USE_HT32F50431_41) || defined(USE_HT32F50442_52) || defined(USE_HT32F66242) || defined(USE_HT32F66246)
   __IO uint32_t APBPCSR2;        /*!< 0x048         APB Peripheral Clock Selection Register 2               */
        uint32_t RESERVED4[173];  /*!< 0x04C ~ 0x2FC Reserved                                                */
   #elif defined(USE_HT32F52234_44)
@@ -1190,7 +1187,7 @@ typedef struct
   #else
        uint32_t RESERVED4[174];  /*!< 0x048 ~ 0x2FC Reserved                                                */
   #endif
-  #if !defined(USE_HT32F50020_30)
+  #if !defined(USE_HT32F50020_30) && !defined(USE_HT32F65230_40) && !defined(USE_HT32F65232) && !defined(USE_HT32F66242) && !defined(USE_HT32F66246)
   __IO uint32_t LPCR;            /*!< 0x300         Low Power Control Register                              */
   #else
        uint32_t RESERVED5;       /*!< 0x300         Reserved                                                */
@@ -1799,6 +1796,7 @@ typedef struct
   __IO uint32_t DB1R;            /*!< 0x028         CAN Interface Data B 1 Register                         */
 } HT_CANIF_TypeDef;
 
+
 /**
  * @brief Controller Area Network Global
  */
@@ -1830,6 +1828,7 @@ typedef struct
   __IO uint32_t    MVR1;         /*!< 0x164         Message Valid Register 1                                */
 } HT_CAN_TypeDef;
 
+
 /**
  * @brief Coordinate Rotation Digital Computer
  */
@@ -1841,69 +1840,47 @@ typedef struct
   __IO uint32_t    RDATA;        /*!< 0x008         Result Register                                         */
 } HT_CORDIC_TypeDef;
 
+/**
+ * @brief Proportional Mode parameters
+ */
+typedef struct
+{
+
+  __IO uint32_t LEIR;           /*!< 0x000         Last Error Input Register                                */
+  __IO uint32_t KPIR;           /*!< 0x004         KP Input Register                                        */
+  __IO uint32_t KIIR;           /*!< 0x008         KI Input Register                                        */
+  __IO uint32_t KDIR;           /*!< 0x00C         KD Input Register                                        */
+  __IO uint32_t LIFVR;          /*!< 0x010         Last Integral Function Value Register                    */
+  __IO uint32_t IFVMAXLR;       /*!< 0x014         Integral Function Value Maximum Limitation Register      */
+  __IO uint32_t IFVMINLR;       /*!< 0x018         Integral Function Value Minimum Limitation Register      */
+  __IO uint32_t PIDORLR;        /*!< 0x01C         PID Output Result Limitation Register                    */
+} HT_PIDPARA_TypeDef;
+/**
+  * @}
+  */
+
 /**
  * @brief Proportional Integral Derivative controller
  */
 typedef struct
 {
                                  /* PID: 0x400EC000                                                         */
-  __IO uint32_t CR0;             /*!< 0x000         Control Register 0                                      */
-  __IO uint32_t UI_INPUT;        /*!< 0x004                                                                 */
-  __IO uint32_t ERR_n;           /*!< 0x008                                                                 */
-  __IO uint32_t PID_OUT;         /*!< 0x00C                                                                 */
-  __IO uint32_t SPD1ERR1;        /*!< 0x010                                                                 */
-  __IO uint32_t SPD1KP;          /*!< 0x014                                                                 */
-  __IO uint32_t SPD1KI;          /*!< 0x018                                                                 */
-  __IO uint32_t SPD1KD;          /*!< 0x01C                                                                 */
-  __IO uint32_t SPD1UI1;         /*!< 0x020                                                                 */
-  __IO uint32_t SPD1UI_MAX;      /*!< 0x024                                                                 */
-  __IO uint32_t SPD1UI_MIN;      /*!< 0x028                                                                 */
-  __IO uint32_t SPD1_PIDOUT_LIM; /*!< 0x02C                                                                 */
-  __IO uint32_t IQ1ERR1;         /*!< 0x030                                                                 */
-  __IO uint32_t IQ1KP;           /*!< 0x034                                                                 */
-  __IO uint32_t IQ1KI;           /*!< 0x038                                                                 */
-  __IO uint32_t IQ1KD;           /*!< 0x03C                                                                 */
-  __IO uint32_t IQ1UI1;          /*!< 0x040                                                                 */
-  __IO uint32_t IQ1UI_MAX;       /*!< 0x044                                                                 */
-  __IO uint32_t IQ1UI_MIN;       /*!< 0x048                                                                 */
-  __IO uint32_t IQ1_PIDOUT_LIM;  /*!< 0x04C                                                                 */
-  __IO uint32_t ID1ERR1;         /*!< 0x050                                                                 */
-  __IO uint32_t ID1KP;           /*!< 0x054                                                                 */
-  __IO uint32_t ID1KI;           /*!< 0x058                                                                 */
-  __IO uint32_t ID1KD;           /*!< 0x05C                                                                 */
-  __IO uint32_t ID1UI1;          /*!< 0x060                                                                 */
-  __IO uint32_t ID1UI_MAX;       /*!< 0x064                                                                 */
-  __IO uint32_t ID1UI_MIN;       /*!< 0x068                                                                 */
-  __IO uint32_t ID1_PIDOUT_LIM;  /*!< 0x06C                                                                 */
-  __IO uint32_t FWNK1ERR1;       /*!< 0x070                                                                 */
-  __IO uint32_t FWNK1KP;         /*!< 0x074                                                                 */
-  __IO uint32_t FWNK1KI;         /*!< 0x078                                                                 */
-  __IO uint32_t FWNK1KD;         /*!< 0x07C                                                                 */
-  __IO uint32_t FWNK1UI1;        /*!< 0x080                                                                 */
-  __IO uint32_t FWNK1UI_MAX;     /*!< 0x084                                                                 */
-  __IO uint32_t FWNK1UI_MIN;     /*!< 0x088                                                                 */
-  __IO uint32_t FWNK1_PIDOUT_LIM;/*!< 0x08C                                                                 */
-  __IO uint32_t PLL1ERR1;        /*!< 0x090                                                                 */
-  __IO uint32_t PLL1KP;          /*!< 0x094                                                                 */
-  __IO uint32_t PLL1KI;          /*!< 0x098                                                                 */
-  __IO uint32_t PLL1KD;          /*!< 0x09C                                                                 */
-  __IO uint32_t PLL1UI1;         /*!< 0x0A0                                                                 */
-  __IO uint32_t PLL1UI_MAX;      /*!< 0x0A4                                                                 */
-  __IO uint32_t PLL1UI_MIN;      /*!< 0x0A8                                                                 */
-  __IO uint32_t PLL1_PIDOUT_LIM; /*!< 0x0AC                                                                 */
-  __IO uint32_t USR1ERR1;        /*!< 0x0B0                                                                 */
-  __IO uint32_t USR1KP;          /*!< 0x0B4                                                                 */
-  __IO uint32_t USR1KI;          /*!< 0x0B8                                                                 */
-  __IO uint32_t USR1KD;          /*!< 0x0BC                                                                 */
-  __IO uint32_t USR1UI1;         /*!< 0x0C0                                                                 */
-  __IO uint32_t USR1UI_MAX;      /*!< 0x0C4                                                                 */
-  __IO uint32_t USR1UI_MIN;      /*!< 0x0C8                                                                 */
-  __IO uint32_t USR1_PIDOUT_LIM; /*!< 0x0CC                                                                 */
+  __IO uint32_t CR;              /*!< 0x000         Control Register                                        */
+  __IO uint32_t IFIVR;           /*!< 0x004         Integral Function Input Value Register                  */
+  __IO uint32_t EIVR;            /*!< 0x008         Error Input Value Register                              */
+  __IO uint32_t ORR;             /*!< 0x00C         Output Result Register                                  */
+  HT_PIDPARA_TypeDef SPD;        /*!< 0x010 - 0x02C SPD Mode                                                */
+  HT_PIDPARA_TypeDef IQ;         /*!< 0x030 - 0x04C IQ Mode                                                 */
+  HT_PIDPARA_TypeDef ID;         /*!< 0x050 - 0x06C ID Mode                                                 */
+  HT_PIDPARA_TypeDef FWNK;       /*!< 0x070 - 0x08C FWNK Mode                                               */
+  HT_PIDPARA_TypeDef PLL;        /*!< 0x090 - 0x0AC PLL Mode                                                */
+  HT_PIDPARA_TypeDef USR;        /*!< 0x0B0 - 0x0CC USR Mode                                                */
 } HT_PID_TypeDef;
 /**
   * @}
   */
 
+
 /**
  * @brief RF
  */
@@ -2132,7 +2109,7 @@ typedef struct
 #define HT_DIV_BASE              (HT_AHBPERIPH_BASE + 0x4A000)    /* 0x400CA000                             */
 #define HT_RF_BASE               (HT_AHBPERIPH_BASE + 0x50000)    /* 0x400D0000                             */
 #define HT_CORDIC_BASE           (HT_AHBPERIPH_BASE + 0x5C000)    /* 0x400DC000                             */
-#define HT_PID_BASE              (HT_AHBPERIPH_BASE + 0x5E000)    /* 0x400DE000                             */
+#define HT_PID0_BASE             (HT_AHBPERIPH_BASE + 0x5E000)    /* 0x400DE000                             */
 #define HT_QSPI_BASE             (HT_AHBPERIPH_BASE + 0x60000)    /* 0x400E0000                             */
 
 /**
@@ -2596,7 +2573,7 @@ typedef struct
 #define HT_PGA2                  ((HT_PGA0_X_TypeDef *) HT_PGA2_BASE)
 #define HT_PGA3                  ((HT_PGA0_X_TypeDef *) HT_PGA3_BASE)
 #define HT_PGA                   ((HT_PGA_TypeDef *) HT_PGA_BASE)
-#define HT_PID                   ((HT_LCD_TypeDef *) HT_LCD_BASE)
+#define HT_PID0                  ((HT_PID_TypeDef *) HT_PID0_BASE)
 #define HT_CORDIC                ((HT_CORDIC_TypeDef *) HT_CORDIC_BASE)
 #define HT_LSTM0                 ((HT_RTC_TypeDef *) HT_RTC_BASE)
 
@@ -2618,7 +2595,7 @@ typedef struct
 #define HT_PGA2                  ((HT_PGA0_X_TypeDef *) HT_PGA2_BASE)
 #define HT_PGA3                  ((HT_PGA0_X_TypeDef *) HT_PGA3_BASE)
 #define HT_PGA                   ((HT_PGA_TypeDef *) HT_PGA_BASE)
-#define HT_PID                   ((HT_LCD_TypeDef *) HT_LCD_BASE)
+#define HT_PID0                  ((HT_PID_TypeDef *) HT_PID0_BASE)
 #define HT_CORDIC                ((HT_CORDIC_TypeDef *) HT_CORDIC_BASE)
 #define HT_LSTM0                 ((HT_RTC_TypeDef *) HT_RTC_BASE)
 
@@ -2689,14 +2666,14 @@ typedef struct
   #define UART3_IRQn             UART1_UART3_IRQn
 #endif
 
-#if defined(USE_HT32F65230_40) || defined(USE_HT32F65232)
+#if defined(USE_HT32F65230_40) || defined(USE_HT32F65232) || defined(USE_HT32F66242) || defined(USE_HT32F66246)
   // Alias
   #define GPTM0_IRQn             GPTM0_G_IRQn
   #define GPTM0_IRQHandler       GPTM0_G_IRQHandler
   #define MCTM0_IRQn             MCTM0_UP_IRQn
-  #define MCTM0_IRQHandler       MCTM0_G_IRQHandler
+  #define MCTM0_IRQHandler       MCTM0_UP_IRQHandler
   #define MCTM1_IRQn             MCTM1_UP_IRQn
-  #define MCTM1_IRQHandler       MCTM1_G_IRQHandler
+  #define MCTM1_IRQHandler       MCTM1_UP_IRQHandler
 #endif
 
 #define AFIO_ESS_Enum            u32

+ 25 - 9
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_hf5032.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_02.s
-;  Version          : $Rev:: 7119         $
-;  Date             : $Date:: 2023-08-15 #$
+;  Version          : $Rev:: 7648         $
+;  Date             : $Date:: 2024-03-20 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -19,7 +19,6 @@
 ;   HT32F59041
 ;   HF5032
 ;   HT32F61641
-;   HT32F59046
 ;   HT32F61041
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
@@ -34,7 +33,6 @@
 ;//      <8=> HT32F59041
 ;//      <7=> HF5032
 ;//      <8=> HT32F61641
-;//      <8=> HT32F59046
 ;//      <8=> HT32F61041
 USE_HT32_CHIP_SET   EQU     7 ; Notice that the project's Asm Define has the higher priority.
 
@@ -47,7 +45,6 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00059041
 ;_HT32FWID           EQU     0x000F5032
 ;_HT32FWID           EQU     0x00061641
-;_HT32FWID           EQU     0x00059046
 ;_HT32FWID           EQU     0x00061041
 
 HT32F50220_30       EQU     7
@@ -56,7 +53,6 @@ HT50F32002          EQU     7
 HT32F59041          EQU     8
 HF5032              EQU     7
 HT32F61641          EQU     8
-HT32F59046          EQU     8
 HT32F61041          EQU     8
 
   IF USE_HT32_CHIP_SET=0
@@ -72,13 +68,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-4096:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-4096:8>
 Heap_Size           EQU     0
@@ -300,10 +307,11 @@ UART1_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -314,11 +322,19 @@ UART1_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 25 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f0006.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_07.s
-;  Version          : $Rev:: 5740         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 7594         $
+;  Date             : $Date:: 2024-02-23 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -52,13 +52,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -277,10 +288,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -291,11 +303,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 25 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f0008.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_03.s
-;  Version          : $Rev:: 6877         $
-;  Date             : $Date:: 2023-05-04 #$
+;  Version          : $Rev:: 7594         $
+;  Date             : $Date:: 2024-02-23 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -60,13 +60,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -376,10 +387,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -390,11 +402,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 28 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50020_30.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_13.s
-;  Version          : $Rev:: 7119         $
-;  Date             : $Date:: 2023-08-15 #$
+;  Version          : $Rev:: 7704         $
+;  Date             : $Date:: 2024-05-10 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -26,6 +26,7 @@
 ;//      <25=> HT32F50020/30
 ;//      <25=> HT32F61630
 ;//      <25=> HT32F61030
+;//      <25=> HT32F61730
 USE_HT32_CHIP_SET   EQU     25 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -33,10 +34,12 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00050030
 ;_HT32FWID           EQU     0x00061630
 ;_HT32FWID           EQU     0x00061030
+;_HT32FWID           EQU     0x00061730
 
 HT32F50020_30       EQU     25
 HT32F61630          EQU     25
 HT32F61030          EQU     25
+HT32F61730          EQU     25
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -51,13 +54,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-2048:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-2048:8>
 Heap_Size           EQU     0
@@ -208,10 +222,11 @@ LEDC_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -222,11 +237,19 @@ LEDC_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 29 - 9
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50220_30.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_02.s
-;  Version          : $Rev:: 7119         $
-;  Date             : $Date:: 2023-08-15 #$
+;  Version          : $Rev:: 7704         $
+;  Date             : $Date:: 2024-05-10 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -19,8 +19,8 @@
 ;   HT32F59041
 ;   HF5032
 ;   HT32F61641
-;   HT32F59046
 ;   HT32F61041
+;   HT32F61741
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -34,8 +34,8 @@
 ;//      <8=> HT32F59041
 ;//      <7=> HF5032
 ;//      <8=> HT32F61641
-;//      <8=> HT32F59046
 ;//      <8=> HT32F61041
+;//      <8=> HT32F61741
 USE_HT32_CHIP_SET   EQU     7 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -47,8 +47,8 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00059041
 ;_HT32FWID           EQU     0x000F5032
 ;_HT32FWID           EQU     0x00061641
-;_HT32FWID           EQU     0x00059046
 ;_HT32FWID           EQU     0x00061041
+;_HT32FWID           EQU     0x00061741
 
 HT32F50220_30       EQU     7
 HT32F50231_41       EQU     8
@@ -56,8 +56,8 @@ HT50F32002          EQU     7
 HT32F59041          EQU     8
 HF5032              EQU     7
 HT32F61641          EQU     8
-HT32F59046          EQU     8
 HT32F61041          EQU     8
+HT32F61741          EQU     8
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -72,13 +72,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-4096:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-4096:8>
 Heap_Size           EQU     0
@@ -300,10 +311,11 @@ UART1_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -314,11 +326,19 @@ UART1_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 29 - 9
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50231_41.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_02.s
-;  Version          : $Rev:: 7119         $
-;  Date             : $Date:: 2023-08-15 #$
+;  Version          : $Rev:: 7704         $
+;  Date             : $Date:: 2024-05-10 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -19,8 +19,8 @@
 ;   HT32F59041
 ;   HF5032
 ;   HT32F61641
-;   HT32F59046
 ;   HT32F61041
+;   HT32F61741
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -34,8 +34,8 @@
 ;//      <8=> HT32F59041
 ;//      <7=> HF5032
 ;//      <8=> HT32F61641
-;//      <8=> HT32F59046
 ;//      <8=> HT32F61041
+;//      <8=> HT32F61741
 USE_HT32_CHIP_SET   EQU     8 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -47,8 +47,8 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00059041
 ;_HT32FWID           EQU     0x000F5032
 ;_HT32FWID           EQU     0x00061641
-;_HT32FWID           EQU     0x00059046
 ;_HT32FWID           EQU     0x00061041
+;_HT32FWID           EQU     0x00061741
 
 HT32F50220_30       EQU     7
 HT32F50231_41       EQU     8
@@ -56,8 +56,8 @@ HT50F32002          EQU     7
 HT32F59041          EQU     8
 HF5032              EQU     7
 HT32F61641          EQU     8
-HT32F59046          EQU     8
 HT32F61041          EQU     8
+HT32F61741          EQU     8
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -72,13 +72,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-4096:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-4096:8>
 Heap_Size           EQU     0
@@ -300,10 +311,11 @@ UART1_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -314,11 +326,19 @@ UART1_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 25 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50343.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_06.s
-;  Version          : $Rev:: 5740         $
-;  Date             : $Date:: 2022-02-17 #$
+;  Version          : $Rev:: 7595         $
+;  Date             : $Date:: 2024-02-23 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -42,13 +42,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-12288:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-12288:8>
 Heap_Size           EQU     0
@@ -271,10 +282,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -285,11 +297,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 29 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50431_41.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_14.s
-;  Version          : $Rev:: 6793         $
-;  Date             : $Date:: 2023-03-14 #$
+;  Version          : $Rev:: 8287         $
+;  Date             : $Date:: 2024-11-27 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -15,6 +15,7 @@
 ;  ========================================
 ;   HT32F50442, HT32F50452
 ;   HT32F50431, HT32F50441
+;   HT32F61052
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -24,6 +25,7 @@
 ;//      <0=> By Project Asm Define
 ;//      <26=> HT32F50442/52
 ;//      <30=> HT32F50431/41
+;//      <26=> HT32F61052
 USE_HT32_CHIP_SET   EQU     30 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -31,9 +33,11 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00050452
 ;_HT32FWID           EQU     0x00050431
 ;_HT32FWID           EQU     0x00050441
+;_HT32FWID           EQU     0x00061052
 
 HT32F50442_52       EQU     26
 HT32F50431_41       EQU     30
+HT32F61052          EQU     26
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -48,13 +52,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -237,10 +252,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -251,11 +267,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 29 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f50442_52.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_14.s
-;  Version          : $Rev:: 6793         $
-;  Date             : $Date:: 2023-03-14 #$
+;  Version          : $Rev:: 8287         $
+;  Date             : $Date:: 2024-11-27 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -15,6 +15,7 @@
 ;  ========================================
 ;   HT32F50442, HT32F50452
 ;   HT32F50431, HT32F50441
+;   HT32F61052
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -24,6 +25,7 @@
 ;//      <0=> By Project Asm Define
 ;//      <26=> HT32F50442/52
 ;//      <30=> HT32F50431/41
+;//      <26=> HT32F61052
 USE_HT32_CHIP_SET   EQU     26 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -31,9 +33,11 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00050452
 ;_HT32FWID           EQU     0x00050431
 ;_HT32FWID           EQU     0x00050441
+;_HT32FWID           EQU     0x00061052
 
 HT32F50442_52       EQU     26
 HT32F50431_41       EQU     30
+HT32F61052          EQU     26
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -48,13 +52,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -237,10 +252,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -251,11 +267,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 25 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52142.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_03.s
-;  Version          : $Rev:: 6877         $
-;  Date             : $Date:: 2023-05-04 #$
+;  Version          : $Rev:: 7594         $
+;  Date             : $Date:: 2024-02-23 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -60,13 +60,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -376,10 +387,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -390,11 +402,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 43 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52220_30.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_01.s
-;  Version          : $Rev:: 6953         $
-;  Date             : $Date:: 2023-05-30 #$
+;  Version          : $Rev:: 7848         $
+;  Date             : $Date:: 2024-07-16 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -23,10 +23,15 @@
 ;   HT32F0006
 ;   HT32F61352
 ;   HT50F32003
+;   HT50F3200U
 ;   HT32F62030, HT32F62040, HT32F62050
+;   HT32F62140
 ;   HT32F67741
 ;   HT32F67232
 ;   HT32F67233
+;   HT32F59045
+;   MXTX52231
+;   MXTX52352
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -44,12 +49,17 @@
 ;//      <10=> HT32F0006
 ;//      <10=> HT32F61352
 ;//      <4=> HT50F32003
+;//      <2=> HT50F3200U
 ;//      <2=> HT32F67741
 ;//      <1=> HT32F67232
 ;//      <1=> HT32F67233
 ;//      <1=> HT32F62030
 ;//      <2=> HT32F62040
 ;//      <5=> HT32F62050
+;//      <2=> HT32F62140
+;//      <2=> HT32F59045
+;//      <2=> MXTX52231
+;//      <4=> MXTX52352
 USE_HT32_CHIP_SET   EQU     1 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -69,12 +79,15 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00000006
 ;_HT32FWID           EQU     0x00061352
 ;_HT32FWID           EQU     0x00032003
+;_HT32FWID           EQU     0x0003200F
 ;_HT32FWID           EQU     0x00062030
 ;_HT32FWID           EQU     0x00062040
 ;_HT32FWID           EQU     0x00062050
+;_HT32FWID           EQU     0x00062140
 ;_HT32FWID           EQU     0x00067741
 ;_HT32FWID           EQU     0x00067232
 ;_HT32FWID           EQU     0x00067233
+;_HT32FWID           EQU     0x00059045
 
 HT32F52220_30       EQU     1
 HT32F52231_41       EQU     2
@@ -86,12 +99,17 @@ HT32F52344_54       EQU     9
 HT32F0006           EQU     10
 HT32F61352          EQU     10
 HT50F32003          EQU     4
+HT50F3200U          EQU     2
 HT32F62030          EQU     1
 HT32F62040          EQU     2
 HT32F62050          EQU     5
+HT32F62140          EQU     2
 HT32F67741          EQU     2
 HT32F67232          EQU     1
 HT32F67233          EQU     1
+HT32F59045          EQU     2
+MXTX52231           EQU     2
+MXTX52352           EQU     4
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -106,13 +124,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -455,10 +484,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -469,11 +499,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

+ 43 - 5
bsp/ht32/libraries/HT32_STD_5xxxx_FWLib/library/Device/Holtek/HT32F5xxxx/Source/ARM/startup_ht32f52231_41.s

@@ -6,8 +6,8 @@
 ;/*                                                                                                         */
 ;/*-----------------------------------------------------------------------------------------------------------
 ;  File Name        : startup_ht32f5xxxx_01.s
-;  Version          : $Rev:: 6953         $
-;  Date             : $Date:: 2023-05-30 #$
+;  Version          : $Rev:: 7848         $
+;  Date             : $Date:: 2024-07-16 #$
 ;  Description      : Startup code.
 ;-----------------------------------------------------------------------------------------------------------*/
 
@@ -23,10 +23,15 @@
 ;   HT32F0006
 ;   HT32F61352
 ;   HT50F32003
+;   HT50F3200U
 ;   HT32F62030, HT32F62040, HT32F62050
+;   HT32F62140
 ;   HT32F67741
 ;   HT32F67232
 ;   HT32F67233
+;   HT32F59045
+;   MXTX52231
+;   MXTX52352
 
 ;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */
 
@@ -44,12 +49,17 @@
 ;//      <10=> HT32F0006
 ;//      <10=> HT32F61352
 ;//      <4=> HT50F32003
+;//      <2=> HT50F3200U
 ;//      <2=> HT32F67741
 ;//      <1=> HT32F67232
 ;//      <1=> HT32F67233
 ;//      <1=> HT32F62030
 ;//      <2=> HT32F62040
 ;//      <5=> HT32F62050
+;//      <2=> HT32F62140
+;//      <2=> HT32F59045
+;//      <2=> MXTX52231
+;//      <4=> MXTX52352
 USE_HT32_CHIP_SET   EQU     2 ; Notice that the project's Asm Define has the higher priority.
 
 _HT32FWID           EQU     0xFFFFFFFF
@@ -69,12 +79,15 @@ _HT32FWID           EQU     0xFFFFFFFF
 ;_HT32FWID           EQU     0x00000006
 ;_HT32FWID           EQU     0x00061352
 ;_HT32FWID           EQU     0x00032003
+;_HT32FWID           EQU     0x0003200F
 ;_HT32FWID           EQU     0x00062030
 ;_HT32FWID           EQU     0x00062040
 ;_HT32FWID           EQU     0x00062050
+;_HT32FWID           EQU     0x00062140
 ;_HT32FWID           EQU     0x00067741
 ;_HT32FWID           EQU     0x00067232
 ;_HT32FWID           EQU     0x00067233
+;_HT32FWID           EQU     0x00059045
 
 HT32F52220_30       EQU     1
 HT32F52231_41       EQU     2
@@ -86,12 +99,17 @@ HT32F52344_54       EQU     9
 HT32F0006           EQU     10
 HT32F61352          EQU     10
 HT50F32003          EQU     4
+HT50F3200U          EQU     2
 HT32F62030          EQU     1
 HT32F62040          EQU     2
 HT32F62050          EQU     5
+HT32F62140          EQU     2
 HT32F67741          EQU     2
 HT32F67232          EQU     1
 HT32F67233          EQU     1
+HT32F59045          EQU     2
+MXTX52231           EQU     2
+MXTX52352           EQU     4
 
   IF USE_HT32_CHIP_SET=0
   ; Use project's Asm Define setting (default)
@@ -106,13 +124,24 @@ USE_HT32_CHIP       EQU     USE_HT32_CHIP_SET
 
 ; Amount of memory (in bytes) allocated for Stack and Heap
 ; Tailor those values to your application needs
+
+;//   <o> Stack Location
+;//       <0=> After the RW/ZI/Heap (Default)
+;//       <1=> On the top of the SRAM (The end of the SRAM)
+USE_STACK_ON_TOP    EQU     0
+
 ;//   <o> Stack Size (in Bytes, must 8 byte aligned) <0-16384:8>
+;//       <i> Only meanful when the Stack Location = "After the RW/ZI/Heap" (USE_STACK_ON_TOP = 0).
 Stack_Size          EQU     512
 
                     AREA    STACK, NOINIT, READWRITE, ALIGN = 3
 __HT_check_sp
 Stack_Mem           SPACE   Stack_Size
+  IF (USE_STACK_ON_TOP = 1)
+__initial_sp        EQU 0x20000000 + USE_LIBCFG_RAM_SIZE
+  ELSE
 __initial_sp
+  ENDIF
 
 ;//   <o>  Heap Size (in Bytes) <0-16384:8>
 Heap_Size           EQU     0
@@ -455,10 +484,11 @@ PDMA_CH2_5_IRQHandler
 ;*******************************************************************************
 ; User Stack and Heap initialization
 ;*******************************************************************************
-                    IF      :DEF:__MICROLIB
-
                     EXPORT  __HT_check_heap
                     EXPORT  __HT_check_sp
+
+                    IF      :DEF:__MICROLIB
+
                     EXPORT  __initial_sp
                     EXPORT  __heap_base
                     EXPORT  __heap_limit
@@ -469,11 +499,19 @@ PDMA_CH2_5_IRQHandler
                     EXPORT  __user_initial_stackheap
 __user_initial_stackheap
 
-                    LDR     R0, =  Heap_Mem
+                  IF (USE_STACK_ON_TOP = 1)
+                    LDR     R0, = Heap_Mem
+                    LDR     R1, = (0x20000000 + USE_LIBCFG_RAM_SIZE)
+                    LDR     R2, = (Heap_Mem + Heap_Size)
+                    LDR     R3, = (Heap_Mem + Heap_Size)
+                    BX      LR
+                  ELSE
+                    LDR     R0, = Heap_Mem
                     LDR     R1, = (Stack_Mem + Stack_Size)
                     LDR     R2, = (Heap_Mem + Heap_Size)
                     LDR     R3, = Stack_Mem
                     BX      LR
+                  ENDIF
 
                     ALIGN
 

部分文件因为文件数量过多而无法显示