/*********************************************************************************************************//**
 * @file    Release_Notes.txt
 * @version V1.7.1
 * @date    2026-02-09
 * @brief   The Release notes of HT32 Firmware Library.
 *************************************************************************************************************
 * @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>
 ************************************************************************************************************/

// Supported Device
// ========================================
//   HT32F1653, HT32F1654
//   HT32F1655, HT32F1656
//   HT32F12345
//   HT32F12364
//   HT32F12365, HT32F12366
//   HT32F22366

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.7.1_3596                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2026-02-09
  Main Changes
  + Update "ht32f1xxxx_aes.c" to enhance the waiting mechanism for encryption/decryption process.
  + Update "StackUsageAnalysisInit()" compatibility to include support for the GNU (GCC) compiler environment.
  + Update "syscalls.c" as below.
    - Modify "_sbrk()" to add heap size checks and overflow protection for safer memory allocation.
    - Modify "scanf()" integer limit macros by prefixing them with "HT_" for clearer naming and improved type safety.
  + Fix I2C SHPGR/SLPGR overflow issue when operating at high PCLK and low SCL speeds.
  + Fix an incorrect parameter limit in SCI_ETUConfig(), increasing the maximum SCI_ETU value to 2048.
  + Update TM/PWM example by casting the parameter in PWM_UpdateDuty to (u32) to eliminate IAR compiler warnings.

  Others
  + Update comment, format, typing error, and coding style.
  + Update LICENSE.md license declaration.
  + Update and sync create project related files.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.6.2_3550                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2025-07-30
  Main Changes
  + Add volatile qualifier on some variables to fix the GNU Compiler optimization issue.
    - "example/SDIO/SDCard/sdio_sd.c"
    - "example/USBD/Mass_Storage_SDIO/sdio_sd.c"
    - "library/HT32F1xxxx_Driver/src/ht32f1xxxx_ckcu.c"
    - "library/HT32F1xxxx_Driver/src/ht32f1xxxx_pwrcu.c"
    - "library/HT32F1xxxx_Driver/src/ht32f1xxxx_rtc.c"
    - "library/HT32F1xxxx_Driver/src/ht32f1xxxx_sdio.c"
    - "library/HT32F1xxxx_Driver/src/ht32f1xxxx_usbd.c"
  + Add "SPI_SCKDutyConfig()" API for adjust the SPI SCK clock duty for specific MCU part number.
  + Add "putchar()" function in "ht32_retarget.c" to fix the retarget not working when using "printf("%c")" in
    some GNU compiler versions.
  + Add "PRINTF_USE_CLIB" and "SCANF_USE_CLIB" options in "ht32f1xxxx_conf.h" to switch between lite printf/scanf
    and C library printf/scanf (default: lite printf/scanf).
  + Add lite scanf() function in syscalls.c with support for %d and %x formats.
  + Add "Stack On Top" feature.
    - Add "USE_LIBCFG_RAM_SIZE" define in Keil project files for this feature.
    - Update startup_CHIPNAME.s to support it when USB_LIBCFG_RAM_SIZE is undefined.
  + Fix printf() issue:
    - Unsupported format specifiers (e.g., "%f") could cause a hard fault by modifying the behavior to
      enter an infinite loop instead.
    - Resize the buffer used for storing numbers to prevent memory overflow.
  + Modify "BFTM/TimeMeasure" to avoid using printf("%f") and use nS for time display.
  + Modify the example below, add assert_error() to debug.
    - "SRAM_Overwrite/Watchpoint_Heap"
    - "SRAM_Overwrite/Watchpoint_Stack"
  + Fix "MCTM/PWMOutput" incorrect ISR name: "MCTM1UP_IRQHandler" -> "MCTM1_IRQHandler".
  + Fix "SDIO/SDCard" memory overflow caused by Fill_Buffer().
  + Fix "TM/UpdateEvent" time output error caused by memory overflow in CRR and add prescaler setting (divide by 10).
  + Fix "InternalTrigger" Timer IP selection error:
        HTCFG_TM_SLAVE_IPN:  "MCTM0" -> "MCTM1"
        HTCFG_TM_MASTER_IPN: "GPTM0" -> "MCTM0"

  Others
  + Update comment, format, typing error, and coding style.
  + Modify "_CreateProjectScript.bat":
    - Disable DELAYEDEXPANSION before calling "_ProjectConfig.bat".
    - Add script for creating non-standard HT32-IDE projects.
  + Update and sync create project related files ("_ProjectConfig.bat", "_ProjectConfig.ini").
  + Update Create Project script to support HT32-IDE.
  + Update afterbuild.bat functions of the GNU_ARM project.
  + Add third-party tool usage notice and Gsar license declaration.
  + Add LICENSE.md license declaration.
  + Update "CKCU/HSI_AutoTrim_By_USB" to remove unused local variables.
  + Add "README.txt" to introduce the empty Application and BestModule directories.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.6.1_3221                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2025-04-16

  Main Changes
  + Add new examples:
    - "Tips/FlashParameter"
  + Update and modify files below to support Option Byte setting of GNU Compiler.
    - "GNU_ARM/ht32_op.c"
    - "GNU_ARM/linker.ld"
    - "GNU_ARM/Project_*.uvprojx"
  + Update "ht32f1xxxx_conf.h"
    - Support HT32 Library Lite mode.
    - Add "RETARGET_UxART_CLKSEL" and "RETARGET_UxART_CLK_MANUAL" for "RETARGET_Configuration()".
  + Update "ht32f1xxxx_usart.c/h", add "USART_BaudRateReg" and modify the "USART_Init()" function to support
    HT32 Library Lite mode (remove C division library to reduce code size).
  + Update "ht32f1xxxx_01.h", add "UID" to "HT_FLASH_TypeDef" and share the "CID" address.
  + Update "syscalls.c" and "ht32_retarget.c", to fix the GNU C Lib retarget not working issue.
  + Update "uart_module.c", fix "UARTM_Write()" function which the free space calculation error.
  + Update "utilities/middleware/i2c_master.c" to fix I2C Master not work issue when the 
    "I2C_MASTER_SW_TIMEOUT_MODE" set as 0.
  + Add and Update the following files to show how to fix compiler errors in older GNU Compiler.
    - Add: GNU_ARM/linker_oldversion.ld
    - Add: GNU_ARM/linker_readme.txt
    - Update: GNU_ARM/linker.ld

  Others
  + Update comment, format, typing error, and coding style.
  + Update "uart_module.c", reduce the buffer usage of unused channels.
  + Add a setting, "HT32_LIB_ENABLE_GET_CK_ADC" to control "ADC0_Freq" calculation of the
    "CKCU_GetClocksFrequency()" function (default off for code size consideration).

/*----------------------------------------------------------------------------------------------------------*/
/* 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 "ht32f1xxxx_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                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2023-10-31

  Main Changes
  + Add new example.
    - "GPIO/PinLock"
  + 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"
  + Modify examples below, use separate "if" statements instead of "if-else" to avoid double-entry ISR.
    - "PWRCU/DeepSleepMode1"
    - "PWRCU/DeepSleepMode2"
  + Modify "ht32_time.h", "ht32f1xxxx_conf.h" and "ht32_time_conf.h" for "LIBCFG_CKCU_NO_APB_PRESCALER" series.
    - To ensure the correct configuration of the timer clock, the "HTCFG_TIME_PCLK_DIV" is redefined as 0.
  + Add "Project or Target File Clearing" functions ("_ClearProject.bat" and "_ClearTarget.bat").
  + Modify "syscall.c" to prevent redundant initialization of the heap index.
  + Modify "ht32f1xxxx_01.h" to add below definition.
    - "sc64", "vs64", "vsc64", "uc64", "vu64", "vuc64"
  + Modify PWRCU related define (The left side old one is still kept for backward compatible).
    - PWRCU_FLAG_BAKPOR -> PWRCU_FLAG_PWRPOR
  + Modify "RETARGET_Configuration()", add the operation of UxARTn peripheral clock enable.
  + Update and sync "ht32f1xxxx_conf.h", modify related define of UxARTn retarget port.
  + Update "ht32_op.c" and "ht32_op.s" to support new version of bootloader waiting time setting address.
    (The setting address is changed from 0x1FF0002C to 0x1FF0004C)
  + Add "ht32_op_V107.c" and "ht32_op_V107.s" to support the use of older versions of bootloader.
  + Add "CKCU_ATCInit()" API for HSI Auto Trim initial function.
  + Update "ht32f1xxxx_adc.c" and "ht32f1xxxx_adc_02.c", modify the ADC enable related flow.
  + Add the below folder, For the BMduino shield/module Keil Driver.
    - "BestModules"

  Others
  + Update comment, format, typing error, and coding style.
  + Adjust "LIBCFG_xxxxx" definition below.
    - "LIBCFG_CKCU_APBCLKFIX" rename to "LIBCFG_CKCU_NO_APB_PRESCALER"
  + Modify the Sourcery G++ Lite toolchain project.
    - Set C99 mode to fix issues after updating CMSIS v5.9.0 ("for" loop initial declarations).
  + Update e-Link32 Pro/Lite Command line tool as "V1.19" ("utilities/elink32pro/eLink32pro.exe").
  + Modify "_ProjectConfigScript.bat" to prevent the creation of project that copy unused system/startup files.
  + Update "project_template/Script" for adding project C++ source files and setting the chip model mechanism.
    - The updated files are as follows:
      "Script/_ProjectSource.bat"
      "Script/_ProjectSource.ini"
  + Update "project_template/Script" for improving script mechanism.
    - The updated files are as follows:
      "Script/_CreateProjectConfScript.bat"
      "Script/_CreateProjectScript.bat"
      "Script/_ht32_ic_name.ini"
  + Modify and check the example supportability of each IC.
  + Add the below file, for the BMduino shield.
    - "ht32_undef_IP.h"

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.3.2_2858                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2023-02-02

  Main Changes
  + Add new examples:
    - "SRAM_Overwrite/Watchpoint_Heap"
    - "SRAM_Overwrite/Watchpoint_Stack"
  + Update "ht32f1xxxx_conf.h" for user layer HSE_VALUE setting.

  Others
  + Update comment, format, typing error, and coding style.
  + Modify "system_ht32fxxxxx_nn.c", add HSE_VALUE notice and update PLL Out formula.
  + Update and sync system.c files.
  + Update EEPROM Emulation middleware, improve efficacy and reduce resource usage.
    "utilities/middleware/eeprom_emulation.c"
    "utilities/middleware/ht32_eeprom_config_templet.h"
  + Update I2C Master middleware, improve setting way and fix minor errors.
    "utilities/middleware/i2c_master.c/.h"
    "utilities/middleware/i2c_master_config_templet.h"

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.3.1_2808                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-12-01

  Main Changes
  + Update "ht32_time.h", fix a formula error of "TIME_TICK2US()" and "TIME_TICK2MS()" macro.
  + Modify "ht32_retarget.c", fix retarget can't work when the MicroLIB is not used in Keil's V6 compiler.
  + Modify "ht32_serial.c/.h" and "ht32_retarget.c", fix ITM setting issue.
  + Update "ht32fxxxx_sk.h", add TRACESWO pin assignment for ITM.
  + Update "SPI/PDMA" example, change the order of API execution (SPI_SELOutputCmd() execution before SPI_Cmd()).
  + Update "CSIF/Init" example, modify the datatype form and add comments to explain the length of the Rx buffer.
  + Update following I2C example. (sync. with M0+)
    - I2C/7_bit_mode
    - I2C/10_bit_mode
    - I2C/EEPROM_Simulate
    - I2C/Interrupt
    - I2C/PDMA
  + GPIO
    - Add new define "GPIO_PIN_NUM_n" for GPIO pin number (n = 0 ~ 15).
  + EXTI
    - 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)

  Others
  + Update comment, format, typing error, and coding style.
  + Update "ht32_op.s/.c", allow "Bootloader Waiting Time" function for all series.
  + Update "CKCU/HSI_AutoTrim_By_USB" example, add the following define to "ht32_board_config.h".
    - "CKCU_PLL_CFG"
    - "CKCU_SYSCLK_DIV_CFG"
  + Upgrade CMSIS to v5.9.0.
  + Modify API parameter check macro of Library Debug Mode, fix parameter check error.
  + Modify variable declaration of "PDMACH_InitTypeDef" to reduce memory size.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.2.1_2753                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-10-11

  Main Changes
  + Add new examples:
    - "I2C/7_bit_mode_master"
    - "I2C/7_bit_mode_slave"
  + Add the following API for PDMA.
    - "PDMA_DeInit()"
    - "PDMA_AddrConfig()"
    - "PDMA_SrcAddrConfig()"
    - "PDMA_DstAddrConfig()"
    - "PDMA_GetRemainBlkCnt()"
  + Add the following API for ADC.
    - "ADC_ChannelDataAlign()"
    - "ADC_ChannelOffsetValue()"
    - "ADC_ChannelOffsetCmd()"
  + Update "ht32_retarget.c", modify the retarget related functions for SEGGER Embedded Studio.
  + Update "FLASH_SetWaitState()" function, disable Pre-fetch and Branch Cache function before change
    wait state.
  + Update following middleware.
    "utilities/middleware/i2c_master.c/h"
    "utilities/middleware/uart_module.c"

  Others
  + Update comment, format, typing error, and coding style.
  + Update "BFTM/OneShot" example, fix the register access sequence and time calculation formula.
  + Update "TM/PWM/main.c"
    - Add "HTCFG_PWM_TM_RELOAD" check.
    - Add PWM channel initial function.
    - Remove "_ht32_project_source.h" (Use "_ProjectSource.ini" to add "pwm.c" into project compiling list).
  + Fix the upper/lower case error of #include file name.
  + Update e-Link32 Pro/Lite Command line tool as "V1.18" ("utilities/elink32pro/eLink32pro.exe").
  + Change the project recommended minimum version of SEGGER Embedded Studio from V4.12 to V6.20.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.1.1_2647                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-06-10

  Main Changes
  + Add following middleware.
    "utilities/middleware/spi_module.c"
    "utilities/middleware/spi_module.h"
    "utilities/middleware/spi_module_config_templet.h"
  + Fixed FW library compatibility with ARM compiler version 6 of MDK-ARM V5.37.
    - Add MDK-ARMv537 project template for MDK-ARM V5.37.
    - Update "project_template/Script". Those MDK-ARMv537 project templates will be added for use if choose
      the target IDE is "Keil MDK-ARMv5". The fixed files are as follows:
        "Script/_CreateProjectScript.bat"
        "Script/_ProjectConfig.bat"
        "Script/_ProjectSource.bat"
    - Update "core_cm3.h", fix compiler error.
    - Update "FMC/FLASH_OperationNoHalt", fix the compiler issue of Arm Compiler Version V6.18 and the
      compiler warning of linker script file. The fixed files are as follows:
        "FLASH_OperationNoHalt/main.c"
        "FLASH_OperationNoHalt/linker.lin"
    - Update following middleware, remove STRCAT3 usage to fix compiler error.
        "utilities/middleware/uart_module.c"
        "utilities/middleware/i2c_master.c"
        "utilities/middleware/spi_module.c"
  + Update "ht32_retarget.c". Implement __write function to fix compiler error in IAR EWARM Version 9.20
    or later.
  + Update GNU Arm makefile in the project_template, fix the compatibility issue that the makefile of GNU Arm
    Version 11 cannot be compiled.
  + Update EWARM in the project_template, fix the compiler error that header file path doesn't exist in
    the file list of Workspace of IAR EWARM Version 7.
  + Fix SPI initial PDMA parameter in the "utilities/common/spi_flash.c".
  + Sync M0+ I2C/EEPROM to fix compiler warning of the GNU compiler.
  + Sync M0+ library\HT32F1xxxx_Driver\inc\ht32_dependency.h.

  Others
  + Update comment, format, typing error, and coding style.
  + Update e-Link32 Pro/Lite Command line tool as "V1.16" ("utilities/elink32pro/eLink32pro.exe").
  + Update the following examples to remove compiler warning of the IAR EWARM.
    "BFTM\TimeMeasure"
    "TM\PWMInput\ht32f1xxxx_01_it.c"
    "USBD\HID_Keyboard_Virtual_COM\ht32_usbd_class.c"
    "USBD\Mass_Storage_SDIO\sd_disk.c"
    "USBD\USB_UAC_Sound\ht32_usbd_class.c"
    "USBD\Virtual_COM\ht32_usbd_class.c"
  + Update and sync create project related files ("_ProjectConfig.bat" and "_ProjectConfig.ini").
  + Update content of "project_template/IP/Example/readme.txt", add MDK-ARM V5.37 related information.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.0.10_2585                                                                        */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-04-14

  Main Changes
  + Update EEPROM Basic and EEPROM Emulation middleware, fix the include and define sequence.
    "utilities/middleware/eeprom_basic.h"
    "utilities/middleware/eeprom_emulation.h"
  + Update UART Module middleware, add the "UARTM_IsTxFinished()" API.
    "utilities/middleware/uart_module.c"
    "utilities/middleware/uart_module.h"

  Others
  + Update e-Link32 Pro/Lite Command line tool as "V1.0.15" ("utilities/elink32pro/eLink32pro.exe").

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.0.10_2585                                                                        */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-04-14

  Main Changes
  + Update EEPROM Basic and EEPROM Emulation middleware, fix the include and define sequence.
    "utilities/middleware/eeprom_basic.h"
    "utilities/middleware/eeprom_emulation.h"
  + Update UART Module middleware, add the "UARTM_IsTxFinished()" API.
    "utilities/middleware/uart_module.c"
    "utilities/middleware/uart_module.h"

  Others
  + Update e-Link32 Pro/Lite Command line tool as "V1.0.15" ("utilities/elink32pro/eLink32pro.exe").

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_V1.0.9_2556                                                                         */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2022-03-15

  Main Changes
  + Change to the new Holtek version format (Vm.n.r).
  + Add new "FMC/FLASH_OperationNoHalt" example.
  + Modify "utilities/common/ring_buffer.c", fix the thread-safe issue of "Buffer_GetLength()".
  + Update "GNU_ARM/linker.ld", fix the heap/stack area overlap problem.
  + Add "ADC_SamplingTimeConfig()" function for the "ht32f1xxxx_adc_02.c".

  Others
  + Update comment, format, typing error, and coding style.
  + Modify "bool, TRUE, FALSE" define way for C++/.cpp applications.
  + Update "startup_ht32fxxxxx_nn.s", support "USE_HT32_CHIP" define exist at startup.s and project Asm
    setting in the same time (project's Asm Define has the higher priority).
  + Remove unuse global variable "DelayTime" of "ebi_lcd.c" and "spi_lcd.c".
  + Update "spi_lcd.c/.h", fix the GPIO Chip SEL define mistake.
  + Add following middleware.
    "utilities/middleware/uart_module.c"
    "utilities/middleware/uart_module.h"
  + Update related middleware (eeprom_basic and eeprom_emulation).
  + Update e-Link32 Pro/Lite Command line tool as "V1.0.14" ("utilities/elink32pro/eLink32pro.exe").

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_v008_2470                                                                           */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2021-08-19

  Main Changes
  + Add "ht32_time.c/.h" to support following new functions for delay, time measure, and timeout.
    "Time_Init()"
    "Time_Delay()"
    "Time_GetTick()"
  + Add new examples:
    - "ADC/OneShot_SWTrigger_ByTM"
    - "GPIO/Input"
    - "GPIO/Output"
    - "Time/TimeFun"
    - "Time/TimeFun_UserConf"
    - "USART/RS485_NMM_Slave"
  + Add new definition, "FLASH_WAITSTATE_MAX".
  + Add "USART_PARITY_MARK" and "USART_PARITY_SPACE" for the UART parity mode.
  + Update "ADC_RegularTrigConfig()" and "AC_TRIG_XXXX" define to support all the trigger source of ADC.
  + Add "CKCU_ADCPRE_DIV1" parameter of "CKCU_SetADCnPrescaler()" for the HT32F12364.
  + Modified "SDIO_ClearFlag()", disable Status Enable Register (SER) to clear SDIO_FLAG_BUF_OVERFLOW and
    SDIO_FLAG_BUF_UNDERFLOW.
  + Fix the result mistake of the marco below of HT32F12364 (LIBCFG_FLASH_2PAGE_PER_WPBIT is missing).
    "#define FLASH_WP_PAGE_SET(OP, PAGE)"
    "#define FLASH_WP_PAGE_CLEAR(OP, PAGE)"
    "#define FLASH_IS_WP_PAGE(OP, PAGE)"
  + Update following example, modify the default value of "gIsINEmpty" from TRUE to FALSE. The default value
    TRUE may cause the F/W to not send CSW after the first Inquiry CBW Command in a specific condition.
    "example/USBD/HID_Keyboard_Mass_Storage"
    "example/USBD/Mass_Storage"
    "example/USBD/Mass_Storage_IAP"
    "example/USBD/Mass_Storage_SDIO"

  Others
  + Update comment, format, typing error, and coding style.
  + Fix compile error when turn on Library debug mode (HT32_LIB_DEBUG = 1).
  + Update e-Link32 Pro Commander to V1.10.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_v007_2414                                                                           */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2021-05-11

  Main Changes
  + Add new examples:
    - "EXTI/GPIO_Interrupt"
    - "CKCU/HSI_AutoTrim_By_LSE"
  + Update the IAP example of HT32F12364 project:
    - IAR EWARM v6/v7/v8: 
        1. Modify "startup_ht32f1xxxx_03.s" to "startup_ht32f1xxxx_iar_03.s".
        2. Modify "ht32f1xxxx_adc.c" to "ht32f1xxxx_adc_02.c".
    - Keil MDK-ARM v4/v5: Modify "ht32f1xxxx_adc.c" to "ht32f1xxxx_adc_02.c".
  + Fix the system stuck in CKCU_HSIAutoTrimCmd() because of the misjudgment of CKCU_HSIAutoTrimIsReady().
  + Fix the CHIP ID error. Fixed "USE_HT32_CHIP=3" to "USE_HT32_CHIP=16". The fixed files are as follows:
    - IAP/IAP_Text_RAM/EWARM/Project_12364_IAP.ewp
    - IAP/IAP_UI/EWARM/Project_12364_IAP.ewp
  + Fix the syntax error on the "IAP/IAP_Text_RAM/EWARM/startup_ht32f1xxxx_iar_03_iap.s".

  Others
  + Update comment, format, typing error, and coding style.
  + Update the version of eLink32pro.exe to 1.0.1.1.
  + Update the following project setting:
    - IAR EWARM v6/v7: Modify "_ht32_project_source.c" to "_ht32_project_source.h".
    - SEGGER Embedded Studio: Add the new definition "arm_compiler_variant="SEGGER"".

/*----------------------------------------------------------------------------------------------------------*/
/* HT32_STD_1xxxx_FWLib_v006_2361                                                                           */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2021-02-26

  Main Changes
  + Add "Create Project Configuration Menu" to choose the target IDE and Device when the first time to do the
    create project operation of the example. The configuration file, "_CreateProjectConfig.bat" is saved to
    the root path of the HT32 Firmware Library. You can reset the create project IDE/IC configuration anytime
    by deleting the configuration file.
    Target IDE/Compiler:
    - Keil MDK-ARM v5
    - Keil MDK-ARM v4
    - IAR EWARM v8
    - IAR EWARM v6/v7
    - SEGGER Embedded Studio
    - GNU [with Keil and GNU make]
    - SourceryG++Lite [with Keil]
    Target Device:
    - xxxxx: Single Device
    - xxx*: Series
  + Add new examples:
    - "NVIC/Disable_Interrupt"
    - "TM/InternalTrigger"
    - "TM/PWM_Buzzer"
    - "WDT/Auto_Enable"
  + Add Flash programming function of GNU Maker (via e-Link32 Pro/Lite Commander).
    "make IC=xxxxx eraseall"
    "make IC=xxxxx program"
    "make IC=xxxxx run"
  + Update "CKCU_HSIAutoTrimCmd()" and "CKCU_HSIAutoTrimIsReady()" function to improve clock stability.
  + Fix the cache address problem of "SDDISK_Read()" function.
    "USBD/Mass_Storage/sd_disk.c", "USBD/Mass_Storage_SDIO/sd_disk.c"
  + 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".
  + Modify GNU compiler settings, output text file (disassembly) after building the code.
  + Add "HT32_FWLIB_VER" and "HT32_FWLIB_SVN" in "ht32f1xxxx_lib.h" for the version information of
    HT32 Firmware Library.
    Example:
    "#define HT32_FWLIB_VER                  (006)"
    "#define HT32_FWLIB_VER                  (2361)"
  + Add new AFIO define in "ht32f1xxxx_gpio.h".
    - "AFIO_FUN_MCTM1"
    - "AFIO_FUN_PWM"
    - "AFIO_FUN_PWM0", "AFIO_FUN_PWM1", "AFIO_FUN_PWM2", "AFIO_FUN_PWM3"
  + Add following alias of MCTM IRQ handler
    "#define MCTM0_IRQn               MCTM0UP_IRQn"
    "#define MCTM0_IRQHandler         MCTM0UP_IRQHandler"
    "#define MCTM1_IRQn               MCTM1UP_IRQn"
    "#define MCTM1_IRQHandler         MCTM1UP_IRQHandler"

  Others
  + Update comment, format, typing error, and coding style.
  + Update "SPI/FIFO_SEL_Hardware" example, add Rx FIFO Timeout function and fix data loss issue.
  + Update "USBD/Mass_Storage" example, add "HTCFG_SD_MAXSPEED" define for different board.
  + Update "utilities/common/spi_lcd.c".
    - Remove duplicate SPI parameter setting of "LCD_Init()".
    - Update SPI chip select define and SPI configuration by "LCD_SPI_SEL_AFIO_MODE".
    - Swap the "GPIO_DirectionConfig()" and "GPIO_SetOutBits()" function to prevent transient state
      of SPI_SEL pin.
  + Update "_ProjectConfig*.bat" files.
  + Add "Project Source File Setting" functions ("_ProjectSource.ini" and "_ProjectSource.bat").
  + Rename "_CreateProjectUSB.bat" as "_CreateProject.bat".
  + Add dummy xxTM C files, to notify the user that SCTM/PWM/GPTM/MCTM timer use the "ht32f1xxxx_tm.c" driver.
    "ht32f1xxxx_gptm.c", "ht32f1xxxx_pwm.c", "ht32f1xxxx_sctm.c"
  + Add "IS_IPN_MCTM()" and "IS_IPN_GPTM" macro, for use to confirm the xxTMn is GPTM or MCTM.
  + Update comment and board/pin configuration of "ADC/OneShot_TMTrigger_PDMA" example.
  + Update and sync startup.s/system.c files.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v005_2207                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2020-08-11

  Main Changes
  + Add the following files to use e-Link32 Pro with SEGGER Embedded Studio. Refer to the
    "readme e-Link32 Pro.txt" for how to use it.
    "emStudiov4/readme e-Link32 Pro.txt"
    "emStudiov4/Project_xxxxx.bat"
    "emStudiov4/_MassErase.bat"
  + Fix the "I2S_FIFOTrigLevelConfig()" error which did not clear the field of I2S FCR correctly.
  + Fix "RPRE_MASK" define error for "RTC_SetPrescaler()" function.
  + Add "SPI_FLASH_WaitForWriteEnd()" function in the end of the write status operation
    ("SPI_FLASH_WriteStatus()").
  + Modify "SPI_FLASH_WaitForWriteEnd()" function to return value of status register.
  + Add below notice of examples to inform the user to check the local structure variable without a
    default value.
    "Notice that the local variable (structure) did not have an initial value.
     Please confirm that there are no missing members in the parameter settings below this function."
  + Add "LIBCFG_MAX_SPEED" in the file "ht32fxxxxx_libcfg.h" which indicate the maximum core speed.
  + Add the following definition for convenience.
    PDMACH0_IRQn ~ PDMACH5_IRQn
    AFIO_FUN_MCTM0
    AFIO_FUN_GPTM0 ~ AFIO_FUN_GPTM3
    AFIO_FUN_PWM0
    AFIO_FUN_SCTM0 ~ AFIO_FUN_SCTM2
  + Add new examples.
    "TM/PWM"
    "TM/UpdateEvent"
  + Add "s64/u64" definition.

  Others
  + Update comment, format, typing error, and coding style.
  + Add below notice in the "FMC/FLASH_Security" example.
    "The Option Byte will be write protected (cannot be changed again) after the
     Security Protection is enabled. Refer to the user manual for details."
  + Remove HSI disable setting of Configuration Wizard and add notice in the "system_xxxxx_nn.c".
  + Update the following examples to remove compiler warning of the GNU compiler.
    "USBD/Mass_Storage"
    "USART/PDMA"
    "USART/Interrupt"
  + Add "-Waddress-of-packed-member" #pragma of below examples to remove compiler warning of the
    GNU compiler.
    "USBD/Mass_Storage"
    "USBD/Mass_Storage_IAP"
    "USBD/Mass_Storage_SDIO"
    "USBD/HID_Keyboard"
    "USBD/HID_Keyboard_Joystick"
    "USBD/HID_Keyboard_Mass_Storage"
    "USBD/HID_Keyboard_Virtual_COM"
    "USBD/HID_Mouse"

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v004_2103                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2020-04-25

  Main Changes
  + Remove the "I2C_Cmd()" in the "I2C_Init()" function since it shall be called after the I2C related
    settings. User shall call the "I2C_Cmd()" by themself after the "I2C_Init()".
  + Update "system_ht32f1xxxx_02.c", modify the LDO related setting.
  + Add "USART_GetIntStatus()" function to get the enabled interrupt source.
  + Add "RETARGET_HSI_ATM" setting to turn on/off the auto-trim function of HSI ("ht32f1xxxx_conf.h").
  + Add "USBDClass_Reset()" into the "USBD/*" example to reset related flag for the self-power application.
  + Modify "ht32f1xxxx_aes.c", fix "AES_SetKeyTable()" and "_AES_CryptData()" functions who did not clear
    related fields before set it.
  + Rename examples as below.
    IP         Old Name                           New Name
    --------   --------                           --------
    ADC        EXTITrigger_DiscontinuousMode      Discontinuous_EXTITrigger
    ADC        PDMA_ADCResult                     OneShot_TMTrigger_PDMA
    ADC        Potentiometer_ContinuousMode       Continuous_Potentiometer
    ADC        TM_Trigger                         OneShot_PWMTrigger
    ADC        TM_Trigger_with_Delay              OneShot_PWMTrigger_with_Delay
    USART      HyperTerminal_TxRx                 Retarget
    USART      HyperTerminal_TxRx_Interrupt       Interrupt
    USART      HyperTerminal_TxRx_Interrupt_FIFO  Interrupt_FIFO
  + Update the following example to improve readability.
    "ADC/AnalogWatchdog"
    "ADC/Continuous_Potentiometer"
    "ADC/Discontinuous_EXTITrigger"
    "ADC/InternalReferenceVoltage"
    "ADC/OneShot_PWMTrigger"
    "ADC/OneShot_PWMTrigger_with_Delay"
    "ADC/OneShot_TMTrigger_PDMA"
    "ADC/Two_Group_MaxCH"
    "USART/Interrupt"
    "USART/Interrupt_FIFO"
    "USART/PDMA"
    "USART/Polling"
    "USART/Retarget"
    "USBD/HID_Demo"
    "USBD/HID_DemoVendorReport"
  + Update UxART related example, turn on internal pull up to prevent unknown state.
  + Add new examples.
    "BFTM/OneShot"
    "BFTM/TimeMeasure"
  + Remove unnecessary RTC compare match restart setting of the RTC example
    (which cause the time not correct after entering the low power mode).
  + ADC to ADC0 related modification (to compatible with M0+ and ADC1).
    Modify "HT_ADC" and "ADC_IRQn" to "HT_ADC0" and "ADC0_IRQn".
    Modify "AFIO_FUN_ADC" as "AFIO_FUN_ADC0".
    Modify "CKCU_SetADCPrescaler()" to "CKCU_SetADCnPrescaler()".
    Add "CKCU_ADCPRE_ADCn_TypeDef".
    Modify "ADC_Freq" to "ADC0_Freq" of "CKCU_ClocksTypeDef".
    Modify "ADC" to "ADC0" of "RSTCU_PeripReset_TypeDef".
    Add "HT_ADC", "ADC_IRQn", "AFIO_FUN_ADC" define for backward compatibility.
  + Fix "HT_GPIOF" define error of HT32F12364.

  Others
  + Update "SPI/FIFO_SEL_Hardware" example, change the code location of the IP enable ("SPI_Cmd()").
  + Update "system_ht32fxxxxx_nn.c" (coding style).
  + Update "ht32_series.c/h" and "ht32_retarget_usbdconf.h" to improve the compatibly of the
    terminal software.
  + Update comment, format, typing error, and coding style.
  + Fix interrupt mode of UxART retarget, remove unnecessary FIFO/interrupt configuration of the
    retarget function.
  + Update format of "CKCU_PeripClockConfig_TypeDef" and "RSTCU_PeripReset_TypeDef".
  + Update and modify naming rule of the "HTCFG_xxxx" configuration define in the "ht32_board_config.h".
  + Update settings of project files.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v004_1946                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2019-11-28

  Main Changes
  + Move the "common/*.h" include from the begin to the end (after the pin define) in the file
    "HT32_Board/ht32fxxxx_sk/dvb.h". The original include way leads to the pin define lost when you
    use the EBI_LCD->EBI_LCD_RAM outside the "ebi_lcd.c".
  + Fix error of "_CreateProjectScript.bat" which cause the stack size and RW base can not be set by the
    "_ProjectConfig.bat" of the emStudiov4 project.
  + Add "GPIO_GetID()" function to convert HT_GPIOx to GPIO_Px.
  + Update "HID_Demo_UI.exe" to support HID Report ID.
  + Add "USBD/HID_DemoVendorReport" example.
  + Modify "SPI_Init()" function, fix SPIx Clock Prescaler setting of HT32F12364.
  + Modify "system_ht32f1xxxx_03.c", fix PLLCFGR initiation error which cause the "PLL_CLK_SRC_DIV" setting
    is not work.
  + Add "RETARGET_UxART_BAUDRATE" setting to change the retarget UART baudrate in "ht32f1xxxx_conf.h".
  + Add "RETARGET_HSI_ATM" setting to turn on/off the auto-trim function of HSI.
  + Add "RETARGET_DEFINE_HANDLER" setting to remove the UxARTn_IRQHandler() define of the retarget.
    This setting is used for the model who grouping two UART Interrupt into one vector.
  + Add non-block mode of USB Virtual-COM retarget function ((Drop data if USB or terminal software is
    not ready).
  + Modify "PWRCU_SetLDOFTRM()" function, fix the error which cause the LDO output voltage fine trim is
    not work.
  + Update "PWRCU_DeepSleep2()" to restore the LDO output voltage fine trim after system wakeup.
  + Add SWCLK toggle of "GPIO_DisableDebugPort()" function.

  Others
  + Add "utilities/common/lcd.h" to put the lcd related register together.
  + Update format and coding style.
  + Add PLL Output frequency comment of "system_ht32f1xxxx_nn.c".
  + Update project files.
    .c and .h files order.
    Project format.
    Include path order.
  + Add "USAGE_PAGE_L" define of "USB/HID_Demo" example.
  + Fix typing error of "ht32f1xxxx_conf.h".

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v004_1812                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2019-09-11

  Main Changes
  + Add new device support.
    HT32F12364
  + Update "ebi_lcd.c/h", fix LCD_SPI_BL_GPIO_XXX define error (shall be LCD_EBI_BL_GPIO_XXX).
  + Update USB example, use USB PLL by default (if USB PLL exist).
  + Fix function name typing error
    SPI_GUADTCmd()   ->  SPI_GUARDTCmd()
    SPI_GUADTConfig  ->  SPI_GUARDTConfig()
  + Update "ADC_RegularGroupConfig()" and "ADC_HPGroupConfig()", prevent to enable the ADC directly after
    the above function call. User shall use the "ADC_Cmd(HT_ADC, ENABLE);" to enable the ADC.
  + Rename following files.
    "IAR/startup_ht32f1xxxx_01.s" to "IARstartup_ht32f1xxxx_iar_01.s"
    "IAR/startup_ht32f1xxxx_03.s" to "IARstartup_ht32f1xxxx_iar_03.s"

  Others
  + Update comment and coding style.
  + Update "USART/HyperTerminal_TxRx_Interrupt" example, remove unnecessary configuration of LED.
  + Update readme file of "EBI/LCD" example.
  + Add "PWRCU/PowerDown_RTC" example.
  + Add "PWRCU/PWRCU_PowerDown_WAKEUPPin" example.
  + Add "RTC/Time" example.
  + Update and sync "ht32f1xxxx_conf.h".
  + Update and sync "HT32F1xxxx_01_DebugSupport.ini".
  + Update "ht32f1xxxx_tm.c", remove unnecessary variable initialization.
  + Update "ht32_op.c" and "ht32_op.s", edit comment of WDT Enable function.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v003_1679                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2019-04-19

  Main Changes
  + Fix error of "CKCU_HSIAutoTrimClkConfig()" function which cause the HSI auto-trim not work.
  + Modify following define of ADC.
    ADC_CH_GNDREF -> ADC_CH_GND_VREF
    ADC_CH_VREF   -> ADC_CH_VDD_VREF

  Others
  + None.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v003_1673                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2019-04-09

  Main Changes
  + Add SEGGER Embedded Studio IDE support (beta version).
  + Update "ht32f1xxxx_usbd.c" and "ht32_usbd_core.c", add Force USB Reset Control function (apply to specific
    model only).
  + Update Create Project script, add Script folder in project_template.
  + Add "TM/TriggerCounter" example.
  + Add "USBD/HID_Keyboard_Mass_Storage" example.

  Others
  + Update comment of example code.
  + Update define of "USBD/Mass_Storage" example.
  + Update "EXTI/WakeUp_DeepSleepMode1" Example, add LED3 (for some SK have only LED2 and LED3 on board).
  + Update/sync startup.s/system.c files.
  + Update/sync "HT32F1xxxx_01_DebugSupport.ini".
  + Update/sync "ht32_op.s" and "ht32_op.c".
  + Update "BootProcess" function.
  + Update/sync "FlashMacro.mac".

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v002_1496                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2018-12-17

  Main Changes
  + Modify Control IN/OUT method of USB Core, to fix USB transfer problem when CPU in the lower speed or late
    USB interrupt case.
  + Add workaround for PDMA CH3 issue (Interrupt Enable bit of CH3 is not work).

  Others
  + Add "USBD_DisableDefaultPull()" function to disable pull resistance when the USB is not use.
  + Rename RTC example as below.
    "Calendar" -> "Time_BackupDomain"
  + Add new example.
    "RTC/Calendar_BackupDomain"
    "FMC/EnableProtectionByFW"
  + Update "EXTI/WakeUp_DeepSleepMode1" example.
  + Update coding style.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v002_1406                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2018-09-30

  Main Changes
  + Update HardFault_Handler of "ht32f1xxxx_01_it.c",add the debug instruction and system reset.
  + Add "RAND/Random_Number" example and update "ht32_rand.c".
  + Add  "__HT_check_sp" and "__HT_check_heap" symbol into startup.s and watchpoint command into
    "HT32F1xxxx_01_DebugSupport.ini" for debug stack/heap underflow, overflow, and overwrite.
  + Update "USBD/HID_Keyboard_Joystick" and "USBD/HID_Mouse" example, change the set flag sequence
    (before USBDCore_EPTWriteINData).
  + Add GNU Make support of GNU Arm compiler.

  Others
  + Add "objcooy.txt" which shows how to use obj tools of GNU Arm compiler.
  + Update format and coding style.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v002_1367                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2018-08-02

  Main Changes
  + Add GNU Arm compiler support.
    - Add project_template related files
    - "startup_ht32f1xxxx_gcc_nn.s"
    - "linker.ld" (link script)
  + Update "ht32f1xxxx_tm.c/.h", add following functions which have TM_CH_n parameter.
    void TM_ForcedOREF(HT_TM_TypeDef* TMx, TM_CH_Enum TM_CH_n, TM_OM_Enum ForcedAction)
    void TM_SetCaptureCompare(HT_TM_TypeDef* TMx, TM_CH_Enum TM_CH_n, u16 Cmp)
    void TM_SetAsymmetricCompare(HT_TM_TypeDef* TMx, TM_CH_Enum TM_CH_n, u16 Cmp)
    u32 TM_GetCaptureCompare(HT_TM_TypeDef* TMx, TM_CH_Enum TM_CH_n)

  Others
  + Add "USBD/HID_Keyboard_Virtual_COM" example.
  + Fix compile error when turn on Library debug mode (HT32_LIB_DEBUG = 1).
  + Modify "example/NVIC/Vector_Table_Offset" example code to support GUN compiler.
  + Simplify "example/USART/HyperTerminal_TxRx_Interrupt" example.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_1302                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2018-06-11

  Main Changes
  + Add SourceryG++Lite compiler support.
    - Add project_template related files
    - "startup_ht32f1xxxx_cs3_nn.s"
    - "linker.ld" (link script)
  + Add DMA support of "utilities/common/spi_flash.c".
  + Add "EXTI_GetEdgeFlag()" function.
  + Add LIBCFG_AES_SWAP function to process endian issue of AES.

  Others
  + Update "ht32f1xxxx_conf.h" for AUTO_RETURN (\r) option.
  + Update format of IAR "startup_ht32f1xxxx_01.s".
  + Fix "LIBCFC_CKCU_USB_PLL" typing error of ht32fxxxx_libcfg.h and example code (shall be LIBCFG_CKCU_USB_PLL).
  + Fix IAP_PPBIT define error of "IAP/IAP_UI" example.
  + Update "ht32f1xxxx_ckcu.c" to remove unnecessary register write of PLL.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_1153                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2018-02-28

  Main Changes
  + Add "USBD/USB_UAC_Sound_RateControl" Example.
  + Add "I2C_SpeedOffset" parameter of I2C_InitTypeDef to reach real I2C speed.
    Note: Related examples are also updated.
  + Change EBI timing of "ebi_lcd.c" to fix LCD display problem on HT32F12345 with ESK32-A2A31.
  + Add "CKCU/HSI_AutoTrim_By_USB" Example.
  + Update "CKCU_HSIAutoTrimIsReady" function of "ht32f1xxxx_ckcu.c".

  Others
  + Update format and coding style.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_1023                                                                               */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-12-30

  Main Changes
  + Update boot related functions of "startup_ht32f1xxxx_nn.s" and "system_ht32f1xxxx_nn.c".
  + Update "ht32_op.c" and "ht32_op.s" to support enable WDT function by Flash Option byte (Apply to specific
    model only).
  + Add "GPIO_DisableDebugPort()"" function to disable SWD function.

  Others
  + Fix IAR Project setting error of IAP Example.
  + Add "RTC_LSILoadTrimData()" function.
  + Add "LIBCFG_RTC_LSI_LOAD_TRIM" define of HT32F165x.
  + Remove useless "RTC_LSICmd()"" function.
  + Update following examples, remove LSI enable code (LSI default on).
    "PWRCU/DeepSleepMode1"
    "PWRCU/BackupData"
    "PWRCU/DeepSleepMode2"
    "PWRCU/PowerDownMode"
    "RTC/Calendar"
  + Update I2S and USB UAC related examples (Coding style and remove unuse define).
  + Update USB Example, remove invalid remote wakeup configuration by define (Only HID class support Remote
    Wakeup).

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_933                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-11-17

  Main Changes
  + Fix AES typing error of "ht32f1xxxx_aes.c/.h" (EBC to ECB).
  + Fix TM define error of "ht32f1xxxx_tm.c/.h".

  Others
  + Update "ht32_virtual_com.inf" file, add Digital Signature.
  + Update typing error of example code.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_899                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-10-19

  Main Changes
  + Update "SDIO/SDCard" Example code. Fix read Card SCR problem which causes SDIO working on 1-bit mode
    abnormally.

  Others
  + Update project setting.
  + Remove some project files. Use "CreateProject.bat" to copy project files automatically.
  + Add "LIBCFG_CHIPNAME" define.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_785                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-08-31

  Main Changes
  + Fix "ht32f1xxxx_conf.h" typing error ("_ADC" to "_AES").
  + Fix AES typing error (EBC to ECB).

  Others
  + Update "ht32_usbd_core.c" to support vendor function.
  + Add "USE_MEM_HT32F1xxxx" define into project.
  + Add "USE_MEM_HT32F1xxxx" default define into "ht32f1xxxx_xx_libcfg.h".
  + Rename "system_ht32f1xxxx.h" to "system_ht32f1xxxx_01.h" for PACK requirement.
  + Update IAP examples.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_671                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-07-27

  Main Changes
  + None

  Others
  + Update "ht32_op.c", add CK_CODE/CK_DATA/CK_CODEOP in Option Bytes (same format with e-Writer32).
  + Modify USB/Mass_Storage example for WIN10 compatibility issue.
  + Add "USE_MEM_HT32F1xxxx" support for memory size define (LIBCFG_FLASH_SIZE/LIBCFG_RAM_SIZE).
  + Add IAR EWARMv8 project template (create by IAR EWARM v8.11).
  + Upgrade the version of IAR EWARM project template from v6.20 to v6.50.
    Note:
    1. Supported CMSIS-DAP: IAR EWARM v6.50 and above.
    2. RDI/e-Link32 is not supported anymore from the v8.xx of IAR EWARM.

  Known Issue:
  + IAP example is not ready, will be update in next release.

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_552                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-07-17

  Main Changes
  + Add example code.
  + Update TM for PDMA support.
  + Fix "USART_RXTL_01/04/08/14" define error.
  + Fix "HT32F_DVB_BuzzerFun()" define error of "ht32f1xxxx_board_01.c".
  + Fix pin assignment error of "ht32f12366_sk.h"

  Others
  + Add BUTTON_MODE_WAKE_UP support for "ht32f1xxxx_sk.c/.h".
  + Update typing error and coding style.
  + Remove warning on old MDK-ARM version.
  + Update project setting.
  + Add DEINIT_ENABLE setting of "ht32f1xxxx_system_nn.c".

/*----------------------------------------------------------------------------------------------------------*/
/* HT32F1xxxx_FWLib_v001_167                                                                                */
/*----------------------------------------------------------------------------------------------------------*/
  Release Date: 2017-06-14

  Main Changes
  + Initial version.

  Others
  +
