Browse Source

Merge branch 'master' into arduino

Man, Jianting (Meco) 3 years ago
parent
commit
c5d16f28dd
100 changed files with 22915 additions and 4644 deletions
  1. 2302 0
      bsp/acm32f4xx-nucleo/project.ewp
  2. 10 0
      bsp/acm32f4xx-nucleo/project.eww
  3. 2074 0
      bsp/acm32f4xx-nucleo/template.ewp
  4. 10 0
      bsp/acm32f4xx-nucleo/template.eww
  5. 37 40
      bsp/apm32/apm32f103xe-minibroard/project.ewp
  6. 3 623
      bsp/apm32/apm32f103xe-minibroard/project.uvoptx
  7. 57 64
      bsp/apm32/apm32f103xe-minibroard/project.uvprojx
  8. 0 465
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s
  9. 0 394
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s
  10. 368 0
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_hd.s
  11. 315 0
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_md.s
  12. 466 775
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s
  13. 364 604
      bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s
  14. 1 1
      bsp/apm32/libraries/Drivers/drv_common.c
  15. 22 0
      bsp/apm32/tools/sdk_dist.py
  16. 6 0
      bsp/at32/libraries/f403a_407/.ignore_format.yml
  17. 16 14
      bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c
  18. 16 14
      bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c
  19. 16 14
      bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c
  20. 2 0
      bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini
  21. 12 0
      bsp/nuvoton/libraries/n9h30/Script/N9H30.sct
  22. 15 13
      bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c
  23. 17 4
      bsp/nuvoton/libraries/nu_packages/Kconfig
  24. 3 0
      bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c
  25. 18 0
      bsp/nuvoton/libraries/nu_packages/TPC/SConscript
  26. 490 0
      bsp/nuvoton/libraries/nu_packages/TPC/gt911.c
  27. 41 0
      bsp/nuvoton/libraries/nu_packages/TPC/gt911.h
  28. 644 0
      bsp/nuvoton/libraries/nu_packages/TPC/ili.c
  29. 18 0
      bsp/nuvoton/libraries/nu_packages/TPC/ili.h
  30. 117 0
      bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c
  31. 15 13
      bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c
  32. 87 81
      bsp/nuvoton/nk-980iot/.config
  33. 4 6
      bsp/nuvoton/nk-980iot/README.md
  34. 39 44
      bsp/nuvoton/nk-980iot/rtconfig.h
  35. 58 73
      bsp/nuvoton/nk-980iot/spinor.config
  36. 38 10
      bsp/nuvoton/nk-980iot/template.uvproj
  37. 0 387
      bsp/nuvoton/nk-980iot/template.uvprojx
  38. 46 64
      bsp/nuvoton/nk-n9h30/.config
  39. 3 3
      bsp/nuvoton/nk-n9h30/README.md
  40. 7 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h
  41. 4 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c
  42. 18 35
      bsp/nuvoton/nk-n9h30/rtconfig.h
  43. 41 12
      bsp/nuvoton/nk-n9h30/template.uvproj
  44. 0 387
      bsp/nuvoton/nk-n9h30/template.uvprojx
  45. 48 63
      bsp/nuvoton/nk-rtu980/.config
  46. 4 6
      bsp/nuvoton/nk-rtu980/README.md
  47. 17 35
      bsp/nuvoton/nk-rtu980/rtconfig.h
  48. 43 14
      bsp/nuvoton/nk-rtu980/template.uvproj
  49. 45 63
      bsp/nuvoton/numaker-iot-m487/.config
  50. 14 33
      bsp/nuvoton/numaker-iot-m487/rtconfig.h
  51. 61 65
      bsp/nuvoton/numaker-m032ki/.config
  52. 15 32
      bsp/nuvoton/numaker-m032ki/rtconfig.h
  53. 49 63
      bsp/nuvoton/numaker-m2354/.config
  54. 15 33
      bsp/nuvoton/numaker-m2354/rtconfig.h
  55. 49 64
      bsp/nuvoton/numaker-pfm-m487/.config
  56. 15 33
      bsp/nuvoton/numaker-pfm-m487/rtconfig.h
  57. 6 0
      bsp/v85xxp/.ignore_format.yml
  58. 97 0
      bsp/v85xxp/Kconfig
  59. 46 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_CodeRAM.h
  60. 235 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_LoadNVR.h
  61. 62 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_conf.h
  62. 49 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_cortex.h
  63. 38 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/system_target.h
  64. 2771 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/target.h
  65. 107 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/type_def.h
  66. 478 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S
  67. 450 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S
  68. 35 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c
  69. 700 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c
  70. 198 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_cortex.c
  71. 76 0
      bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/system_target.c
  72. 894 0
      bsp/v85xxp/Libraries/CMSIS/cmsis_armcc.h
  73. 266 0
      bsp/v85xxp/Libraries/CMSIS/cmsis_compiler.h
  74. 2085 0
      bsp/v85xxp/Libraries/CMSIS/cmsis_gcc.h
  75. 39 0
      bsp/v85xxp/Libraries/CMSIS/cmsis_version.h
  76. 949 0
      bsp/v85xxp/Libraries/CMSIS/core_cm0.h
  77. 616 0
      bsp/v85xxp/Libraries/CMSIS/core_cmFunc.h
  78. 618 0
      bsp/v85xxp/Libraries/CMSIS/core_cmInstr.h
  79. 30 0
      bsp/v85xxp/Libraries/SConscript
  80. 308 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc.h
  81. 81 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc_tiny.h
  82. 118 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_ana.h
  83. 338 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_clk.h
  84. 205 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_cmp.h
  85. 107 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_crypt.h
  86. 267 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_dma.h
  87. 159 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_flash.h
  88. 225 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_gpio.h
  89. 164 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_i2c.h
  90. 174 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_iso7816.h
  91. 147 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_lcd.h
  92. 85 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_misc.h
  93. 362 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pmu.h
  94. 258 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pwm.h
  95. 229 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_rtc.h
  96. 212 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_spi.h
  97. 68 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_tmr.h
  98. 160 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_u32k.h
  99. 172 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_uart.h
  100. 36 0
      bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_version.h

+ 2302 - 0
bsp/acm32f4xx-nucleo/project.ewp

@@ -0,0 +1,2302 @@
+<project>
+  <fileVersion>3</fileVersion>
+  <configuration>
+    <name>rt-thread</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>31</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>build\iar\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>build\iar\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>build\iar\List</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Automatic choice of formatter, without multibyte support.</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Automatic choice of formatter, without multibyte support.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.30.6.53380</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>8.32.1.18618</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F072RB	ST STM32F072RB</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>26</version>
+          <state>59</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibThreads</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CoreVariant</name>
+          <version>26</version>
+          <state>59</state>
+        </option>
+        <option>
+          <name>GFPUDeviceSlave</name>
+          <state>STM32F072RB	ST STM32F072RB</state>
+        </option>
+        <option>
+          <name>FPU2</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>NrRegs</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>NEON</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave2</name>
+          <version>26</version>
+          <state>59</state>
+        </option>
+        <option>
+          <name>OGCMSISPackSelectDevice</name>
+        </option>
+        <option>
+          <name>OgLibHeap</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGLibAdditionalLocale</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGPrintfVariant</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGPrintfMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGScanfVariant</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGScanfMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenLocaleTags</name>
+          <state />
+        </option>
+        <option>
+          <name>GenLocaleDisplayOnly</name>
+          <state />
+        </option>
+        <option>
+          <name>DSPExtension</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TrustZone</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TrustZoneModes</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>35</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state />
+          <state>RT_USING_DLIBC</state>
+          <state>__RTTHREAD__</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state />
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>00000000</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state />
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state />
+          <state>$PROJ_DIR$\libraries\HAL_Driver\Inc</state>
+          <state>$PROJ_DIR$\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33</state>
+          <state>$PROJ_DIR$\..\..\components\libc\compilers\common\extension</state>
+          <state>$PROJ_DIR$\..\..\components\libc\compilers\common</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\ipc</state>
+          <state>$PROJ_DIR$\drivers</state>
+          <state>$PROJ_DIR$\.</state>
+          <state>$PROJ_DIR$\libraries\Device</state>
+          <state>$PROJ_DIR$\applications</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\io\poll</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\io\stdio</state>
+          <state>$PROJ_DIR$\libraries\CMSIS</state>
+          <state>$PROJ_DIR$\..\..\components\drivers\include</state>
+          <state>$PROJ_DIR$\..\..\libcpu\arm\common</state>
+          <state>$PROJ_DIR$\..\..\components\finsh</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCNoLiteralPool</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategySlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCGuardCalls</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEncSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEncOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEncOutputBom</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEncInput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccExceptions2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccRTTI2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OICompilerExtraOption</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>10</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state />
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state />
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state />
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state />
+        </option>
+        <option>
+          <name>AsmNoLiteralPool</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>3</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>../../../rtthread.bin</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions />
+        <cmdline />
+        <hasPrio>0</hasPrio>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild />
+        <postbuild />
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>22</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>project.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\drivers\linker_scripts\link.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state />
+          <state>$PROJ_DIR$\libraries\Device\libSystem_Accelerate.a</state>
+          <state>$PROJ_DIR$\libraries\HAL_Driver\Src\libHAL_EFlash_EX.a</state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state />
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkThreadsSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogCallGraph</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile_AltDefault</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkEncInput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkEncOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkEncOutputBom</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkHeapSelect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLocaleSelect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkTrustzoneImportLibraryOut</name>
+          <state>template_import_lib.o</state>
+        </option>
+        <option>
+          <name>OILinkExtraOption</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state />
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>31</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>build\iar\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>build\iar\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>build\iar\List</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Automatic choice of formatter, without multibyte support.</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Automatic choice of formatter, without multibyte support.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.30.6.53380</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>8.32.1.18618</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>Default	None</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>26</version>
+          <state>34</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibThreads</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CoreVariant</name>
+          <version>26</version>
+          <state>34</state>
+        </option>
+        <option>
+          <name>GFPUDeviceSlave</name>
+          <state>Default	None</state>
+        </option>
+        <option>
+          <name>FPU2</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NrRegs</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NEON</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave2</name>
+          <version>26</version>
+          <state>34</state>
+        </option>
+        <option>
+          <name>OGCMSISPackSelectDevice</name>
+        </option>
+        <option>
+          <name>OgLibHeap</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGLibAdditionalLocale</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGPrintfVariant</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGPrintfMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGScanfVariant</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGScanfMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenLocaleTags</name>
+          <state />
+        </option>
+        <option>
+          <name>GenLocaleDisplayOnly</name>
+          <state />
+        </option>
+        <option>
+          <name>DSPExtension</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TrustZone</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TrustZoneModes</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>35</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state />
+          <state>RT_USING_DLIBC</state>
+          <state>__RTTHREAD__</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state />
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>11111110</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state />
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state />
+          <state>$PROJ_DIR$\libraries\HAL_Driver\Inc</state>
+          <state>$PROJ_DIR$\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33</state>
+          <state>$PROJ_DIR$\..\..\components\libc\compilers\common\extension</state>
+          <state>$PROJ_DIR$\..\..\components\libc\compilers\common</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\ipc</state>
+          <state>$PROJ_DIR$\drivers</state>
+          <state>$PROJ_DIR$\.</state>
+          <state>$PROJ_DIR$\libraries\Device</state>
+          <state>$PROJ_DIR$\applications</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\io\poll</state>
+          <state>$PROJ_DIR$\..\..\components\libc\posix\io\stdio</state>
+          <state>$PROJ_DIR$\libraries\CMSIS</state>
+          <state>$PROJ_DIR$\..\..\components\drivers\include</state>
+          <state>$PROJ_DIR$\..\..\libcpu\arm\common</state>
+          <state>$PROJ_DIR$\..\..\components\finsh</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCNoLiteralPool</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategySlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCGuardCalls</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEncSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEncOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEncOutputBom</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEncInput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccExceptions2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccRTTI2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OICompilerExtraOption</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>10</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state />
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state />
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state />
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state />
+        </option>
+        <option>
+          <name>AsmNoLiteralPool</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>3</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>rtthread.bin</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions />
+        <cmdline />
+        <hasPrio>0</hasPrio>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild />
+        <postbuild />
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>22</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>template.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\drivers\linker_scripts\link.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state />
+          <state>$PROJ_DIR$\libraries\Device\libSystem_Accelerate.a</state>
+          <state>$PROJ_DIR$\libraries\HAL_Driver\Src\libHAL_EFlash_EX.a</state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state />
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkThreadsSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogCallGraph</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile_AltDefault</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkEncInput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkEncOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkEncOutputBom</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkHeapSelect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLocaleSelect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkTrustzoneImportLibraryOut</name>
+          <state>template_import_lib.o</state>
+        </option>
+        <option>
+          <name>OILinkExtraOption</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state />
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+  </configuration>
+  <group>
+    <name>ACM32_HAL</name>
+    <file>
+      <name>$PROJ_DIR$\libraries\HAL_Driver\Src\HAL_UART.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\HAL_Driver\Src\HAL_EXTI.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\HAL_Driver\Src\HAL_DMA.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\Device\Startup_ACM32F4_iar.s</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\Device\System_ACM32F4.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\HAL_Driver\Src\HAL_GPIO.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\libraries\HAL_Driver\Src\HAL_EFlash.c</name>
+    </file>
+  </group>
+  <group>
+    <name>Applications</name>
+    <file>
+      <name>$PROJ_DIR$\applications\main.c</name>
+    </file>
+  </group>
+  <group>
+    <name>Compiler</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\common\time.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\common\stdlib.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c</name>
+    </file>
+  </group>
+  <group>
+    <name>CPU</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\common\div0.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\common\showmem.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33\context_iar.S</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33\syscall_iar.S</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33\trustzone.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\libcpu\arm\cortex-m33\cpuport.c</name>
+    </file>
+  </group>
+  <group>
+    <name>DeviceDrivers</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\pipe.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\completion.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\misc\pin.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\drivers\serial\serial.c</name>
+    </file>
+  </group>
+  <group>
+    <name>Drivers</name>
+    <file>
+      <name>$PROJ_DIR$\drivers\board.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\drivers\drv_gpio.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\drivers\drv_uart.c</name>
+    </file>
+  </group>
+  <group>
+    <name>Finsh</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\finsh\shell.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\finsh\msh.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\finsh\cmd.c</name>
+    </file>
+  </group>
+  <group>
+    <name>Kernel</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\components.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\kservice.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\clock.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\object.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\irq.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\idle.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\ipc.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\mem.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\mempool.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\scheduler.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\timer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\thread.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\src\device.c</name>
+    </file>
+  </group>
+  <group>
+    <name>POSIX</name>
+  </group>
+</project>

+ 10 - 0
bsp/acm32f4xx-nucleo/project.eww

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\project.ewp</path>
+  </project>
+  <batchBuild/>
+</workspace>
+
+

+ 2074 - 0
bsp/acm32f4xx-nucleo/template.ewp

@@ -0,0 +1,2074 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+    <fileVersion>3</fileVersion>
+    <configuration>
+        <name>rt-thread</name>
+        <toolchain>
+            <name>ARM</name>
+        </toolchain>
+        <debug>1</debug>
+        <settings>
+            <name>General</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <version>31</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>ExePath</name>
+                    <state>build\iar\Exe</state>
+                </option>
+                <option>
+                    <name>ObjPath</name>
+                    <state>build\iar\Obj</state>
+                </option>
+                <option>
+                    <name>ListPath</name>
+                    <state>build\iar\List</state>
+                </option>
+                <option>
+                    <name>GEndianMode</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>Input description</name>
+                    <state>Automatic choice of formatter, without multibyte support.</state>
+                </option>
+                <option>
+                    <name>Output description</name>
+                    <state>Automatic choice of formatter, without multibyte support.</state>
+                </option>
+                <option>
+                    <name>GOutputBinary</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGCoreOrChip</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelect</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelectSlave</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RTDescription</name>
+                    <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+                </option>
+                <option>
+                    <name>OGProductVersion</name>
+                    <state>6.30.6.53380</state>
+                </option>
+                <option>
+                    <name>OGLastSavedByProductVersion</name>
+                    <state>8.32.1.18618</state>
+                </option>
+                <option>
+                    <name>GeneralEnableMisra</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVerbose</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGChipSelectEditMenu</name>
+                    <state>STM32F072RB	ST STM32F072RB</state>
+                </option>
+                <option>
+                    <name>GenLowLevelInterface</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GEndianModeBE</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OGBufferedTerminalOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GenStdoutInterface</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>RTConfigPath2</name>
+                    <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
+                </option>
+                <option>
+                    <name>GBECoreSlave</name>
+                    <version>26</version>
+                    <state>59</state>
+                </option>
+                <option>
+                    <name>OGUseCmsis</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGUseCmsisDspLib</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibThreads</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CoreVariant</name>
+                    <version>26</version>
+                    <state>59</state>
+                </option>
+                <option>
+                    <name>GFPUDeviceSlave</name>
+                    <state>STM32F072RB	ST STM32F072RB</state>
+                </option>
+                <option>
+                    <name>FPU2</name>
+                    <version>0</version>
+                    <state>6</state>
+                </option>
+                <option>
+                    <name>NrRegs</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>NEON</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GFPUCoreSlave2</name>
+                    <version>26</version>
+                    <state>59</state>
+                </option>
+                <option>
+                    <name>OGCMSISPackSelectDevice</name>
+                </option>
+                <option>
+                    <name>OgLibHeap</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGLibAdditionalLocale</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGPrintfVariant</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGPrintfMultibyteSupport</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGScanfVariant</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGScanfMultibyteSupport</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GenLocaleTags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>GenLocaleDisplayOnly</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>DSPExtension</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TrustZone</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TrustZoneModes</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>ICCARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>35</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>CCOptimizationNoSizeConstraints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCPreprocFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocComments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMnemonics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMessages</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagSuppress</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagRemark</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagWarning</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagError</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCAllowList</name>
+                    <version>1</version>
+                    <state>00000000</state>
+                </option>
+                <option>
+                    <name>CCDebugInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IEndianMode</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IExtraOptionsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCLangConformance</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSignedPlainChar</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCRequirePrototypes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagWarnAreErr</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCompilerRuntimeInfo</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>CCLibConfigHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>PreInclude</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CompilerMisraOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCIncludePath2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCStdIncCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCodeSection</name>
+                    <state>.text</state>
+                </option>
+                <option>
+                    <name>IProcessorMode2</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCOptLevel</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCOptStrategy</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptLevelSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>CCPosIndRopi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndRwpi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndNoDynInit</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccLang</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCDialect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccAllowVLA</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccStaticDestr</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccCppInlineSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccFloatSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptStrategySlave</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCGuardCalls</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccExceptions2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccRTTI2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OICompilerExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>AARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>10</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>AObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AEndian</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>ACaseSensitivity</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacroChars</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnWhat</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnOne</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange1</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>ADebug</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AltRegisterNames</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ADefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AList</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AListHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AListing</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>Includes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacDefs</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacExps</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacExec</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OnlyAssed</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MultiLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLengthCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLength</name>
+                    <state>80</state>
+                </option>
+                <option>
+                    <name>TabSpacing</name>
+                    <state>8</state>
+                </option>
+                <option>
+                    <name>AXRef</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDefines</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefInternal</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDual</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AOutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsEdit</name>
+                    <state>100</state>
+                </option>
+                <option>
+                    <name>AIgnoreStdInclude</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AUserIncludes</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AExtraOptionsCheckV2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AExtraOptionsV2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AsmNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>OBJCOPY</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>1</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>OOCOutputFormat</name>
+                    <version>3</version>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>OCOutputOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCOutputFile</name>
+                    <state>../../../rtthread.bin</state>
+                </option>
+                <option>
+                    <name>OOCCommandLineProducer</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCObjCopyEnable</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>CUSTOM</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <extensions></extensions>
+                <cmdline></cmdline>
+                <hasPrio>0</hasPrio>
+            </data>
+        </settings>
+        <settings>
+            <name>BICOMP</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+        <settings>
+            <name>BUILDACTION</name>
+            <archiveVersion>1</archiveVersion>
+            <data>
+                <prebuild></prebuild>
+                <postbuild></postbuild>
+            </data>
+        </settings>
+        <settings>
+            <name>ILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>22</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>IlinkLibIOConfig</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>XLinkMisraHandler</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkInputFileSlave</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOutputFile</name>
+                    <state>project.out</state>
+                </option>
+                <option>
+                    <name>IlinkDebugInfoEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkKeepSymbols</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySymbol</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySegment</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryAlign</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkConfigDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkMapFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogInitialization</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogModule</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogSection</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogVeneer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile</name>
+                    <state>$PROJ_DIR$\drivers\linker_scripts\link.icf</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFileSlave</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkSuppressDiags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsRem</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsWarn</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsErr</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkWarningsAreErrors</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkUseExtraOptions</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkLowLevelInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAutoLibEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAdditionalLibs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkOverrideProgramEntryLabel</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabelSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabel</name>
+                    <state>__iar_program_start</state>
+                </option>
+                <option>
+                    <name>DoFill</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>FillerByte</name>
+                    <state>0xFF</state>
+                </option>
+                <option>
+                    <name>FillerStart</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>FillerEnd</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>CrcSize</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcAlign</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcPoly</name>
+                    <state>0x11021</state>
+                </option>
+                <option>
+                    <name>CrcCompl</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcBitOrder</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcInitialValue</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>DoCrc</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkBE8Slave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkBufferedTerminalOutput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkStdoutInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcFullSize</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIElfToolPostProcess</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogAutoLibSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogRedirSymbols</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogUnusedFragments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcReverseByteOrder</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcUseAsInput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptInline</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsAllow</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsForce</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptMergeDuplSections</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOptUseVfe</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptForceVfe</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackAnalysisEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackControlFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkStackCallGraphFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CrcAlgorithm</name>
+                    <version>1</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcUnitSize</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkThreadsSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLogCallGraph</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile_AltDefault</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkHeapSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLocaleSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkTrustzoneImportLibraryOut</name>
+                    <state>template_import_lib.o</state>
+                </option>
+                <option>
+                    <name>OILinkExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>IARCHIVE</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>1</debug>
+                <option>
+                    <name>IarchiveInputs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IarchiveOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IarchiveOutput</name>
+                    <state>###Unitialized###</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>BILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+    </configuration>
+    <configuration>
+        <name>Release</name>
+        <toolchain>
+            <name>ARM</name>
+        </toolchain>
+        <debug>0</debug>
+        <settings>
+            <name>General</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <version>31</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>ExePath</name>
+                    <state>build\iar\Exe</state>
+                </option>
+                <option>
+                    <name>ObjPath</name>
+                    <state>build\iar\Obj</state>
+                </option>
+                <option>
+                    <name>ListPath</name>
+                    <state>build\iar\List</state>
+                </option>
+                <option>
+                    <name>GEndianMode</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>Input description</name>
+                    <state>Automatic choice of formatter, without multibyte support.</state>
+                </option>
+                <option>
+                    <name>Output description</name>
+                    <state>Automatic choice of formatter, without multibyte support.</state>
+                </option>
+                <option>
+                    <name>GOutputBinary</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGCoreOrChip</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelect</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelectSlave</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RTDescription</name>
+                    <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+                </option>
+                <option>
+                    <name>OGProductVersion</name>
+                    <state>6.30.6.53380</state>
+                </option>
+                <option>
+                    <name>OGLastSavedByProductVersion</name>
+                    <state>8.32.1.18618</state>
+                </option>
+                <option>
+                    <name>GeneralEnableMisra</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVerbose</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGChipSelectEditMenu</name>
+                    <state>Default	None</state>
+                </option>
+                <option>
+                    <name>GenLowLevelInterface</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GEndianModeBE</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OGBufferedTerminalOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GenStdoutInterface</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>RTConfigPath2</name>
+                    <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
+                </option>
+                <option>
+                    <name>GBECoreSlave</name>
+                    <version>26</version>
+                    <state>34</state>
+                </option>
+                <option>
+                    <name>OGUseCmsis</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGUseCmsisDspLib</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibThreads</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CoreVariant</name>
+                    <version>26</version>
+                    <state>34</state>
+                </option>
+                <option>
+                    <name>GFPUDeviceSlave</name>
+                    <state>Default	None</state>
+                </option>
+                <option>
+                    <name>FPU2</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>NrRegs</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>NEON</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GFPUCoreSlave2</name>
+                    <version>26</version>
+                    <state>34</state>
+                </option>
+                <option>
+                    <name>OGCMSISPackSelectDevice</name>
+                </option>
+                <option>
+                    <name>OgLibHeap</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGLibAdditionalLocale</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGPrintfVariant</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGPrintfMultibyteSupport</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGScanfVariant</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGScanfMultibyteSupport</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GenLocaleTags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>GenLocaleDisplayOnly</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>DSPExtension</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TrustZone</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TrustZoneModes</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>ICCARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>35</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CCOptimizationNoSizeConstraints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCPreprocFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocComments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMnemonics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMessages</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagSuppress</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagRemark</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagWarning</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagError</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCAllowList</name>
+                    <version>1</version>
+                    <state>11111110</state>
+                </option>
+                <option>
+                    <name>CCDebugInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IEndianMode</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IExtraOptionsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCLangConformance</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSignedPlainChar</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCRequirePrototypes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagWarnAreErr</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCompilerRuntimeInfo</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>CCLibConfigHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>PreInclude</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CompilerMisraOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCIncludePath2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCStdIncCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCodeSection</name>
+                    <state>.text</state>
+                </option>
+                <option>
+                    <name>IProcessorMode2</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCOptLevel</name>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>CCOptStrategy</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptLevelSlave</name>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>CCPosIndRopi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndRwpi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndNoDynInit</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccLang</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCDialect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccAllowVLA</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccStaticDestr</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccCppInlineSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccFloatSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptStrategySlave</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCGuardCalls</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccExceptions2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccRTTI2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OICompilerExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>AARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>10</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>AObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AEndian</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>ACaseSensitivity</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacroChars</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnWhat</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnOne</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange1</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>ADebug</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AltRegisterNames</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ADefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AList</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AListHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AListing</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>Includes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacDefs</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacExps</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacExec</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OnlyAssed</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MultiLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLengthCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLength</name>
+                    <state>80</state>
+                </option>
+                <option>
+                    <name>TabSpacing</name>
+                    <state>8</state>
+                </option>
+                <option>
+                    <name>AXRef</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDefines</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefInternal</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDual</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AOutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsEdit</name>
+                    <state>100</state>
+                </option>
+                <option>
+                    <name>AIgnoreStdInclude</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AUserIncludes</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AExtraOptionsCheckV2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AExtraOptionsV2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AsmNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>OBJCOPY</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>1</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OOCOutputFormat</name>
+                    <version>3</version>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>OCOutputOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCOutputFile</name>
+                    <state>rtthread.bin</state>
+                </option>
+                <option>
+                    <name>OOCCommandLineProducer</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCObjCopyEnable</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>CUSTOM</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <extensions></extensions>
+                <cmdline></cmdline>
+                <hasPrio>0</hasPrio>
+            </data>
+        </settings>
+        <settings>
+            <name>BICOMP</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+        <settings>
+            <name>BUILDACTION</name>
+            <archiveVersion>1</archiveVersion>
+            <data>
+                <prebuild></prebuild>
+                <postbuild></postbuild>
+            </data>
+        </settings>
+        <settings>
+            <name>ILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>22</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>IlinkLibIOConfig</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>XLinkMisraHandler</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkInputFileSlave</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOutputFile</name>
+                    <state>template.out</state>
+                </option>
+                <option>
+                    <name>IlinkDebugInfoEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkKeepSymbols</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySymbol</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySegment</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryAlign</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkConfigDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkMapFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogInitialization</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogModule</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogSection</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogVeneer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile</name>
+                    <state>$PROJ_DIR$\drivers\linker_scripts\link.icf</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFileSlave</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkSuppressDiags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsRem</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsWarn</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsErr</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkWarningsAreErrors</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkUseExtraOptions</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkLowLevelInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAutoLibEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAdditionalLibs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkOverrideProgramEntryLabel</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabelSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabel</name>
+                    <state>__iar_program_start</state>
+                </option>
+                <option>
+                    <name>DoFill</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>FillerByte</name>
+                    <state>0xFF</state>
+                </option>
+                <option>
+                    <name>FillerStart</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>FillerEnd</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>CrcSize</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcAlign</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcPoly</name>
+                    <state>0x11021</state>
+                </option>
+                <option>
+                    <name>CrcCompl</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcBitOrder</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcInitialValue</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>DoCrc</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkBE8Slave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkBufferedTerminalOutput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkStdoutInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcFullSize</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIElfToolPostProcess</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogAutoLibSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogRedirSymbols</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogUnusedFragments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcReverseByteOrder</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcUseAsInput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptInline</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsAllow</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsForce</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptMergeDuplSections</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOptUseVfe</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptForceVfe</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackAnalysisEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackControlFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkStackCallGraphFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CrcAlgorithm</name>
+                    <version>1</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcUnitSize</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkThreadsSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLogCallGraph</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile_AltDefault</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkHeapSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLocaleSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkTrustzoneImportLibraryOut</name>
+                    <state>template_import_lib.o</state>
+                </option>
+                <option>
+                    <name>OILinkExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>IARCHIVE</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>IarchiveInputs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IarchiveOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IarchiveOutput</name>
+                    <state>###Unitialized###</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>BILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+    </configuration>
+</project>

+ 10 - 0
bsp/acm32f4xx-nucleo/template.eww

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\template.ewp</path>
+  </project>
+  <batchBuild/>
+</workspace>
+
+

+ 37 - 40
bsp/apm32/apm32f103xe-minibroard/project.ewp

@@ -353,20 +353,20 @@
           <state>$PROJ_DIR$\..\..\..\components\finsh</state>
           <state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+          <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
           <state>$PROJ_DIR$\..\libraries\Drivers</state>
           <state>$PROJ_DIR$\..\libraries\Drivers\config</state>
           <state>$PROJ_DIR$\..\..\..\components\drivers\include</state>
-          <state>$PROJ_DIR$\..\..\..\examples\utest\testcases\kernel</state>
           <state>$PROJ_DIR$\.</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Include</state>
           <state>$PROJ_DIR$\applications</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\inc</state>
-          <state>$PROJ_DIR$\board</state>
+          <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\CMSIS\Include</state>
           <state>$PROJ_DIR$\..\..\..\include</state>
-          <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\nogcc</state>
+          <state>$PROJ_DIR$\board</state>
         </option>
         <option>
           <name>CCStdIncCheck</name>
@@ -1430,20 +1430,20 @@
           <state>$PROJ_DIR$\..\..\..\components\finsh</state>
           <state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+          <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
           <state>$PROJ_DIR$\..\libraries\Drivers</state>
           <state>$PROJ_DIR$\..\libraries\Drivers\config</state>
           <state>$PROJ_DIR$\..\..\..\components\drivers\include</state>
-          <state>$PROJ_DIR$\..\..\..\examples\utest\testcases\kernel</state>
           <state>$PROJ_DIR$\.</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Include</state>
           <state>$PROJ_DIR$\applications</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\inc</state>
-          <state>$PROJ_DIR$\board</state>
+          <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common</state>
           <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
           <state>$PROJ_DIR$\..\libraries\APM32F10x_Library\CMSIS\Include</state>
           <state>$PROJ_DIR$\..\..\..\include</state>
-          <state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\nogcc</state>
+          <state>$PROJ_DIR$\board</state>
         </option>
         <option>
           <name>CCStdIncCheck</name>
@@ -2169,44 +2169,44 @@
       <name>$PROJ_DIR$\..\..\..\components\libc\compilers\common\stdlib.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c</name>
     </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c</name>
     </file>
   </group>
   <group>
     <name>CPU</name>
-    <file>
-      <name>$PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c</name>
-    </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c</name>
     </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c</name>
     </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c</name>
+    </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c</name>
     </file>
@@ -2217,31 +2217,31 @@
   <group>
     <name>DeviceDrivers</name>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\misc\pin.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\serial\serial.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\waitqueue.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\workqueue.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\completion.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\dataqueue.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\pipe.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\ipc\completion.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\ringblk_buf.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\misc\pin.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\components\drivers\src\ringbuffer.c</name>
+      <name>$PROJ_DIR$\..\..\..\components\drivers\serial\serial.c</name>
     </file>
   </group>
   <group>
@@ -2277,43 +2277,43 @@
   <group>
     <name>Kernel</name>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\scheduler.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\kservice.c</name>
     </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\src\mem.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\components.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\clock.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\mempool.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\components.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\kservice.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\timer.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\ipc.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\scheduler.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\clock.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\mempool.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\object.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\idle.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\timer.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\object.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\irq.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\thread.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\idle.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\ipc.c</name>
     </file>
     <file>
       <name>$PROJ_DIR$\..\..\..\src\device.c</name>
     </file>
     <file>
-      <name>$PROJ_DIR$\..\..\..\src\thread.c</name>
+      <name>$PROJ_DIR$\..\..\..\src\irq.c</name>
     </file>
   </group>
   <group>
@@ -2340,7 +2340,4 @@
   <group>
     <name>POSIX</name>
   </group>
-  <group>
-    <name>utestcases</name>
-  </group>
 </project>

+ 3 - 623
bsp/apm32/apm32f103xe-minibroard/project.uvoptx

@@ -73,11 +73,11 @@
         <LExpSel>0</LExpSel>
       </OPTXL>
       <OPTFL>
-        <tvExp>1</tvExp>
+        <tvExp>0</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
-      <CpuCode>255</CpuCode>
+      <CpuCode>0</CpuCode>
       <DebugOpt>
         <uSim>0</uSim>
         <uTrg>1</uTrg>
@@ -175,631 +175,11 @@
   </Target>
 
   <Group>
-    <GroupName>Applications</GroupName>
+    <GroupName>Source Group 1</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\libc_syms.c</PathWithFileName>
-      <FilenameWithoutPath>libc_syms.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\armlibc\syscall_mem.c</PathWithFileName>
-      <FilenameWithoutPath>syscall_mem.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\time.c</PathWithFileName>
-      <FilenameWithoutPath>time.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\stdlib.c</PathWithFileName>
-      <FilenameWithoutPath>stdlib.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>CPU</GroupName>
-    <tvExp>0</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\libcpu\arm\common\backtrace.c</PathWithFileName>
-      <FilenameWithoutPath>backtrace.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</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>3</GroupNumber>
-      <FileNumber>9</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>3</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\libcpu\arm\cortex-m3\cpuport.c</PathWithFileName>
-      <FilenameWithoutPath>cpuport.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\libcpu\arm\cortex-m3\context_rvds.S</PathWithFileName>
-      <FilenameWithoutPath>context_rvds.S</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>4</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\misc\pin.c</PathWithFileName>
-      <FilenameWithoutPath>pin.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>13</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>4</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\ringbuffer.c</PathWithFileName>
-      <FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\waitqueue.c</PathWithFileName>
-      <FilenameWithoutPath>waitqueue.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>16</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\workqueue.c</PathWithFileName>
-      <FilenameWithoutPath>workqueue.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>17</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\pipe.c</PathWithFileName>
-      <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>18</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\completion.c</PathWithFileName>
-      <FilenameWithoutPath>completion.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>19</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\ringblk_buf.c</PathWithFileName>
-      <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>20</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\components\drivers\src\dataqueue.c</PathWithFileName>
-      <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>Drivers</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>board\board.c</PathWithFileName>
-      <FilenameWithoutPath>board.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Source\ARM\startup_apm32f10x_hd.s</PathWithFileName>
-      <FilenameWithoutPath>startup_apm32f10x_hd.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\Drivers\drv_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\Drivers\drv_usart.c</PathWithFileName>
-      <FilenameWithoutPath>drv_usart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>1</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\Drivers\drv_common.c</PathWithFileName>
-      <FilenameWithoutPath>drv_common.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>6</GroupNumber>
-      <FileNumber>26</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>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>27</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>6</GroupNumber>
-      <FileNumber>28</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>
-  </Group>
-
-  <Group>
-    <GroupName>Kernel</GroupName>
-    <tvExp>0</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>29</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>7</GroupNumber>
-      <FileNumber>30</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>7</GroupNumber>
-      <FileNumber>31</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>7</GroupNumber>
-      <FileNumber>32</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>7</GroupNumber>
-      <FileNumber>33</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>
-    <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>34</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>7</GroupNumber>
-      <FileNumber>35</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\device.c</PathWithFileName>
-      <FilenameWithoutPath>device.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>36</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>7</GroupNumber>
-      <FileNumber>37</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\src\scheduler.c</PathWithFileName>
-      <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>38</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>7</GroupNumber>
-      <FileNumber>39</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>7</GroupNumber>
-      <FileNumber>40</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>7</GroupNumber>
-      <FileNumber>41</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>
-  </Group>
-
-  <Group>
-    <GroupName>Libraries</GroupName>
-    <tvExp>0</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>42</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Source\system_apm32f10x.c</PathWithFileName>
-      <FilenameWithoutPath>system_apm32f10x.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>43</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\src\apm32f10x_rcm.c</PathWithFileName>
-      <FilenameWithoutPath>apm32f10x_rcm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>44</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\src\apm32f10x_misc.c</PathWithFileName>
-      <FilenameWithoutPath>apm32f10x_misc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>45</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\src\apm32f10x_usart.c</PathWithFileName>
-      <FilenameWithoutPath>apm32f10x_usart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>46</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\src\apm32f10x_eint.c</PathWithFileName>
-      <FilenameWithoutPath>apm32f10x_eint.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>47</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\src\apm32f10x_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>apm32f10x_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
   </Group>
 
 </ProjectOpt>

+ 57 - 64
bsp/apm32/apm32f103xe-minibroard/project.uvprojx

@@ -335,7 +335,7 @@
               <MiscControls />
               <Define>USE_STDPERIPH_DRIVER, APM32F10X_HD, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND</Define>
               <Undefine />
-              <IncludePath>applications;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\nogcc;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\Drivers;..\libraries\Drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Include;..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\inc;..\libraries\APM32F10x_Library\CMSIS\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\ipc;..\..\..\examples\utest\testcases\kernel</IncludePath>
+              <IncludePath>applications;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\Drivers;..\libraries\Drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Include;..\libraries\APM32F10x_Library\APM32F10x_StdPeriphDriver\inc;..\libraries\APM32F10x_Library\CMSIS\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -390,9 +390,9 @@
           <GroupName>Compiler</GroupName>
           <Files>
             <File>
-              <FileName>libc_syms.c</FileName>
+              <FileName>syscalls.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\libc\compilers\armlibc\libc_syms.c</FilePath>
+              <FilePath>..\..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
             </File>
           </Files>
           <Files>
@@ -402,13 +402,6 @@
               <FilePath>..\..\..\components\libc\compilers\armlibc\syscall_mem.c</FilePath>
             </File>
           </Files>
-          <Files>
-            <File>
-              <FileName>syscalls.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
-            </File>
-          </Files>
           <Files>
             <File>
               <FileName>time.c</FileName>
@@ -428,23 +421,23 @@
           <GroupName>CPU</GroupName>
           <Files>
             <File>
-              <FileName>showmem.c</FileName>
+              <FileName>backtrace.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\libcpu\arm\common\showmem.c</FilePath>
+              <FilePath>..\..\..\libcpu\arm\common\backtrace.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>backtrace.c</FileName>
+              <FileName>div0.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\libcpu\arm\common\backtrace.c</FilePath>
+              <FilePath>..\..\..\libcpu\arm\common\div0.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>div0.c</FileName>
+              <FileName>showmem.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\libcpu\arm\common\div0.c</FilePath>
+              <FilePath>..\..\..\libcpu\arm\common\showmem.c</FilePath>
             </File>
           </Files>
           <Files>
@@ -466,77 +459,70 @@
           <GroupName>DeviceDrivers</GroupName>
           <Files>
             <File>
-              <FileName>pin.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\misc\pin.c</FilePath>
-            </File>
-          </Files>
-          <Files>
-            <File>
-              <FileName>serial.c</FileName>
+              <FileName>waitqueue.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\serial\serial.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\waitqueue.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
               <FileName>ringbuffer.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\ringbuffer.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\ringbuffer.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
               <FileName>pipe.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\pipe.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\pipe.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>ringblk_buf.c</FileName>
+              <FileName>completion.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\ringblk_buf.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\completion.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
               <FileName>workqueue.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\workqueue.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\workqueue.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
               <FileName>dataqueue.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\dataqueue.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\dataqueue.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>waitqueue.c</FileName>
+              <FileName>ringblk_buf.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\waitqueue.c</FilePath>
+              <FilePath>..\..\..\components\drivers\ipc\ringblk_buf.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>completion.c</FileName>
+              <FileName>pin.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\components\drivers\src\completion.c</FilePath>
+              <FilePath>..\..\..\components\drivers\misc\pin.c</FilePath>
             </File>
           </Files>
-        </Group>
-        <Group>
-          <GroupName>Drivers</GroupName>
           <Files>
             <File>
-              <FileName>board.c</FileName>
+              <FileName>serial.c</FileName>
               <FileType>1</FileType>
-              <FilePath>board\board.c</FilePath>
+              <FilePath>..\..\..\components\drivers\serial\serial.c</FilePath>
             </File>
           </Files>
+        </Group>
+        <Group>
+          <GroupName>Drivers</GroupName>
           <Files>
             <File>
               <FileName>startup_apm32f10x_hd.s</FileName>
@@ -544,6 +530,13 @@
               <FilePath>..\libraries\APM32F10x_Library\Device\Geehy\APM32F10x\Source\arm\startup_apm32f10x_hd.s</FilePath>
             </File>
           </Files>
+          <Files>
+            <File>
+              <FileName>board.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>board\board.c</FilePath>
+            </File>
+          </Files>
           <Files>
             <File>
               <FileName>drv_gpio.c</FileName>
@@ -594,65 +587,65 @@
           <GroupName>Kernel</GroupName>
           <Files>
             <File>
-              <FileName>thread.c</FileName>
+              <FileName>components.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\thread.c</FilePath>
+              <FilePath>..\..\..\src\components.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>mempool.c</FileName>
+              <FileName>timer.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\mempool.c</FilePath>
+              <FilePath>..\..\..\src\timer.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>timer.c</FileName>
+              <FileName>mempool.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\timer.c</FilePath>
+              <FilePath>..\..\..\src\mempool.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>object.c</FileName>
+              <FileName>device.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\object.c</FilePath>
+              <FilePath>..\..\..\src\device.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>clock.c</FileName>
+              <FileName>idle.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\clock.c</FilePath>
+              <FilePath>..\..\..\src\idle.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>scheduler.c</FileName>
+              <FileName>irq.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\scheduler.c</FilePath>
+              <FilePath>..\..\..\src\irq.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>ipc.c</FileName>
+              <FileName>mem.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\ipc.c</FilePath>
+              <FilePath>..\..\..\src\mem.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>mem.c</FileName>
+              <FileName>scheduler.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\mem.c</FilePath>
+              <FilePath>..\..\..\src\scheduler.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>device.c</FileName>
+              <FileName>clock.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\device.c</FilePath>
+              <FilePath>..\..\..\src\clock.c</FilePath>
             </File>
           </Files>
           <Files>
@@ -664,23 +657,23 @@
           </Files>
           <Files>
             <File>
-              <FileName>irq.c</FileName>
+              <FileName>thread.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\irq.c</FilePath>
+              <FilePath>..\..\..\src\thread.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>components.c</FileName>
+              <FileName>ipc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\components.c</FilePath>
+              <FilePath>..\..\..\src\ipc.c</FilePath>
             </File>
           </Files>
           <Files>
             <File>
-              <FileName>idle.c</FileName>
+              <FileName>object.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\src\idle.c</FilePath>
+              <FilePath>..\..\..\src\object.c</FilePath>
             </File>
           </Files>
         </Group>

+ 0 - 465
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s

@@ -1,465 +0,0 @@
-;/*!
-; * @file        startup_apm32f10x_hd.s
-; *
-; * @brief       CMSIS Cortex-M3 based Core Device Startup File for Device startup_apm32f10x_hd
-; *
-; * @version     V1.0.2
-; *
-; * @date        2022-01-05
-; *
-; * @attention
-; *
-; *  Copyright (C) 2020-2022 Geehy Semiconductor
-; *
-; *  You may not use this file except in compliance with the
-; *  GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
-; *
-; *  The program is only for reference, which is distributed in the hope
-; *  that it will be usefull and instructional for customers to develop
-; *  their software. Unless required by applicable law or agreed to in
-; *  writing, the program is distributed on an "AS IS" BASIS, WITHOUT
-; *  ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
-; *  See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
-; *  and limitations under the License.
-; */
-
-;
-<h> Stack Configuration
-;
-<o> Stack Size(in Bytes) < 0x0 - 0xFFFFFFFF: 8 >
-;
-< / h >
-
-Stack_Size      EQU     0x00000400
-
-AREA    STACK, NOINIT, READWRITE, ALIGN = 3
-        Stack_Mem       SPACE   Stack_Size
-        __initial_sp
-
-
-        ;
-<h> Heap Configuration
-;
-<o>  Heap Size(in Bytes) < 0x0 - 0xFFFFFFFF: 8 >
-;
-< / h >
-
-Heap_Size       EQU     0x00000200
-
-AREA    HEAP, NOINIT, READWRITE, ALIGN = 3
-        __heap_base
-        Heap_Mem        SPACE   Heap_Size
-        __heap_limit
-
-        PRESERVE8
-        THUMB
-
-
-        ;
-Vector Table Mapped to Address 0 at Reset
-AREA    RESET, DATA, READONLY
-EXPORT  __Vectors
-EXPORT  __Vectors_End
-EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                 ;
-Top of Stack
-DCD     Reset_Handler                ;
-Reset Handler
-DCD     NMI_Handler                  ;
-NMI Handler
-DCD     HardFault_Handler            ;
-Hard Fault Handler
-DCD     MemManage_Handler            ;
-MPU Fault Handler
-DCD     BusFault_Handler             ;
-Bus Fault Handler
-DCD     UsageFault_Handler           ;
-Usage Fault Handler
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     SVC_Handler                  ;
-SVCall Handler
-DCD     DebugMon_Handler             ;
-Debug Monitor Handler
-DCD     0                            ;
-Reserved
-DCD     PendSV_Handler               ;
-PendSV Handler
-DCD     SysTick_Handler              ;
-SysTick Handler
-
-;
-External Interrupts
-DCD     WWDT_IRQHandler              ;
-Window Watchdog
-DCD     PVD_IRQHandler               ;
-PVD through EINT Line detect
-DCD     TAMPER_IRQHandler            ;
-Tamper
-DCD     RTC_IRQHandler               ;
-RTC
-DCD     FLASH_IRQHandler             ;
-Flash
-DCD     RCM_IRQHandler               ;
-RCM
-DCD     EINT0_IRQHandler             ;
-EINT Line 0
-DCD     EINT1_IRQHandler             ;
-EINT Line 1
-DCD     EINT2_IRQHandler             ;
-EINT Line 2
-DCD     EINT3_IRQHandler             ;
-EINT Line 3
-DCD     EINT4_IRQHandler             ;
-EINT Line 4
-DCD     DMA1_Channel1_IRQHandler     ;
-DMA1 Channel 1
-DCD     DMA1_Channel2_IRQHandler     ;
-DMA1 Channel 2
-DCD     DMA1_Channel3_IRQHandler     ;
-DMA1 Channel 3
-DCD     DMA1_Channel4_IRQHandler     ;
-DMA1 Channel 4
-DCD     DMA1_Channel5_IRQHandler     ;
-DMA1 Channel 5
-DCD     DMA1_Channel6_IRQHandler     ;
-DMA1 Channel 6
-DCD     DMA1_Channel7_IRQHandler     ;
-DMA1 Channel 7
-DCD     ADC1_2_IRQHandler            ;
-ADC1 &ADC2
-DCD     USBD1_HP_CAN1_TX_IRQHandler  ;
-USBD1 High Priority or CAN1 TX
-DCD     USBD1_LP_CAN1_RX0_IRQHandler ;
-USBD1 Low  Priority or CAN1 RX0
-DCD     CAN1_RX1_IRQHandler          ;
-CAN1 RX1
-DCD     CAN1_SCE_IRQHandler          ;
-CAN1 SCE
-DCD     EINT9_5_IRQHandler           ;
-EINT Line 9..5
-DCD     TMR1_BRK_IRQHandler          ;
-TMR1 Break
-DCD     TMR1_UP_IRQHandler           ;
-TMR1 Update
-DCD     TMR1_TRG_COM_IRQHandler      ;
-TMR1 Trigger and Commutation
-DCD     TMR1_CC_IRQHandler           ;
-TMR1 Capture Compare
-DCD     TMR2_IRQHandler              ;
-TMR2
-DCD     TMR3_IRQHandler              ;
-TMR3
-DCD     TMR4_IRQHandler              ;
-TMR4
-DCD     I2C1_EV_IRQHandler           ;
-I2C1 Event
-DCD     I2C1_ER_IRQHandler           ;
-I2C1 Error
-DCD     I2C2_EV_IRQHandler           ;
-I2C2 Event
-DCD     I2C2_ER_IRQHandler           ;
-I2C2 Error
-DCD     SPI1_IRQHandler              ;
-SPI1
-DCD     SPI2_IRQHandler              ;
-SPI2
-DCD     USART1_IRQHandler            ;
-USART1
-DCD     USART2_IRQHandler            ;
-USART2
-DCD     USART3_IRQHandler            ;
-USART3
-DCD     EINT15_10_IRQHandler         ;
-EINT Line 15..10
-DCD     RTCAlarm_IRQHandler          ;
-RTC Alarm through EINT Line
-DCD     USBDWakeUp_IRQHandler        ;
-USBD Wakeup from suspend
-DCD     TMR8_BRK_IRQHandler          ;
-TMR8 Break
-DCD     TMR8_UP_IRQHandler           ;
-TMR8 Update
-DCD     TMR8_TRG_COM_IRQHandler      ;
-TMR8 Trigger and Commutation
-DCD     TMR8_CC_IRQHandler           ;
-TMR8 Capture Compare
-DCD     ADC3_IRQHandler              ;
-ADC3
-DCD     EMMC_IRQHandler              ;
-EMMC
-DCD     SDIO_IRQHandler              ;
-SDIO
-DCD     TMR5_IRQHandler              ;
-TMR5
-DCD     SPI3_IRQHandler              ;
-SPI3
-DCD     UART4_IRQHandler             ;
-UART4
-DCD     UART5_IRQHandler             ;
-UART5
-DCD     TMR6_IRQHandler              ;
-TMR6
-DCD     TMR7_IRQHandler              ;
-TMR7
-DCD     DMA2_Channel1_IRQHandler     ;
-DMA2 Channel1
-DCD     DMA2_Channel2_IRQHandler     ;
-DMA2 Channel2
-DCD     DMA2_Channel3_IRQHandler     ;
-DMA2 Channel3
-DCD     DMA2_Channel4_5_IRQHandler   ;
-DMA2 Channel4 &Channel5
-DCD     0                            ;
-Reserved
-DCD     USBD2_HP_CAN2_TX_IRQHandler  ;
-USBD2 High Priority or CAN2 TX
-DCD     USBD2_LP_CAN2_RX0_IRQHandler ;
-USBD2 Low  Priority or CAN2 RX0
-DCD     CAN2_RX1_IRQHandler          ;
-CAN2 RX1
-DCD     CAN2_SCE_IRQHandler          ;
-CAN2 SCE
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-AREA    | .text |, CODE, READONLY
-
-;
-Reset handler
-Reset_Handler   PROC
-EXPORT  Reset_Handler                [WEAK]
-IMPORT  __main
-IMPORT  SystemInit
-LDR     R0, = SystemInit
-              BLX     R0
-              LDR     R0, = __main
-                            BX      R0
-                            ENDP
-
-                            ;
-Dummy Exception Handlers(infinite loops which can be modified)
-
-NMI_Handler     PROC
-EXPORT  NMI_Handler                  [WEAK]
-B       .
-ENDP
-HardFault_Handler\
-PROC
-EXPORT  HardFault_Handler            [WEAK]
-B       .
-ENDP
-MemManage_Handler\
-PROC
-EXPORT  MemManage_Handler            [WEAK]
-B       .
-ENDP
-BusFault_Handler\
-PROC
-EXPORT  BusFault_Handler             [WEAK]
-B       .
-ENDP
-UsageFault_Handler\
-PROC
-EXPORT  UsageFault_Handler           [WEAK]
-B       .
-ENDP
-SVC_Handler     PROC
-EXPORT  SVC_Handler                  [WEAK]
-B       .
-ENDP
-DebugMon_Handler\
-PROC
-EXPORT  DebugMon_Handler             [WEAK]
-B       .
-ENDP
-PendSV_Handler  PROC
-EXPORT  PendSV_Handler               [WEAK]
-B       .
-ENDP
-SysTick_Handler PROC
-EXPORT  SysTick_Handler              [WEAK]
-B       .
-ENDP
-
-Default_Handler PROC
-
-EXPORT  WWDT_IRQHandler              [WEAK]
-EXPORT  PVD_IRQHandler               [WEAK]
-EXPORT  TAMPER_IRQHandler            [WEAK]
-EXPORT  RTC_IRQHandler               [WEAK]
-EXPORT  FLASH_IRQHandler             [WEAK]
-EXPORT  RCM_IRQHandler               [WEAK]
-EXPORT  EINT0_IRQHandler             [WEAK]
-EXPORT  EINT1_IRQHandler             [WEAK]
-EXPORT  EINT2_IRQHandler             [WEAK]
-EXPORT  EINT3_IRQHandler             [WEAK]
-EXPORT  EINT4_IRQHandler             [WEAK]
-EXPORT  DMA1_Channel1_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel2_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel3_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel4_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel5_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel6_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel7_IRQHandler     [WEAK]
-EXPORT  ADC1_2_IRQHandler            [WEAK]
-EXPORT  USBD1_HP_CAN1_TX_IRQHandler  [WEAK]
-EXPORT  USBD1_LP_CAN1_RX0_IRQHandler [WEAK]
-EXPORT  CAN1_RX1_IRQHandler          [WEAK]
-EXPORT  CAN1_SCE_IRQHandler          [WEAK]
-EXPORT  EINT9_5_IRQHandler           [WEAK]
-EXPORT  TMR1_BRK_IRQHandler          [WEAK]
-EXPORT  TMR1_UP_IRQHandler           [WEAK]
-EXPORT  TMR1_TRG_COM_IRQHandler      [WEAK]
-EXPORT  TMR1_CC_IRQHandler           [WEAK]
-EXPORT  TMR2_IRQHandler              [WEAK]
-EXPORT  TMR3_IRQHandler              [WEAK]
-EXPORT  TMR4_IRQHandler              [WEAK]
-EXPORT  I2C1_EV_IRQHandler           [WEAK]
-EXPORT  I2C1_ER_IRQHandler           [WEAK]
-EXPORT  I2C2_EV_IRQHandler           [WEAK]
-EXPORT  I2C2_ER_IRQHandler           [WEAK]
-EXPORT  SPI1_IRQHandler              [WEAK]
-EXPORT  SPI2_IRQHandler              [WEAK]
-EXPORT  USART1_IRQHandler            [WEAK]
-EXPORT  USART2_IRQHandler            [WEAK]
-EXPORT  USART3_IRQHandler            [WEAK]
-EXPORT  EINT15_10_IRQHandler         [WEAK]
-EXPORT  RTCAlarm_IRQHandler          [WEAK]
-EXPORT  USBDWakeUp_IRQHandler        [WEAK]
-EXPORT  TMR8_BRK_IRQHandler          [WEAK]
-EXPORT  TMR8_UP_IRQHandler           [WEAK]
-EXPORT  TMR8_TRG_COM_IRQHandler      [WEAK]
-EXPORT  TMR8_CC_IRQHandler           [WEAK]
-EXPORT  ADC3_IRQHandler              [WEAK]
-EXPORT  EMMC_IRQHandler              [WEAK]
-EXPORT  SDIO_IRQHandler              [WEAK]
-EXPORT  TMR5_IRQHandler              [WEAK]
-EXPORT  SPI3_IRQHandler              [WEAK]
-EXPORT  UART4_IRQHandler             [WEAK]
-EXPORT  UART5_IRQHandler             [WEAK]
-EXPORT  TMR6_IRQHandler              [WEAK]
-EXPORT  TMR7_IRQHandler              [WEAK]
-EXPORT  DMA2_Channel1_IRQHandler     [WEAK]
-EXPORT  DMA2_Channel2_IRQHandler     [WEAK]
-EXPORT  DMA2_Channel3_IRQHandler     [WEAK]
-EXPORT  DMA2_Channel4_5_IRQHandler   [WEAK]
-EXPORT  USBD2_HP_CAN2_TX_IRQHandler  [WEAK]
-EXPORT  USBD2_LP_CAN2_RX0_IRQHandler [WEAK]
-EXPORT  CAN2_RX1_IRQHandler          [WEAK]
-EXPORT  CAN2_SCE_IRQHandler          [WEAK]
-
-WWDT_IRQHandler
-PVD_IRQHandler
-TAMPER_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCM_IRQHandler
-EINT0_IRQHandler
-EINT1_IRQHandler
-EINT2_IRQHandler
-EINT3_IRQHandler
-EINT4_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_IRQHandler
-DMA1_Channel3_IRQHandler
-DMA1_Channel4_IRQHandler
-DMA1_Channel5_IRQHandler
-DMA1_Channel6_IRQHandler
-DMA1_Channel7_IRQHandler
-ADC1_2_IRQHandler
-USBD1_HP_CAN1_TX_IRQHandler
-USBD1_LP_CAN1_RX0_IRQHandler
-CAN1_RX1_IRQHandler
-CAN1_SCE_IRQHandler
-EINT9_5_IRQHandler
-TMR1_BRK_IRQHandler
-TMR1_UP_IRQHandler
-TMR1_TRG_COM_IRQHandler
-TMR1_CC_IRQHandler
-TMR2_IRQHandler
-TMR3_IRQHandler
-TMR4_IRQHandler
-I2C1_EV_IRQHandler
-I2C1_ER_IRQHandler
-I2C2_EV_IRQHandler
-I2C2_ER_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-USART3_IRQHandler
-EINT15_10_IRQHandler
-RTCAlarm_IRQHandler
-USBDWakeUp_IRQHandler
-TMR8_BRK_IRQHandler
-TMR8_UP_IRQHandler
-TMR8_TRG_COM_IRQHandler
-TMR8_CC_IRQHandler
-ADC3_IRQHandler
-EMMC_IRQHandler
-SDIO_IRQHandler
-TMR5_IRQHandler
-SPI3_IRQHandler
-UART4_IRQHandler
-UART5_IRQHandler
-TMR6_IRQHandler
-TMR7_IRQHandler
-DMA2_Channel1_IRQHandler
-DMA2_Channel2_IRQHandler
-DMA2_Channel3_IRQHandler
-DMA2_Channel4_5_IRQHandler
-USBD2_HP_CAN2_TX_IRQHandler
-USBD2_LP_CAN2_RX0_IRQHandler
-CAN2_RX1_IRQHandler
-CAN2_SCE_IRQHandler
-B       .
-
-ENDP
-
-ALIGN
-
-;
-*******************************************************************************
-;
-User Stack and Heap initialization
-;
-*******************************************************************************
-IF      :
-DEF:
-__MICROLIB
-
-EXPORT  __initial_sp
-EXPORT  __heap_base
-EXPORT  __heap_limit
-
-ELSE
-
-IMPORT  __use_two_region_memory
-EXPORT  __user_initial_stackheap
-
-__user_initial_stackheap
-
-LDR     R0, = Heap_Mem
-              LDR     R1, = (Stack_Mem + Stack_Size)
-                            LDR     R2, = (Heap_Mem  + Heap_Size)
-                                    LDR     R3, = Stack_Mem
-                                            BX      LR
-
-                                            ALIGN
-
-                                            ENDIF
-
-                                            END
-
-                                            ;
-*******************************END OF FILE ************************************
-

+ 0 - 394
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s

@@ -1,394 +0,0 @@
-;/*!
-; * @file        startup_apm32f10x_md.s
-; *
-; * @brief       CMSIS Cortex-M3 based Core Device Startup File for Device startup_apm32f10x_md
-; *
-; * @version     V1.0.2
-; *
-; * @date        2022-01-05
-; *
-; * @attention
-; *
-; *  Copyright (C) 2020-2022 Geehy Semiconductor
-; *
-; *  You may not use this file except in compliance with the
-; *  GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
-; *
-; *  The program is only for reference, which is distributed in the hope
-; *  that it will be usefull and instructional for customers to develop
-; *  their software. Unless required by applicable law or agreed to in
-; *  writing, the program is distributed on an "AS IS" BASIS, WITHOUT
-; *  ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
-; *  See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
-; *  and limitations under the License.
-; */
-
-;
-<h> Stack Configuration
-;
-<o> Stack Size(in Bytes) < 0x0 - 0xFFFFFFFF: 8 >
-;
-< / h >
-
-Stack_Size      EQU     0x00000400
-
-AREA    STACK, NOINIT, READWRITE, ALIGN = 3
-        Stack_Mem       SPACE   Stack_Size
-        __initial_sp
-
-
-        ;
-<h> Heap Configuration
-;
-<o>  Heap Size(in Bytes) < 0x0 - 0xFFFFFFFF: 8 >
-;
-< / h >
-
-Heap_Size       EQU     0x00000200
-
-AREA    HEAP, NOINIT, READWRITE, ALIGN = 3
-        __heap_base
-        Heap_Mem        SPACE   Heap_Size
-        __heap_limit
-
-        PRESERVE8
-        THUMB
-
-
-        ;
-Vector Table Mapped to Address 0 at Reset
-AREA    RESET, DATA, READONLY
-EXPORT  __Vectors
-EXPORT  __Vectors_End
-EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                 ;
-Top of Stack
-DCD     Reset_Handler                ;
-Reset Handler
-DCD     NMI_Handler                  ;
-NMI Handler
-DCD     HardFault_Handler            ;
-Hard Fault Handler
-DCD     MemManage_Handler            ;
-MPU Fault Handler
-DCD     BusFault_Handler             ;
-Bus Fault Handler
-DCD     UsageFault_Handler           ;
-Usage Fault Handler
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     SVC_Handler                  ;
-SVCall Handler
-DCD     DebugMon_Handler             ;
-Debug Monitor Handler
-DCD     0                            ;
-Reserved
-DCD     PendSV_Handler               ;
-PendSV Handler
-DCD     SysTick_Handler              ;
-SysTick Handler
-
-;
-External Interrupts
-DCD     WWDT_IRQHandler              ;
-Window Watchdog
-DCD     PVD_IRQHandler               ;
-PVD through EINT Line detect
-DCD     TAMPER_IRQHandler            ;
-Tamper
-DCD     RTC_IRQHandler               ;
-RTC
-DCD     FLASH_IRQHandler             ;
-Flash
-DCD     RCM_IRQHandler               ;
-RCM
-DCD     EINT0_IRQHandler             ;
-EINT Line 0
-DCD     EINT1_IRQHandler             ;
-EINT Line 1
-DCD     EINT2_IRQHandler             ;
-EINT Line 2
-DCD     EINT3_IRQHandler             ;
-EINT Line 3
-DCD     EINT4_IRQHandler             ;
-EINT Line 4
-DCD     DMA1_Channel1_IRQHandler     ;
-DMA1 Channel 1
-DCD     DMA1_Channel2_IRQHandler     ;
-DMA1 Channel 2
-DCD     DMA1_Channel3_IRQHandler     ;
-DMA1 Channel 3
-DCD     DMA1_Channel4_IRQHandler     ;
-DMA1 Channel 4
-DCD     DMA1_Channel5_IRQHandler     ;
-DMA1 Channel 5
-DCD     DMA1_Channel6_IRQHandler     ;
-DMA1 Channel 6
-DCD     DMA1_Channel7_IRQHandler     ;
-DMA1 Channel 7
-DCD     ADC1_2_IRQHandler            ;
-ADC1_2
-DCD     USBD1_HP_CAN1_TX_IRQHandler  ;
-USBD1 High Priority or CAN1 TX
-DCD     USBD1_LP_CAN1_RX0_IRQHandler ;
-USBD1 Low  Priority or CAN1 RX0
-DCD     CAN1_RX1_IRQHandler          ;
-CAN1 RX1
-DCD     CAN1_SCE_IRQHandler          ;
-CAN1 SCE
-DCD     EINT9_5_IRQHandler           ;
-EINT Line 9..5
-DCD     TMR1_BRK_IRQHandler          ;
-TMR1 Break
-DCD     TMR1_UP_IRQHandler           ;
-TMR1 Update
-DCD     TMR1_TRG_COM_IRQHandler      ;
-TMR1 Trigger and Commutation
-DCD     TMR1_CC_IRQHandler           ;
-TMR1 Capture Compare
-DCD     TMR2_IRQHandler              ;
-TMR2
-DCD     TMR3_IRQHandler              ;
-TMR3
-DCD     TMR4_IRQHandler              ;
-TMR4
-DCD     I2C1_EV_IRQHandler           ;
-I2C1 Event
-DCD     I2C1_ER_IRQHandler           ;
-I2C1 Error
-DCD     I2C2_EV_IRQHandler           ;
-I2C2 Event
-DCD     I2C2_ER_IRQHandler           ;
-I2C2 Error
-DCD     SPI1_IRQHandler              ;
-SPI1
-DCD     SPI2_IRQHandler              ;
-SPI2
-DCD     USART1_IRQHandler            ;
-USART1
-DCD     USART2_IRQHandler            ;
-USART2
-DCD     USART3_IRQHandler            ;
-USART3
-DCD     EINT15_10_IRQHandler         ;
-EINT Line 15..10
-DCD     RTCAlarm_IRQHandler          ;
-RTC Alarm through EINT Line
-DCD     USBDWakeUp_IRQHandler        ;
-USBD Wakeup from suspend
-DCD     FPU_IRQHandler               ;
-FPU
-DCD     QSPI_IRQHandler              ;
-QSPI
-DCD     USBD2_HP_IRQHandler          ;
-USBD2 High Priority
-DCD     USBD2_LP_IRQHandler          ;
-USBD2 Low Priority
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-AREA    | .text |, CODE, READONLY
-
-;
-Reset handler
-Reset_Handler    PROC
-EXPORT  Reset_Handler               [WEAK]
-IMPORT  __main
-IMPORT  SystemInit
-LDR     R0, = SystemInit
-              BLX     R0
-              LDR     R0, = __main
-                            BX      R0
-                            ENDP
-
-                            ;
-Dummy Exception Handlers(infinite loops which can be modified)
-
-NMI_Handler     PROC
-EXPORT  NMI_Handler                  [WEAK]
-B       .
-ENDP
-HardFault_Handler\
-PROC
-EXPORT  HardFault_Handler            [WEAK]
-B       .
-ENDP
-MemManage_Handler\
-PROC
-EXPORT  MemManage_Handler            [WEAK]
-B       .
-ENDP
-BusFault_Handler\
-PROC
-EXPORT  BusFault_Handler             [WEAK]
-B       .
-ENDP
-UsageFault_Handler\
-PROC
-EXPORT  UsageFault_Handler           [WEAK]
-B       .
-ENDP
-SVC_Handler     PROC
-EXPORT  SVC_Handler                  [WEAK]
-B       .
-ENDP
-DebugMon_Handler\
-PROC
-EXPORT  DebugMon_Handler             [WEAK]
-B       .
-ENDP
-PendSV_Handler  PROC
-EXPORT  PendSV_Handler               [WEAK]
-B       .
-ENDP
-SysTick_Handler PROC
-EXPORT  SysTick_Handler              [WEAK]
-B       .
-ENDP
-
-Default_Handler PROC
-
-EXPORT  WWDT_IRQHandler              [WEAK]
-EXPORT  PVD_IRQHandler               [WEAK]
-EXPORT  TAMPER_IRQHandler            [WEAK]
-EXPORT  RTC_IRQHandler               [WEAK]
-EXPORT  FLASH_IRQHandler             [WEAK]
-EXPORT  RCM_IRQHandler               [WEAK]
-EXPORT  EINT0_IRQHandler             [WEAK]
-EXPORT  EINT1_IRQHandler             [WEAK]
-EXPORT  EINT2_IRQHandler             [WEAK]
-EXPORT  EINT3_IRQHandler             [WEAK]
-EXPORT  EINT4_IRQHandler             [WEAK]
-EXPORT  DMA1_Channel1_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel2_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel3_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel4_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel5_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel6_IRQHandler     [WEAK]
-EXPORT  DMA1_Channel7_IRQHandler     [WEAK]
-EXPORT  ADC1_2_IRQHandler            [WEAK]
-EXPORT  USBD1_HP_CAN1_TX_IRQHandler  [WEAK]
-EXPORT  USBD1_LP_CAN1_RX0_IRQHandler [WEAK]
-EXPORT  CAN1_RX1_IRQHandler          [WEAK]
-EXPORT  CAN1_SCE_IRQHandler          [WEAK]
-EXPORT  EINT9_5_IRQHandler           [WEAK]
-EXPORT  TMR1_BRK_IRQHandler          [WEAK]
-EXPORT  TMR1_UP_IRQHandler           [WEAK]
-EXPORT  TMR1_TRG_COM_IRQHandler      [WEAK]
-EXPORT  TMR1_CC_IRQHandler           [WEAK]
-EXPORT  TMR2_IRQHandler              [WEAK]
-EXPORT  TMR3_IRQHandler              [WEAK]
-EXPORT  TMR4_IRQHandler              [WEAK]
-EXPORT  I2C1_EV_IRQHandler           [WEAK]
-EXPORT  I2C1_ER_IRQHandler           [WEAK]
-EXPORT  I2C2_EV_IRQHandler           [WEAK]
-EXPORT  I2C2_ER_IRQHandler           [WEAK]
-EXPORT  SPI1_IRQHandler              [WEAK]
-EXPORT  SPI2_IRQHandler              [WEAK]
-EXPORT  USART1_IRQHandler            [WEAK]
-EXPORT  USART2_IRQHandler            [WEAK]
-EXPORT  USART3_IRQHandler            [WEAK]
-EXPORT  EINT15_10_IRQHandler         [WEAK]
-EXPORT  RTCAlarm_IRQHandler          [WEAK]
-EXPORT  USBDWakeUp_IRQHandler        [WEAK]
-EXPORT  FPU_IRQHandler               [WEAK]
-EXPORT  QSPI_IRQHandler              [WEAK]
-EXPORT  USBD2_HP_IRQHandler          [WEAK]
-EXPORT  USBD2_LP_IRQHandler          [WEAK]
-
-WWDT_IRQHandler
-PVD_IRQHandler
-TAMPER_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCM_IRQHandler
-EINT0_IRQHandler
-EINT1_IRQHandler
-EINT2_IRQHandler
-EINT3_IRQHandler
-EINT4_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_IRQHandler
-DMA1_Channel3_IRQHandler
-DMA1_Channel4_IRQHandler
-DMA1_Channel5_IRQHandler
-DMA1_Channel6_IRQHandler
-DMA1_Channel7_IRQHandler
-ADC1_2_IRQHandler
-USBD1_HP_CAN1_TX_IRQHandler
-USBD1_LP_CAN1_RX0_IRQHandler
-CAN1_RX1_IRQHandler
-CAN1_SCE_IRQHandler
-EINT9_5_IRQHandler
-TMR1_BRK_IRQHandler
-TMR1_UP_IRQHandler
-TMR1_TRG_COM_IRQHandler
-TMR1_CC_IRQHandler
-TMR2_IRQHandler
-TMR3_IRQHandler
-TMR4_IRQHandler
-I2C1_EV_IRQHandler
-I2C1_ER_IRQHandler
-I2C2_EV_IRQHandler
-I2C2_ER_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-USART3_IRQHandler
-EINT15_10_IRQHandler
-RTCAlarm_IRQHandler
-USBDWakeUp_IRQHandler
-FPU_IRQHandler
-QSPI_IRQHandler
-USBD2_HP_IRQHandler
-USBD2_LP_IRQHandler
-B       .
-
-ENDP
-
-ALIGN
-
-;
-*******************************************************************************
-;
-User Stack and Heap initialization
-;
-*******************************************************************************
-IF      :
-DEF:
-__MICROLIB
-
-EXPORT  __initial_sp
-EXPORT  __heap_base
-EXPORT  __heap_limit
-
-ELSE
-
-IMPORT  __use_two_region_memory
-EXPORT  __user_initial_stackheap
-
-__user_initial_stackheap
-
-LDR     R0, = Heap_Mem
-              LDR     R1, = (Stack_Mem + Stack_Size)
-                            LDR     R2, = (Heap_Mem  + Heap_Size)
-                                    LDR     R3, = Stack_Mem
-                                            BX      LR
-
-                                            ALIGN
-
-                                            ENDIF
-
-                                            END
-
-                                            ;
-*******************************END OF FILE ************************************

+ 368 - 0
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_hd.s

@@ -0,0 +1,368 @@
+;/*!
+; * @file        startup_apm32f10x_hd.s
+; *
+; * @brief       CMSIS Cortex-M3 based Core Device Startup File for Device startup_apm32f10x_hd
+; *
+; * @version     V1.0.2
+; *
+; * @date        2022-01-05
+; *
+; * @attention
+; *
+; *  Copyright (C) 2020-2022 Geehy Semiconductor
+; *
+; *  You may not use this file except in compliance with the
+; *  GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
+; *
+; *  The program is only for reference, which is distributed in the hope
+; *  that it will be usefull and instructional for customers to develop
+; *  their software. Unless required by applicable law or agreed to in
+; *  writing, the program is distributed on an "AS IS" BASIS, WITHOUT
+; *  ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
+; *  See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
+; *  and limitations under the License.
+; */
+
+; <h> Stack Configuration
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size      EQU     0x00000400
+
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem       SPACE   Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size       EQU     0x00000200
+
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem        SPACE   Heap_Size
+__heap_limit
+
+                PRESERVE8
+                THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+                AREA    RESET, DATA, READONLY
+                EXPORT  __Vectors
+                EXPORT  __Vectors_End
+                EXPORT  __Vectors_Size
+
+__Vectors       DCD     __initial_sp                 ; Top of Stack
+                DCD     Reset_Handler                ; Reset Handler
+                DCD     NMI_Handler                  ; NMI Handler
+                DCD     HardFault_Handler            ; Hard Fault Handler
+                DCD     MemManage_Handler            ; MPU Fault Handler
+                DCD     BusFault_Handler             ; Bus Fault Handler
+                DCD     UsageFault_Handler           ; Usage Fault Handler
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     SVC_Handler                  ; SVCall Handler
+                DCD     DebugMon_Handler             ; Debug Monitor Handler
+                DCD     0                            ; Reserved
+                DCD     PendSV_Handler               ; PendSV Handler
+                DCD     SysTick_Handler              ; SysTick Handler
+
+                ; External Interrupts
+                DCD     WWDT_IRQHandler              ; Window Watchdog
+                DCD     PVD_IRQHandler               ; PVD through EINT Line detect
+                DCD     TAMPER_IRQHandler            ; Tamper
+                DCD     RTC_IRQHandler               ; RTC
+                DCD     FLASH_IRQHandler             ; Flash
+                DCD     RCM_IRQHandler               ; RCM
+                DCD     EINT0_IRQHandler             ; EINT Line 0
+                DCD     EINT1_IRQHandler             ; EINT Line 1
+                DCD     EINT2_IRQHandler             ; EINT Line 2
+                DCD     EINT3_IRQHandler             ; EINT Line 3
+                DCD     EINT4_IRQHandler             ; EINT Line 4
+                DCD     DMA1_Channel1_IRQHandler     ; DMA1 Channel 1
+                DCD     DMA1_Channel2_IRQHandler     ; DMA1 Channel 2
+                DCD     DMA1_Channel3_IRQHandler     ; DMA1 Channel 3
+                DCD     DMA1_Channel4_IRQHandler     ; DMA1 Channel 4
+                DCD     DMA1_Channel5_IRQHandler     ; DMA1 Channel 5
+                DCD     DMA1_Channel6_IRQHandler     ; DMA1 Channel 6
+                DCD     DMA1_Channel7_IRQHandler     ; DMA1 Channel 7
+                DCD     ADC1_2_IRQHandler            ; ADC1 & ADC2
+                DCD     USBD1_HP_CAN1_TX_IRQHandler  ; USBD1 High Priority or CAN1 TX
+                DCD     USBD1_LP_CAN1_RX0_IRQHandler ; USBD1 Low  Priority or CAN1 RX0
+                DCD     CAN1_RX1_IRQHandler          ; CAN1 RX1
+                DCD     CAN1_SCE_IRQHandler          ; CAN1 SCE
+                DCD     EINT9_5_IRQHandler           ; EINT Line 9..5
+                DCD     TMR1_BRK_IRQHandler          ; TMR1 Break
+                DCD     TMR1_UP_IRQHandler           ; TMR1 Update
+                DCD     TMR1_TRG_COM_IRQHandler      ; TMR1 Trigger and Commutation
+                DCD     TMR1_CC_IRQHandler           ; TMR1 Capture Compare
+                DCD     TMR2_IRQHandler              ; TMR2
+                DCD     TMR3_IRQHandler              ; TMR3
+                DCD     TMR4_IRQHandler              ; TMR4
+                DCD     I2C1_EV_IRQHandler           ; I2C1 Event
+                DCD     I2C1_ER_IRQHandler           ; I2C1 Error
+                DCD     I2C2_EV_IRQHandler           ; I2C2 Event
+                DCD     I2C2_ER_IRQHandler           ; I2C2 Error
+                DCD     SPI1_IRQHandler              ; SPI1
+                DCD     SPI2_IRQHandler              ; SPI2
+                DCD     USART1_IRQHandler            ; USART1
+                DCD     USART2_IRQHandler            ; USART2
+                DCD     USART3_IRQHandler            ; USART3
+                DCD     EINT15_10_IRQHandler         ; EINT Line 15..10
+                DCD     RTCAlarm_IRQHandler          ; RTC Alarm through EINT Line
+                DCD     USBDWakeUp_IRQHandler        ; USBD Wakeup from suspend
+                DCD     TMR8_BRK_IRQHandler          ; TMR8 Break
+                DCD     TMR8_UP_IRQHandler           ; TMR8 Update
+                DCD     TMR8_TRG_COM_IRQHandler      ; TMR8 Trigger and Commutation
+                DCD     TMR8_CC_IRQHandler           ; TMR8 Capture Compare
+                DCD     ADC3_IRQHandler              ; ADC3
+                DCD     EMMC_IRQHandler              ; EMMC
+                DCD     SDIO_IRQHandler              ; SDIO
+                DCD     TMR5_IRQHandler              ; TMR5
+                DCD     SPI3_IRQHandler              ; SPI3
+                DCD     UART4_IRQHandler             ; UART4
+                DCD     UART5_IRQHandler             ; UART5
+                DCD     TMR6_IRQHandler              ; TMR6
+                DCD     TMR7_IRQHandler              ; TMR7
+                DCD     DMA2_Channel1_IRQHandler     ; DMA2 Channel1
+                DCD     DMA2_Channel2_IRQHandler     ; DMA2 Channel2
+                DCD     DMA2_Channel3_IRQHandler     ; DMA2 Channel3
+                DCD     DMA2_Channel4_5_IRQHandler   ; DMA2 Channel4 & Channel5
+                DCD     0                            ; Reserved
+                DCD     USBD2_HP_CAN2_TX_IRQHandler  ; USBD2 High Priority or CAN2 TX
+                DCD     USBD2_LP_CAN2_RX0_IRQHandler ; USBD2 Low  Priority or CAN2 RX0
+                DCD     CAN2_RX1_IRQHandler          ; CAN2 RX1
+                DCD     CAN2_SCE_IRQHandler          ; CAN2 SCE
+__Vectors_End
+
+__Vectors_Size  EQU  __Vectors_End - __Vectors
+
+                AREA    |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler   PROC
+                EXPORT  Reset_Handler                [WEAK]
+                IMPORT  __main
+                IMPORT  SystemInit
+                LDR     R0, =SystemInit
+                BLX     R0
+                LDR     R0, =__main
+                BX      R0
+                ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler     PROC
+                EXPORT  NMI_Handler                  [WEAK]
+                B       .
+                ENDP
+HardFault_Handler\
+                PROC
+                EXPORT  HardFault_Handler            [WEAK]
+                B       .
+                ENDP
+MemManage_Handler\
+                PROC
+                EXPORT  MemManage_Handler            [WEAK]
+                B       .
+                ENDP
+BusFault_Handler\
+                PROC
+                EXPORT  BusFault_Handler             [WEAK]
+                B       .
+                ENDP
+UsageFault_Handler\
+                PROC
+                EXPORT  UsageFault_Handler           [WEAK]
+                B       .
+                ENDP
+SVC_Handler     PROC
+                EXPORT  SVC_Handler                  [WEAK]
+                B       .
+                ENDP
+DebugMon_Handler\
+                PROC
+                EXPORT  DebugMon_Handler             [WEAK]
+                B       .
+                ENDP
+PendSV_Handler  PROC
+                EXPORT  PendSV_Handler               [WEAK]
+                B       .
+                ENDP
+SysTick_Handler PROC
+                EXPORT  SysTick_Handler              [WEAK]
+                B       .
+                ENDP
+
+Default_Handler PROC
+
+                EXPORT  WWDT_IRQHandler              [WEAK]
+                EXPORT  PVD_IRQHandler               [WEAK]
+                EXPORT  TAMPER_IRQHandler            [WEAK]
+                EXPORT  RTC_IRQHandler               [WEAK]
+                EXPORT  FLASH_IRQHandler             [WEAK]
+                EXPORT  RCM_IRQHandler               [WEAK]
+                EXPORT  EINT0_IRQHandler             [WEAK]
+                EXPORT  EINT1_IRQHandler             [WEAK]
+                EXPORT  EINT2_IRQHandler             [WEAK]
+                EXPORT  EINT3_IRQHandler             [WEAK]
+                EXPORT  EINT4_IRQHandler             [WEAK]
+                EXPORT  DMA1_Channel1_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel2_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel3_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel4_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel5_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel6_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel7_IRQHandler     [WEAK]
+                EXPORT  ADC1_2_IRQHandler            [WEAK]
+                EXPORT  USBD1_HP_CAN1_TX_IRQHandler  [WEAK]
+                EXPORT  USBD1_LP_CAN1_RX0_IRQHandler [WEAK]
+                EXPORT  CAN1_RX1_IRQHandler          [WEAK]
+                EXPORT  CAN1_SCE_IRQHandler          [WEAK]
+                EXPORT  EINT9_5_IRQHandler           [WEAK]
+                EXPORT  TMR1_BRK_IRQHandler          [WEAK]
+                EXPORT  TMR1_UP_IRQHandler           [WEAK]
+                EXPORT  TMR1_TRG_COM_IRQHandler      [WEAK]
+                EXPORT  TMR1_CC_IRQHandler           [WEAK]
+                EXPORT  TMR2_IRQHandler              [WEAK]
+                EXPORT  TMR3_IRQHandler              [WEAK]
+                EXPORT  TMR4_IRQHandler              [WEAK]
+                EXPORT  I2C1_EV_IRQHandler           [WEAK]
+                EXPORT  I2C1_ER_IRQHandler           [WEAK]
+                EXPORT  I2C2_EV_IRQHandler           [WEAK]
+                EXPORT  I2C2_ER_IRQHandler           [WEAK]
+                EXPORT  SPI1_IRQHandler              [WEAK]
+                EXPORT  SPI2_IRQHandler              [WEAK]
+                EXPORT  USART1_IRQHandler            [WEAK]
+                EXPORT  USART2_IRQHandler            [WEAK]
+                EXPORT  USART3_IRQHandler            [WEAK]
+                EXPORT  EINT15_10_IRQHandler         [WEAK]
+                EXPORT  RTCAlarm_IRQHandler          [WEAK]
+                EXPORT  USBDWakeUp_IRQHandler        [WEAK]
+                EXPORT  TMR8_BRK_IRQHandler          [WEAK]
+                EXPORT  TMR8_UP_IRQHandler           [WEAK]
+                EXPORT  TMR8_TRG_COM_IRQHandler      [WEAK]
+                EXPORT  TMR8_CC_IRQHandler           [WEAK]
+                EXPORT  ADC3_IRQHandler              [WEAK]
+                EXPORT  EMMC_IRQHandler              [WEAK]
+                EXPORT  SDIO_IRQHandler              [WEAK]
+                EXPORT  TMR5_IRQHandler              [WEAK]
+                EXPORT  SPI3_IRQHandler              [WEAK]
+                EXPORT  UART4_IRQHandler             [WEAK]
+                EXPORT  UART5_IRQHandler             [WEAK]
+                EXPORT  TMR6_IRQHandler              [WEAK]
+                EXPORT  TMR7_IRQHandler              [WEAK]
+                EXPORT  DMA2_Channel1_IRQHandler     [WEAK]
+                EXPORT  DMA2_Channel2_IRQHandler     [WEAK]
+                EXPORT  DMA2_Channel3_IRQHandler     [WEAK]
+                EXPORT  DMA2_Channel4_5_IRQHandler   [WEAK]
+                EXPORT  USBD2_HP_CAN2_TX_IRQHandler  [WEAK]
+                EXPORT  USBD2_LP_CAN2_RX0_IRQHandler [WEAK]
+                EXPORT  CAN2_RX1_IRQHandler          [WEAK]
+                EXPORT  CAN2_SCE_IRQHandler          [WEAK]
+
+WWDT_IRQHandler
+PVD_IRQHandler
+TAMPER_IRQHandler
+RTC_IRQHandler
+FLASH_IRQHandler
+RCM_IRQHandler
+EINT0_IRQHandler
+EINT1_IRQHandler
+EINT2_IRQHandler
+EINT3_IRQHandler
+EINT4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_2_IRQHandler
+USBD1_HP_CAN1_TX_IRQHandler
+USBD1_LP_CAN1_RX0_IRQHandler
+CAN1_RX1_IRQHandler
+CAN1_SCE_IRQHandler
+EINT9_5_IRQHandler
+TMR1_BRK_IRQHandler
+TMR1_UP_IRQHandler
+TMR1_TRG_COM_IRQHandler
+TMR1_CC_IRQHandler
+TMR2_IRQHandler
+TMR3_IRQHandler
+TMR4_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EINT15_10_IRQHandler
+RTCAlarm_IRQHandler
+USBDWakeUp_IRQHandler
+TMR8_BRK_IRQHandler
+TMR8_UP_IRQHandler
+TMR8_TRG_COM_IRQHandler
+TMR8_CC_IRQHandler
+ADC3_IRQHandler
+EMMC_IRQHandler
+SDIO_IRQHandler
+TMR5_IRQHandler
+SPI3_IRQHandler
+UART4_IRQHandler
+UART5_IRQHandler
+TMR6_IRQHandler
+TMR7_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_5_IRQHandler
+USBD2_HP_CAN2_TX_IRQHandler
+USBD2_LP_CAN2_RX0_IRQHandler
+CAN2_RX1_IRQHandler
+CAN2_SCE_IRQHandler
+                B       .
+
+                ENDP
+
+                ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+                 IF      :DEF:__MICROLIB
+
+                 EXPORT  __initial_sp
+                 EXPORT  __heap_base
+                 EXPORT  __heap_limit
+
+                 ELSE
+
+                 IMPORT  __use_two_region_memory
+                 EXPORT  __user_initial_stackheap
+
+__user_initial_stackheap
+
+                 LDR     R0, = Heap_Mem
+                 LDR     R1, = (Stack_Mem + Stack_Size)
+                 LDR     R2, = (Heap_Mem  + Heap_Size)
+                 LDR     R3, = Stack_Mem
+                 BX      LR
+
+                 ALIGN
+
+                 ENDIF
+
+                 END
+
+;*******************************END OF FILE************************************
+

+ 315 - 0
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_md.s

@@ -0,0 +1,315 @@
+;/*!
+; * @file        startup_apm32f10x_md.s
+; *
+; * @brief       CMSIS Cortex-M3 based Core Device Startup File for Device startup_apm32f10x_md
+; *
+; * @version     V1.0.2
+; *
+; * @date        2022-01-05
+; *
+; * @attention
+; *
+; *  Copyright (C) 2020-2022 Geehy Semiconductor
+; *
+; *  You may not use this file except in compliance with the
+; *  GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
+; *
+; *  The program is only for reference, which is distributed in the hope
+; *  that it will be usefull and instructional for customers to develop
+; *  their software. Unless required by applicable law or agreed to in
+; *  writing, the program is distributed on an "AS IS" BASIS, WITHOUT
+; *  ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
+; *  See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
+; *  and limitations under the License.
+; */
+
+; <h> Stack Configuration
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size      EQU     0x00000400
+
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem       SPACE   Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size       EQU     0x00000200
+
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem        SPACE   Heap_Size
+__heap_limit
+
+                PRESERVE8
+                THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+                AREA    RESET, DATA, READONLY
+                EXPORT  __Vectors
+                EXPORT  __Vectors_End
+                EXPORT  __Vectors_Size
+
+__Vectors       DCD     __initial_sp                 ; Top of Stack
+                DCD     Reset_Handler                ; Reset Handler
+                DCD     NMI_Handler                  ; NMI Handler
+                DCD     HardFault_Handler            ; Hard Fault Handler
+                DCD     MemManage_Handler            ; MPU Fault Handler
+                DCD     BusFault_Handler             ; Bus Fault Handler
+                DCD     UsageFault_Handler           ; Usage Fault Handler
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     SVC_Handler                  ; SVCall Handler
+                DCD     DebugMon_Handler             ; Debug Monitor Handler
+                DCD     0                            ; Reserved
+                DCD     PendSV_Handler               ; PendSV Handler
+                DCD     SysTick_Handler              ; SysTick Handler
+
+                ; External Interrupts
+                DCD     WWDT_IRQHandler              ; Window Watchdog
+                DCD     PVD_IRQHandler               ; PVD through EINT Line detect
+                DCD     TAMPER_IRQHandler            ; Tamper
+                DCD     RTC_IRQHandler               ; RTC
+                DCD     FLASH_IRQHandler             ; Flash
+                DCD     RCM_IRQHandler               ; RCM
+                DCD     EINT0_IRQHandler             ; EINT Line 0
+                DCD     EINT1_IRQHandler             ; EINT Line 1
+                DCD     EINT2_IRQHandler             ; EINT Line 2
+                DCD     EINT3_IRQHandler             ; EINT Line 3
+                DCD     EINT4_IRQHandler             ; EINT Line 4
+                DCD     DMA1_Channel1_IRQHandler     ; DMA1 Channel 1
+                DCD     DMA1_Channel2_IRQHandler     ; DMA1 Channel 2
+                DCD     DMA1_Channel3_IRQHandler     ; DMA1 Channel 3
+                DCD     DMA1_Channel4_IRQHandler     ; DMA1 Channel 4
+                DCD     DMA1_Channel5_IRQHandler     ; DMA1 Channel 5
+                DCD     DMA1_Channel6_IRQHandler     ; DMA1 Channel 6
+                DCD     DMA1_Channel7_IRQHandler     ; DMA1 Channel 7
+                DCD     ADC1_2_IRQHandler            ; ADC1_2
+                DCD     USBD1_HP_CAN1_TX_IRQHandler  ; USBD1 High Priority or CAN1 TX
+                DCD     USBD1_LP_CAN1_RX0_IRQHandler ; USBD1 Low  Priority or CAN1 RX0
+                DCD     CAN1_RX1_IRQHandler          ; CAN1 RX1
+                DCD     CAN1_SCE_IRQHandler          ; CAN1 SCE
+                DCD     EINT9_5_IRQHandler           ; EINT Line 9..5
+                DCD     TMR1_BRK_IRQHandler          ; TMR1 Break
+                DCD     TMR1_UP_IRQHandler           ; TMR1 Update
+                DCD     TMR1_TRG_COM_IRQHandler      ; TMR1 Trigger and Commutation
+                DCD     TMR1_CC_IRQHandler           ; TMR1 Capture Compare
+                DCD     TMR2_IRQHandler              ; TMR2
+                DCD     TMR3_IRQHandler              ; TMR3
+                DCD     TMR4_IRQHandler              ; TMR4
+                DCD     I2C1_EV_IRQHandler           ; I2C1 Event
+                DCD     I2C1_ER_IRQHandler           ; I2C1 Error
+                DCD     I2C2_EV_IRQHandler           ; I2C2 Event
+                DCD     I2C2_ER_IRQHandler           ; I2C2 Error
+                DCD     SPI1_IRQHandler              ; SPI1
+                DCD     SPI2_IRQHandler              ; SPI2
+                DCD     USART1_IRQHandler            ; USART1
+                DCD     USART2_IRQHandler            ; USART2
+                DCD     USART3_IRQHandler            ; USART3
+                DCD     EINT15_10_IRQHandler         ; EINT Line 15..10
+                DCD     RTCAlarm_IRQHandler          ; RTC Alarm through EINT Line
+                DCD     USBDWakeUp_IRQHandler        ; USBD Wakeup from suspend
+                DCD     FPU_IRQHandler               ; FPU
+                DCD     QSPI_IRQHandler              ; QSPI
+                DCD     USBD2_HP_IRQHandler          ; USBD2 High Priority
+                DCD     USBD2_LP_IRQHandler          ; USBD2 Low Priority
+__Vectors_End
+
+__Vectors_Size  EQU  __Vectors_End - __Vectors
+
+                AREA    |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler    PROC
+                 EXPORT  Reset_Handler               [WEAK]
+     IMPORT  __main
+     IMPORT  SystemInit
+                 LDR     R0, =SystemInit
+                 BLX     R0
+                 LDR     R0, =__main
+                 BX      R0
+                 ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler     PROC
+                EXPORT  NMI_Handler                  [WEAK]
+                B       .
+                ENDP
+HardFault_Handler\
+                PROC
+                EXPORT  HardFault_Handler            [WEAK]
+                B       .
+                ENDP
+MemManage_Handler\
+                PROC
+                EXPORT  MemManage_Handler            [WEAK]
+                B       .
+                ENDP
+BusFault_Handler\
+                PROC
+                EXPORT  BusFault_Handler             [WEAK]
+                B       .
+                ENDP
+UsageFault_Handler\
+                PROC
+                EXPORT  UsageFault_Handler           [WEAK]
+                B       .
+                ENDP
+SVC_Handler     PROC
+                EXPORT  SVC_Handler                  [WEAK]
+                B       .
+                ENDP
+DebugMon_Handler\
+                PROC
+                EXPORT  DebugMon_Handler             [WEAK]
+                B       .
+                ENDP
+PendSV_Handler  PROC
+                EXPORT  PendSV_Handler               [WEAK]
+                B       .
+                ENDP
+SysTick_Handler PROC
+                EXPORT  SysTick_Handler              [WEAK]
+                B       .
+                ENDP
+
+Default_Handler PROC
+
+                EXPORT  WWDT_IRQHandler              [WEAK]
+                EXPORT  PVD_IRQHandler               [WEAK]
+                EXPORT  TAMPER_IRQHandler            [WEAK]
+                EXPORT  RTC_IRQHandler               [WEAK]
+                EXPORT  FLASH_IRQHandler             [WEAK]
+                EXPORT  RCM_IRQHandler               [WEAK]
+                EXPORT  EINT0_IRQHandler             [WEAK]
+                EXPORT  EINT1_IRQHandler             [WEAK]
+                EXPORT  EINT2_IRQHandler             [WEAK]
+                EXPORT  EINT3_IRQHandler             [WEAK]
+                EXPORT  EINT4_IRQHandler             [WEAK]
+                EXPORT  DMA1_Channel1_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel2_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel3_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel4_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel5_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel6_IRQHandler     [WEAK]
+                EXPORT  DMA1_Channel7_IRQHandler     [WEAK]
+                EXPORT  ADC1_2_IRQHandler            [WEAK]
+                EXPORT  USBD1_HP_CAN1_TX_IRQHandler  [WEAK]
+                EXPORT  USBD1_LP_CAN1_RX0_IRQHandler [WEAK]
+                EXPORT  CAN1_RX1_IRQHandler          [WEAK]
+                EXPORT  CAN1_SCE_IRQHandler          [WEAK]
+                EXPORT  EINT9_5_IRQHandler           [WEAK]
+                EXPORT  TMR1_BRK_IRQHandler          [WEAK]
+                EXPORT  TMR1_UP_IRQHandler           [WEAK]
+                EXPORT  TMR1_TRG_COM_IRQHandler      [WEAK]
+                EXPORT  TMR1_CC_IRQHandler           [WEAK]
+                EXPORT  TMR2_IRQHandler              [WEAK]
+                EXPORT  TMR3_IRQHandler              [WEAK]
+                EXPORT  TMR4_IRQHandler              [WEAK]
+                EXPORT  I2C1_EV_IRQHandler           [WEAK]
+                EXPORT  I2C1_ER_IRQHandler           [WEAK]
+                EXPORT  I2C2_EV_IRQHandler           [WEAK]
+                EXPORT  I2C2_ER_IRQHandler           [WEAK]
+                EXPORT  SPI1_IRQHandler              [WEAK]
+                EXPORT  SPI2_IRQHandler              [WEAK]
+                EXPORT  USART1_IRQHandler            [WEAK]
+                EXPORT  USART2_IRQHandler            [WEAK]
+                EXPORT  USART3_IRQHandler            [WEAK]
+                EXPORT  EINT15_10_IRQHandler         [WEAK]
+                EXPORT  RTCAlarm_IRQHandler          [WEAK]
+                EXPORT  USBDWakeUp_IRQHandler        [WEAK]
+                EXPORT  FPU_IRQHandler               [WEAK]
+                EXPORT  QSPI_IRQHandler              [WEAK]
+                EXPORT  USBD2_HP_IRQHandler          [WEAK]
+                EXPORT  USBD2_LP_IRQHandler          [WEAK]
+
+WWDT_IRQHandler
+PVD_IRQHandler
+TAMPER_IRQHandler
+RTC_IRQHandler
+FLASH_IRQHandler
+RCM_IRQHandler
+EINT0_IRQHandler
+EINT1_IRQHandler
+EINT2_IRQHandler
+EINT3_IRQHandler
+EINT4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_2_IRQHandler
+USBD1_HP_CAN1_TX_IRQHandler
+USBD1_LP_CAN1_RX0_IRQHandler
+CAN1_RX1_IRQHandler
+CAN1_SCE_IRQHandler
+EINT9_5_IRQHandler
+TMR1_BRK_IRQHandler
+TMR1_UP_IRQHandler
+TMR1_TRG_COM_IRQHandler
+TMR1_CC_IRQHandler
+TMR2_IRQHandler
+TMR3_IRQHandler
+TMR4_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EINT15_10_IRQHandler
+RTCAlarm_IRQHandler
+USBDWakeUp_IRQHandler
+FPU_IRQHandler
+QSPI_IRQHandler
+USBD2_HP_IRQHandler
+USBD2_LP_IRQHandler
+                B       .
+
+                ENDP
+
+                ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+                 IF      :DEF:__MICROLIB
+
+                 EXPORT  __initial_sp
+                 EXPORT  __heap_base
+                 EXPORT  __heap_limit
+
+                 ELSE
+
+                 IMPORT  __use_two_region_memory
+                 EXPORT  __user_initial_stackheap
+
+__user_initial_stackheap
+
+                 LDR     R0, = Heap_Mem
+                 LDR     R1, = (Stack_Mem + Stack_Size)
+                 LDR     R2, = (Heap_Mem  + Heap_Size)
+                 LDR     R3, = Stack_Mem
+                 BX      LR
+
+                 ALIGN
+
+                 ENDIF
+
+                 END
+
+;*******************************END OF FILE************************************

+ 466 - 775
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s

@@ -23,791 +23,482 @@
 ; *  and limitations under the License.
 ; */
 
-MODULE  ? cstartup
+    MODULE  ?cstartup
 
-;;
-Forward declaration of sections.
-SECTION CSTACK:
-DATA:
-NOROOT(3)
+        ;; Forward declaration of sections.
+        SECTION CSTACK:DATA:NOROOT(3)
 
-SECTION .intvec:
-CODE:
-NOROOT(2)
+        SECTION .intvec:CODE:NOROOT(2)
 
 
-EXTERN  __iar_program_start
-EXTERN  SystemInit
-PUBLIC  __vector_table
+        EXTERN  __iar_program_start
+        EXTERN  SystemInit
+        PUBLIC  __vector_table
 
-DATA
+        DATA
 
 __vector_table
-DCD     sfe(CSTACK)
-DCD     Reset_Handler                ;
-Reset Handler
-DCD     NMI_Handler                  ;
-NMI Handler
-DCD     HardFault_Handler            ;
-Hard Fault Handler
-DCD     MemManage_Handler            ;
-MPU Fault Handler
-DCD     BusFault_Handler             ;
-Bus Fault Handler
-DCD     UsageFault_Handler           ;
-Usage Fault Handler
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     SVC_Handler                  ;
-SVCall Handler
-DCD     DebugMon_Handler             ;
-Debug Monitor Handler
-DCD     0                            ;
-Reserved
-DCD     PendSV_Handler               ;
-PendSV Handler
-DCD     SysTick_Handler              ;
-SysTick Handler
-
-;
-External Interrupts
-DCD     WWDT_IRQHandler              ;
-Window Watchdog
-DCD     PVD_IRQHandler               ;
-PVD through EINT Line detect
-DCD     TAMPER_IRQHandler            ;
-Tamper
-DCD     RTC_IRQHandler               ;
-RTC
-DCD     FLASH_IRQHandler             ;
-Flash
-DCD     RCM_IRQHandler               ;
-RCM
-DCD     EINT0_IRQHandler             ;
-EINT Line 0
-DCD     EINT1_IRQHandler             ;
-EINT Line 1
-DCD     EINT2_IRQHandler             ;
-EINT Line 2
-DCD     EINT3_IRQHandler             ;
-EINT Line 3
-DCD     EINT4_IRQHandler             ;
-EINT Line 4
-DCD     DMA1_Channel1_IRQHandler     ;
-DMA1 Channel 1
-DCD     DMA1_Channel2_IRQHandler     ;
-DMA1 Channel 2
-DCD     DMA1_Channel3_IRQHandler     ;
-DMA1 Channel 3
-DCD     DMA1_Channel4_IRQHandler     ;
-DMA1 Channel 4
-DCD     DMA1_Channel5_IRQHandler     ;
-DMA1 Channel 5
-DCD     DMA1_Channel6_IRQHandler     ;
-DMA1 Channel 6
-DCD     DMA1_Channel7_IRQHandler     ;
-DMA1 Channel 7
-DCD     ADC1_2_IRQHandler            ;
-ADC1 &ADC2
-DCD     USBD1_HP_CAN1_TX_IRQHandler  ;
-USBD1 High Priority or CAN1 TX
-DCD     USBD1_LP_CAN1_RX0_IRQHandler ;
-USBD1 Low  Priority or CAN1 RX0
-DCD     CAN1_RX1_IRQHandler          ;
-CAN1 RX1
-DCD     CAN1_SCE_IRQHandler          ;
-CAN1 SCE
-DCD     EINT9_5_IRQHandler           ;
-EINT Line 9..5
-DCD     TMR1_BRK_IRQHandler          ;
-TMR1 Break
-DCD     TMR1_UP_IRQHandler           ;
-TMR1 Update
-DCD     TMR1_TRG_COM_IRQHandler      ;
-TMR1 Trigger and Commutation
-DCD     TMR1_CC_IRQHandler           ;
-TMR1 Capture Compare
-DCD     TMR2_IRQHandler              ;
-TMR2
-DCD     TMR3_IRQHandler              ;
-TMR3
-DCD     TMR4_IRQHandler              ;
-TMR4
-DCD     I2C1_EV_IRQHandler           ;
-I2C1 Event
-DCD     I2C1_ER_IRQHandler           ;
-I2C1 Error
-DCD     I2C2_EV_IRQHandler           ;
-I2C2 Event
-DCD     I2C2_ER_IRQHandler           ;
-I2C2 Error
-DCD     SPI1_IRQHandler              ;
-SPI1
-DCD     SPI2_IRQHandler              ;
-SPI2
-DCD     USART1_IRQHandler            ;
-USART1
-DCD     USART2_IRQHandler            ;
-USART2
-DCD     USART3_IRQHandler            ;
-USART3
-DCD     EINT15_10_IRQHandler         ;
-EINT Line 15..10
-DCD     RTCAlarm_IRQHandler          ;
-RTC Alarm through EINT Line
-DCD     USBDWakeUp_IRQHandler        ;
-USBD Wakeup from suspend
-DCD     TMR8_BRK_IRQHandler          ;
-TMR8 Break
-DCD     TMR8_UP_IRQHandler           ;
-TMR8 Update
-DCD     TMR8_TRG_COM_IRQHandler      ;
-TMR8 Trigger and Commutation
-DCD     TMR8_CC_IRQHandler           ;
-TMR8 Capture Compare
-DCD     ADC3_IRQHandler              ;
-ADC3
-DCD     EMMC_IRQHandler              ;
-EMMC
-DCD     SDIO_IRQHandler              ;
-SDIO
-DCD     TMR5_IRQHandler              ;
-TMR5
-DCD     SPI3_IRQHandler              ;
-SPI3
-DCD     UART4_IRQHandler             ;
-UART4
-DCD     UART5_IRQHandler             ;
-UART5
-DCD     TMR6_IRQHandler              ;
-TMR6
-DCD     TMR7_IRQHandler              ;
-TMR7
-DCD     DMA2_Channel1_IRQHandler     ;
-DMA2 Channel1
-DCD     DMA2_Channel2_IRQHandler     ;
-DMA2 Channel2
-DCD     DMA2_Channel3_IRQHandler     ;
-DMA2 Channel3
-DCD     DMA2_Channel4_5_IRQHandler   ;
-DMA2 Channel4 &Channel5
-DCD     0                            ;
-Reserved
-DCD     USBD2_HP_CAN2_TX_IRQHandler  ;
-USBD2 High Priority or CAN2 TX
-DCD     USBD2_LP_CAN2_RX0_IRQHandler ;
-USBD2 Low  Priority or CAN2 RX0
-DCD     CAN2_RX1_IRQHandler          ;
-CAN2 RX1
-DCD     CAN2_SCE_IRQHandler          ;
-CAN2 SCE
+        DCD     sfe(CSTACK)
+                DCD     Reset_Handler                ; Reset Handler
+                DCD     NMI_Handler                  ; NMI Handler
+                DCD     HardFault_Handler            ; Hard Fault Handler
+                DCD     MemManage_Handler            ; MPU Fault Handler
+                DCD     BusFault_Handler             ; Bus Fault Handler
+                DCD     UsageFault_Handler           ; Usage Fault Handler
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     SVC_Handler                  ; SVCall Handler
+                DCD     DebugMon_Handler             ; Debug Monitor Handler
+                DCD     0                            ; Reserved
+                DCD     PendSV_Handler               ; PendSV Handler
+                DCD     SysTick_Handler              ; SysTick Handler
+
+                ; External Interrupts
+                DCD     WWDT_IRQHandler              ; Window Watchdog
+                DCD     PVD_IRQHandler               ; PVD through EINT Line detect
+                DCD     TAMPER_IRQHandler            ; Tamper
+                DCD     RTC_IRQHandler               ; RTC
+                DCD     FLASH_IRQHandler             ; Flash
+                DCD     RCM_IRQHandler               ; RCM
+                DCD     EINT0_IRQHandler             ; EINT Line 0
+                DCD     EINT1_IRQHandler             ; EINT Line 1
+                DCD     EINT2_IRQHandler             ; EINT Line 2
+                DCD     EINT3_IRQHandler             ; EINT Line 3
+                DCD     EINT4_IRQHandler             ; EINT Line 4
+                DCD     DMA1_Channel1_IRQHandler     ; DMA1 Channel 1
+                DCD     DMA1_Channel2_IRQHandler     ; DMA1 Channel 2
+                DCD     DMA1_Channel3_IRQHandler     ; DMA1 Channel 3
+                DCD     DMA1_Channel4_IRQHandler     ; DMA1 Channel 4
+                DCD     DMA1_Channel5_IRQHandler     ; DMA1 Channel 5
+                DCD     DMA1_Channel6_IRQHandler     ; DMA1 Channel 6
+                DCD     DMA1_Channel7_IRQHandler     ; DMA1 Channel 7
+                DCD     ADC1_2_IRQHandler            ; ADC1 & ADC2
+                DCD     USBD1_HP_CAN1_TX_IRQHandler  ; USBD1 High Priority or CAN1 TX
+                DCD     USBD1_LP_CAN1_RX0_IRQHandler ; USBD1 Low  Priority or CAN1 RX0
+                DCD     CAN1_RX1_IRQHandler          ; CAN1 RX1
+                DCD     CAN1_SCE_IRQHandler          ; CAN1 SCE
+                DCD     EINT9_5_IRQHandler           ; EINT Line 9..5
+                DCD     TMR1_BRK_IRQHandler          ; TMR1 Break
+                DCD     TMR1_UP_IRQHandler           ; TMR1 Update
+                DCD     TMR1_TRG_COM_IRQHandler      ; TMR1 Trigger and Commutation
+                DCD     TMR1_CC_IRQHandler           ; TMR1 Capture Compare
+                DCD     TMR2_IRQHandler              ; TMR2
+                DCD     TMR3_IRQHandler              ; TMR3
+                DCD     TMR4_IRQHandler              ; TMR4
+                DCD     I2C1_EV_IRQHandler           ; I2C1 Event
+                DCD     I2C1_ER_IRQHandler           ; I2C1 Error
+                DCD     I2C2_EV_IRQHandler           ; I2C2 Event
+                DCD     I2C2_ER_IRQHandler           ; I2C2 Error
+                DCD     SPI1_IRQHandler              ; SPI1
+                DCD     SPI2_IRQHandler              ; SPI2
+                DCD     USART1_IRQHandler            ; USART1
+                DCD     USART2_IRQHandler            ; USART2
+                DCD     USART3_IRQHandler            ; USART3
+                DCD     EINT15_10_IRQHandler         ; EINT Line 15..10
+                DCD     RTCAlarm_IRQHandler          ; RTC Alarm through EINT Line
+                DCD     USBDWakeUp_IRQHandler        ; USBD Wakeup from suspend
+                DCD     TMR8_BRK_IRQHandler          ; TMR8 Break
+                DCD     TMR8_UP_IRQHandler           ; TMR8 Update
+                DCD     TMR8_TRG_COM_IRQHandler      ; TMR8 Trigger and Commutation
+                DCD     TMR8_CC_IRQHandler           ; TMR8 Capture Compare
+                DCD     ADC3_IRQHandler              ; ADC3
+                DCD     EMMC_IRQHandler              ; EMMC
+                DCD     SDIO_IRQHandler              ; SDIO
+                DCD     TMR5_IRQHandler              ; TMR5
+                DCD     SPI3_IRQHandler              ; SPI3
+                DCD     UART4_IRQHandler             ; UART4
+                DCD     UART5_IRQHandler             ; UART5
+                DCD     TMR6_IRQHandler              ; TMR6
+                DCD     TMR7_IRQHandler              ; TMR7
+                DCD     DMA2_Channel1_IRQHandler     ; DMA2 Channel1
+                DCD     DMA2_Channel2_IRQHandler     ; DMA2 Channel2
+                DCD     DMA2_Channel3_IRQHandler     ; DMA2 Channel3
+                DCD     DMA2_Channel4_5_IRQHandler   ; DMA2 Channel4 & Channel5
+                DCD     0                            ; Reserved
+                DCD     USBD2_HP_CAN2_TX_IRQHandler  ; USBD2 High Priority or CAN2 TX
+                DCD     USBD2_LP_CAN2_RX0_IRQHandler ; USBD2 Low  Priority or CAN2 RX0
+                DCD     CAN2_RX1_IRQHandler          ; CAN2 RX1
+                DCD     CAN2_SCE_IRQHandler          ; CAN2 SCE
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
+;; Default interrupt handlers.
 ;;
-Default interrupt handlers.
-;;
-THUMB
+        THUMB
 
-PUBWEAK Reset_Handler
-SECTION .text:
-CODE:
-REORDER:
-NOROOT(2)
+        PUBWEAK Reset_Handler
+        SECTION .text:CODE:REORDER:NOROOT(2)
 Reset_Handler
-LDR     R0, = SystemInit
-              BLX     R0
-              LDR     R0, = __iar_program_start
-                            BX      R0
-
-                            PUBWEAK NMI_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            NMI_Handler
-                            B NMI_Handler
-
-                            PUBWEAK HardFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            HardFault_Handler
-                            B HardFault_Handler
-
-                            PUBWEAK MemManage_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            MemManage_Handler
-                            B MemManage_Handler
-
-                            PUBWEAK BusFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            BusFault_Handler
-                            B BusFault_Handler
-
-                            PUBWEAK UsageFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            UsageFault_Handler
-                            B UsageFault_Handler
-
-                            PUBWEAK SVC_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SVC_Handler
-                            B SVC_Handler
-
-                            PUBWEAK DebugMon_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DebugMon_Handler
-                            B DebugMon_Handler
-
-                            PUBWEAK PendSV_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            PendSV_Handler
-                            B PendSV_Handler
-
-                            PUBWEAK SysTick_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SysTick_Handler
-                            B SysTick_Handler
-
-                            PUBWEAK WWDT_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            WWDT_IRQHandler
-                            B WWDT_IRQHandler
-
-                            PUBWEAK PVD_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            PVD_IRQHandler
-                            B PVD_IRQHandler
-
-                            PUBWEAK TAMPER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TAMPER_IRQHandler
-                            B TAMPER_IRQHandler
-
-                            PUBWEAK RTC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RTC_IRQHandler
-                            B RTC_IRQHandler
-
-                            PUBWEAK FLASH_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            FLASH_IRQHandler
-                            B FLASH_IRQHandler
-
-                            PUBWEAK RCM_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RCM_IRQHandler
-                            B RCM_IRQHandler
-
-                            PUBWEAK EINT0_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT0_IRQHandler
-                            B EINT0_IRQHandler
-
-                            PUBWEAK EINT1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT1_IRQHandler
-                            B EINT1_IRQHandler
-
-                            PUBWEAK EINT2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT2_IRQHandler
-                            B EINT2_IRQHandler
-
-                            PUBWEAK EINT3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT3_IRQHandler
-                            B EINT3_IRQHandler
-
-                            PUBWEAK EINT4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT4_IRQHandler
-                            B EINT4_IRQHandler
-
-                            PUBWEAK DMA1_Channel1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel1_IRQHandler
-                            B DMA1_Channel1_IRQHandler
-
-                            PUBWEAK DMA1_Channel2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel2_IRQHandler
-                            B DMA1_Channel2_IRQHandler
-
-                            PUBWEAK DMA1_Channel3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel3_IRQHandler
-                            B DMA1_Channel3_IRQHandler
-
-                            PUBWEAK DMA1_Channel4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel4_IRQHandler
-                            B DMA1_Channel4_IRQHandler
-
-                            PUBWEAK DMA1_Channel5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel5_IRQHandler
-                            B DMA1_Channel5_IRQHandler
-
-                            PUBWEAK DMA1_Channel6_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel6_IRQHandler
-                            B DMA1_Channel6_IRQHandler
-
-                            PUBWEAK DMA1_Channel7_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel7_IRQHandler
-                            B DMA1_Channel7_IRQHandler
-
-                            PUBWEAK ADC1_2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            ADC1_2_IRQHandler
-                            B ADC1_2_IRQHandler
-
-                            PUBWEAK USBD1_HP_CAN1_TX_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD1_HP_CAN1_TX_IRQHandler
-                            B USBD1_HP_CAN1_TX_IRQHandler
-
-                            PUBWEAK USBD1_LP_CAN1_RX0_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD1_LP_CAN1_RX0_IRQHandler
-                            B USBD1_LP_CAN1_RX0_IRQHandler
-
-                            PUBWEAK CAN1_RX1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN1_RX1_IRQHandler
-                            B CAN1_RX1_IRQHandler
-
-                            PUBWEAK CAN1_SCE_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN1_SCE_IRQHandler
-                            B CAN1_SCE_IRQHandler
-
-                            PUBWEAK EINT9_5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT9_5_IRQHandler
-                            B EINT9_5_IRQHandler
-
-                            PUBWEAK TMR1_BRK_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_BRK_IRQHandler
-                            B TMR1_BRK_IRQHandler
-
-                            PUBWEAK TMR1_UP_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_UP_IRQHandler
-                            B TMR1_UP_IRQHandler
-
-                            PUBWEAK TMR1_TRG_COM_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_TRG_COM_IRQHandler
-                            B TMR1_TRG_COM_IRQHandler
-
-                            PUBWEAK TMR1_CC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_CC_IRQHandler
-                            B TMR1_CC_IRQHandler
-
-                            PUBWEAK TMR2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR2_IRQHandler
-                            B TMR2_IRQHandler
-
-                            PUBWEAK TMR3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR3_IRQHandler
-                            B TMR3_IRQHandler
-
-                            PUBWEAK TMR4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR4_IRQHandler
-                            B TMR4_IRQHandler
-
-                            PUBWEAK I2C1_EV_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C1_EV_IRQHandler
-                            B I2C1_EV_IRQHandler
-
-                            PUBWEAK I2C1_ER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C1_ER_IRQHandler
-                            B I2C1_ER_IRQHandler
-
-                            PUBWEAK I2C2_EV_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C2_EV_IRQHandler
-                            B I2C2_EV_IRQHandler
-
-                            PUBWEAK I2C2_ER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C2_ER_IRQHandler
-                            B I2C2_ER_IRQHandler
-
-                            PUBWEAK SPI1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SPI1_IRQHandler
-                            B SPI1_IRQHandler
-
-                            PUBWEAK SPI2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SPI2_IRQHandler
-                            B SPI2_IRQHandler
-
-                            PUBWEAK USART1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART1_IRQHandler
-                            B USART1_IRQHandler
-
-                            PUBWEAK USART2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART2_IRQHandler
-                            B USART2_IRQHandler
-
-                            PUBWEAK USART3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART3_IRQHandler
-                            B USART3_IRQHandler
-
-                            PUBWEAK EINT15_10_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT15_10_IRQHandler
-                            B EINT15_10_IRQHandler
-
-                            PUBWEAK RTCAlarm_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RTCAlarm_IRQHandler
-                            B RTCAlarm_IRQHandler
-
-                            PUBWEAK USBDWakeUp_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBDWakeUp_IRQHandler
-                            B USBDWakeUp_IRQHandler
-
-                            PUBWEAK TMR8_BRK_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR8_BRK_IRQHandler
-                            B TMR8_BRK_IRQHandler
-
-                            PUBWEAK TMR8_UP_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR8_UP_IRQHandler
-                            B TMR8_UP_IRQHandler
-
-                            PUBWEAK TMR8_TRG_COM_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR8_TRG_COM_IRQHandler
-                            B TMR8_TRG_COM_IRQHandler
-
-                            PUBWEAK TMR8_CC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR8_CC_IRQHandler
-                            B TMR8_CC_IRQHandler
-
-                            PUBWEAK ADC3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            ADC3_IRQHandler
-                            B ADC3_IRQHandler
-
-                            PUBWEAK EMMC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EMMC_IRQHandler
-                            B EMMC_IRQHandler
-
-                            PUBWEAK SDIO_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SDIO_IRQHandler
-                            B SDIO_IRQHandler
-
-                            PUBWEAK TMR5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR5_IRQHandler
-                            B TMR5_IRQHandler
-
-                            PUBWEAK SPI3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SPI3_IRQHandler
-                            B SPI3_IRQHandler
-
-                            PUBWEAK UART4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            UART4_IRQHandler
-                            B UART4_IRQHandler
-
-                            PUBWEAK UART5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            UART5_IRQHandler
-                            B UART5_IRQHandler
-
-                            PUBWEAK TMR6_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR6_IRQHandler
-                            B TMR6_IRQHandler
-
-                            PUBWEAK TMR7_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR7_IRQHandler
-                            B TMR7_IRQHandler
-
-                            PUBWEAK DMA2_Channel1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA2_Channel1_IRQHandler
-                            B DMA2_Channel1_IRQHandler
-
-                            PUBWEAK DMA2_Channel2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA2_Channel2_IRQHandler
-                            B DMA2_Channel2_IRQHandler
-
-                            PUBWEAK DMA2_Channel3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA2_Channel3_IRQHandler
-                            B DMA2_Channel3_IRQHandler
-
-                            PUBWEAK DMA2_Channel4_5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA2_Channel4_5_IRQHandler
-                            B DMA2_Channel4_5_IRQHandler
-
-                            PUBWEAK USBD2_HP_CAN2_TX_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD2_HP_CAN2_TX_IRQHandler
-                            B USBD2_HP_CAN2_TX_IRQHandler
-
-                            PUBWEAK USBD2_LP_CAN2_RX0_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD2_LP_CAN2_RX0_IRQHandler
-                            B USBD2_LP_CAN2_RX0_IRQHandler
-
-                            PUBWEAK CAN2_RX1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN2_RX1_IRQHandler
-                            B CAN2_RX1_IRQHandler
-
-                            PUBWEAK CAN2_SCE_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN2_SCE_IRQHandler
-                            B CAN2_SCE_IRQHandler
-
-                            END
+        LDR     R0, =SystemInit
+        BLX     R0
+        LDR     R0, =__iar_program_start
+        BX      R0
+
+        PUBWEAK NMI_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+        B NMI_Handler
+
+        PUBWEAK HardFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+        B HardFault_Handler
+
+        PUBWEAK MemManage_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+MemManage_Handler
+        B MemManage_Handler
+
+        PUBWEAK BusFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+BusFault_Handler
+        B BusFault_Handler
+
+        PUBWEAK UsageFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+UsageFault_Handler
+        B UsageFault_Handler
+
+        PUBWEAK SVC_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+        B SVC_Handler
+
+        PUBWEAK DebugMon_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DebugMon_Handler
+        B DebugMon_Handler
+
+        PUBWEAK PendSV_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+        B PendSV_Handler
+
+        PUBWEAK SysTick_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+        B SysTick_Handler
+
+        PUBWEAK WWDT_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+WWDT_IRQHandler
+        B WWDT_IRQHandler
+
+        PUBWEAK PVD_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+PVD_IRQHandler
+        B PVD_IRQHandler
+
+        PUBWEAK TAMPER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TAMPER_IRQHandler
+        B TAMPER_IRQHandler
+
+        PUBWEAK RTC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RTC_IRQHandler
+        B RTC_IRQHandler
+
+        PUBWEAK FLASH_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+FLASH_IRQHandler
+        B FLASH_IRQHandler
+
+        PUBWEAK RCM_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RCM_IRQHandler
+        B RCM_IRQHandler
+
+        PUBWEAK EINT0_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT0_IRQHandler
+        B EINT0_IRQHandler
+
+        PUBWEAK EINT1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT1_IRQHandler
+        B EINT1_IRQHandler
+
+        PUBWEAK EINT2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT2_IRQHandler
+        B EINT2_IRQHandler
+
+        PUBWEAK EINT3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT3_IRQHandler
+        B EINT3_IRQHandler
+
+        PUBWEAK EINT4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT4_IRQHandler
+        B EINT4_IRQHandler
+
+        PUBWEAK DMA1_Channel1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel1_IRQHandler
+        B DMA1_Channel1_IRQHandler
+
+        PUBWEAK DMA1_Channel2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel2_IRQHandler
+        B DMA1_Channel2_IRQHandler
+
+        PUBWEAK DMA1_Channel3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel3_IRQHandler
+        B DMA1_Channel3_IRQHandler
+
+        PUBWEAK DMA1_Channel4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel4_IRQHandler
+        B DMA1_Channel4_IRQHandler
+
+        PUBWEAK DMA1_Channel5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel5_IRQHandler
+        B DMA1_Channel5_IRQHandler
+
+        PUBWEAK DMA1_Channel6_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel6_IRQHandler
+        B DMA1_Channel6_IRQHandler
+
+        PUBWEAK DMA1_Channel7_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel7_IRQHandler
+        B DMA1_Channel7_IRQHandler
+
+        PUBWEAK ADC1_2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+ADC1_2_IRQHandler
+        B ADC1_2_IRQHandler
+
+        PUBWEAK USBD1_HP_CAN1_TX_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD1_HP_CAN1_TX_IRQHandler
+        B USBD1_HP_CAN1_TX_IRQHandler
+
+        PUBWEAK USBD1_LP_CAN1_RX0_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD1_LP_CAN1_RX0_IRQHandler
+        B USBD1_LP_CAN1_RX0_IRQHandler
+
+        PUBWEAK CAN1_RX1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN1_RX1_IRQHandler
+        B CAN1_RX1_IRQHandler
+
+        PUBWEAK CAN1_SCE_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN1_SCE_IRQHandler
+        B CAN1_SCE_IRQHandler
+
+        PUBWEAK EINT9_5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT9_5_IRQHandler
+        B EINT9_5_IRQHandler
+
+        PUBWEAK TMR1_BRK_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_BRK_IRQHandler
+        B TMR1_BRK_IRQHandler
+
+        PUBWEAK TMR1_UP_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_UP_IRQHandler
+        B TMR1_UP_IRQHandler
+
+        PUBWEAK TMR1_TRG_COM_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_TRG_COM_IRQHandler
+        B TMR1_TRG_COM_IRQHandler
+
+        PUBWEAK TMR1_CC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_CC_IRQHandler
+        B TMR1_CC_IRQHandler
+
+        PUBWEAK TMR2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR2_IRQHandler
+        B TMR2_IRQHandler
+
+        PUBWEAK TMR3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR3_IRQHandler
+        B TMR3_IRQHandler
+
+        PUBWEAK TMR4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR4_IRQHandler
+        B TMR4_IRQHandler
+
+        PUBWEAK I2C1_EV_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C1_EV_IRQHandler
+        B I2C1_EV_IRQHandler
+
+        PUBWEAK I2C1_ER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C1_ER_IRQHandler
+        B I2C1_ER_IRQHandler
+
+        PUBWEAK I2C2_EV_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C2_EV_IRQHandler
+        B I2C2_EV_IRQHandler
+
+        PUBWEAK I2C2_ER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C2_ER_IRQHandler
+        B I2C2_ER_IRQHandler
+
+        PUBWEAK SPI1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SPI1_IRQHandler
+        B SPI1_IRQHandler
+
+        PUBWEAK SPI2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SPI2_IRQHandler
+        B SPI2_IRQHandler
+
+        PUBWEAK USART1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART1_IRQHandler
+        B USART1_IRQHandler
+
+        PUBWEAK USART2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART2_IRQHandler
+        B USART2_IRQHandler
+
+        PUBWEAK USART3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART3_IRQHandler
+        B USART3_IRQHandler
+
+        PUBWEAK EINT15_10_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT15_10_IRQHandler
+        B EINT15_10_IRQHandler
+
+        PUBWEAK RTCAlarm_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RTCAlarm_IRQHandler
+        B RTCAlarm_IRQHandler
+
+        PUBWEAK USBDWakeUp_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBDWakeUp_IRQHandler
+        B USBDWakeUp_IRQHandler
+
+        PUBWEAK TMR8_BRK_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR8_BRK_IRQHandler
+        B TMR8_BRK_IRQHandler
+
+        PUBWEAK TMR8_UP_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR8_UP_IRQHandler
+        B TMR8_UP_IRQHandler
+
+        PUBWEAK TMR8_TRG_COM_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR8_TRG_COM_IRQHandler
+        B TMR8_TRG_COM_IRQHandler
+
+        PUBWEAK TMR8_CC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR8_CC_IRQHandler
+        B TMR8_CC_IRQHandler
+
+        PUBWEAK ADC3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+ADC3_IRQHandler
+        B ADC3_IRQHandler
+
+        PUBWEAK EMMC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EMMC_IRQHandler
+        B EMMC_IRQHandler
+
+        PUBWEAK SDIO_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SDIO_IRQHandler
+        B SDIO_IRQHandler
+
+        PUBWEAK TMR5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR5_IRQHandler
+        B TMR5_IRQHandler
+
+        PUBWEAK SPI3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SPI3_IRQHandler
+        B SPI3_IRQHandler
+
+        PUBWEAK UART4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+UART4_IRQHandler
+        B UART4_IRQHandler
+
+        PUBWEAK UART5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+UART5_IRQHandler
+        B UART5_IRQHandler
+
+        PUBWEAK TMR6_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR6_IRQHandler
+        B TMR6_IRQHandler
+
+        PUBWEAK TMR7_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR7_IRQHandler
+        B TMR7_IRQHandler
+
+        PUBWEAK DMA2_Channel1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA2_Channel1_IRQHandler
+        B DMA2_Channel1_IRQHandler
+
+        PUBWEAK DMA2_Channel2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA2_Channel2_IRQHandler
+        B DMA2_Channel2_IRQHandler
+
+        PUBWEAK DMA2_Channel3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA2_Channel3_IRQHandler
+        B DMA2_Channel3_IRQHandler
+
+        PUBWEAK DMA2_Channel4_5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA2_Channel4_5_IRQHandler
+        B DMA2_Channel4_5_IRQHandler
+
+        PUBWEAK USBD2_HP_CAN2_TX_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD2_HP_CAN2_TX_IRQHandler
+        B USBD2_HP_CAN2_TX_IRQHandler
+
+        PUBWEAK USBD2_LP_CAN2_RX0_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD2_LP_CAN2_RX0_IRQHandler
+        B USBD2_LP_CAN2_RX0_IRQHandler
+
+        PUBWEAK CAN2_RX1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN2_RX1_IRQHandler
+        B CAN2_RX1_IRQHandler
+
+        PUBWEAK CAN2_SCE_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN2_SCE_IRQHandler
+        B CAN2_SCE_IRQHandler
+
+        END
 

+ 364 - 604
bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s

@@ -23,622 +23,382 @@
 ; *  and limitations under the License.
 ; */
 
-MODULE  ? cstartup
+    MODULE  ?cstartup
 
-;;
-Forward declaration of sections.
-SECTION CSTACK:
-DATA:
-NOROOT(3)
+        ;; Forward declaration of sections.
+        SECTION CSTACK:DATA:NOROOT(3)
 
-SECTION .intvec:
-CODE:
-NOROOT(2)
+        SECTION .intvec:CODE:NOROOT(2)
 
 
-EXTERN  __iar_program_start
-EXTERN  SystemInit
-PUBLIC  __vector_table
+        EXTERN  __iar_program_start
+        EXTERN  SystemInit
+        PUBLIC  __vector_table
 
-DATA
+        DATA
 
 __vector_table
-DCD     sfe(CSTACK)
-DCD     Reset_Handler                ;
-Reset Handler
-DCD     NMI_Handler                  ;
-NMI Handler
-DCD     HardFault_Handler            ;
-Hard Fault Handler
-DCD     MemManage_Handler            ;
-MPU Fault Handler
-DCD     BusFault_Handler             ;
-Bus Fault Handler
-DCD     UsageFault_Handler           ;
-Usage Fault Handler
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     0                            ;
-Reserved
-DCD     SVC_Handler                  ;
-SVCall Handler
-DCD     DebugMon_Handler             ;
-Debug Monitor Handler
-DCD     0                            ;
-Reserved
-DCD     PendSV_Handler               ;
-PendSV Handler
-DCD     SysTick_Handler              ;
-SysTick Handler
-
-;
-External Interrupts
-DCD     WWDT_IRQHandler              ;
-Window Watchdog
-DCD     PVD_IRQHandler               ;
-PVD through EINT Line detect
-DCD     TAMPER_IRQHandler            ;
-Tamper
-DCD     RTC_IRQHandler               ;
-RTC
-DCD     FLASH_IRQHandler             ;
-Flash
-DCD     RCM_IRQHandler               ;
-RCM
-DCD     EINT0_IRQHandler             ;
-EINT Line 0
-DCD     EINT1_IRQHandler             ;
-EINT Line 1
-DCD     EINT2_IRQHandler             ;
-EINT Line 2
-DCD     EINT3_IRQHandler             ;
-EINT Line 3
-DCD     EINT4_IRQHandler             ;
-EINT Line 4
-DCD     DMA1_Channel1_IRQHandler     ;
-DMA1 Channel 1
-DCD     DMA1_Channel2_IRQHandler     ;
-DMA1 Channel 2
-DCD     DMA1_Channel3_IRQHandler     ;
-DMA1 Channel 3
-DCD     DMA1_Channel4_IRQHandler     ;
-DMA1 Channel 4
-DCD     DMA1_Channel5_IRQHandler     ;
-DMA1 Channel 5
-DCD     DMA1_Channel6_IRQHandler     ;
-DMA1 Channel 6
-DCD     DMA1_Channel7_IRQHandler     ;
-DMA1 Channel 7
-DCD     ADC1_2_IRQHandler            ;
-ADC1 &ADC2
-DCD     USBD1_HP_CAN1_TX_IRQHandler  ;
-USBD1 High Priority or CAN1 TX
-DCD     USBD1_LP_CAN1_RX0_IRQHandler ;
-USBD1 Low  Priority or CAN1 RX0
-DCD     CAN1_RX1_IRQHandler          ;
-CAN1 RX1
-DCD     CAN1_SCE_IRQHandler          ;
-CAN1 SCE
-DCD     EINT9_5_IRQHandler           ;
-EINT Line 9..5
-DCD     TMR1_BRK_IRQHandler          ;
-TMR1 Break
-DCD     TMR1_UP_IRQHandler           ;
-TMR1 Update
-DCD     TMR1_TRG_COM_IRQHandler      ;
-TMR1 Trigger and Commutation
-DCD     TMR1_CC_IRQHandler           ;
-TMR1 Capture Compare
-DCD     TMR2_IRQHandler              ;
-TMR2
-DCD     TMR3_IRQHandler              ;
-TMR3
-DCD     TMR4_IRQHandler              ;
-TMR4
-DCD     I2C1_EV_IRQHandler           ;
-I2C1 Event
-DCD     I2C1_ER_IRQHandler           ;
-I2C1 Error
-DCD     I2C2_EV_IRQHandler           ;
-I2C2 Event
-DCD     I2C2_ER_IRQHandler           ;
-I2C2 Error
-DCD     SPI1_IRQHandler              ;
-SPI1
-DCD     SPI2_IRQHandler              ;
-SPI2
-DCD     USART1_IRQHandler            ;
-USART1
-DCD     USART2_IRQHandler            ;
-USART2
-DCD     USART3_IRQHandler            ;
-USART3
-DCD     EINT15_10_IRQHandler         ;
-EINT Line 15..10
-DCD     RTCAlarm_IRQHandler          ;
-RTC Alarm through EINT Line
-DCD     USBDWakeUp_IRQHandler        ;
-USBD Wakeup from suspend
-DCD     FPU_IRQHandler               ;
-FPU
-DCD     QSPI_IRQHandler              ;
-QSPI
-DCD     USBD2_HP_IRQHandler          ;
-USBD2 High Priority
-DCD     USBD2_LP_IRQHandler          ;
-USBD2 Low Priority
+        DCD     sfe(CSTACK)
+                DCD     Reset_Handler                ; Reset Handler
+                DCD     NMI_Handler                  ; NMI Handler
+                DCD     HardFault_Handler            ; Hard Fault Handler
+                DCD     MemManage_Handler            ; MPU Fault Handler
+                DCD     BusFault_Handler             ; Bus Fault Handler
+                DCD     UsageFault_Handler           ; Usage Fault Handler
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     0                            ; Reserved
+                DCD     SVC_Handler                  ; SVCall Handler
+                DCD     DebugMon_Handler             ; Debug Monitor Handler
+                DCD     0                            ; Reserved
+                DCD     PendSV_Handler               ; PendSV Handler
+                DCD     SysTick_Handler              ; SysTick Handler
+
+                ; External Interrupts
+                DCD     WWDT_IRQHandler              ; Window Watchdog
+                DCD     PVD_IRQHandler               ; PVD through EINT Line detect
+                DCD     TAMPER_IRQHandler            ; Tamper
+                DCD     RTC_IRQHandler               ; RTC
+                DCD     FLASH_IRQHandler             ; Flash
+                DCD     RCM_IRQHandler               ; RCM
+                DCD     EINT0_IRQHandler             ; EINT Line 0
+                DCD     EINT1_IRQHandler             ; EINT Line 1
+                DCD     EINT2_IRQHandler             ; EINT Line 2
+                DCD     EINT3_IRQHandler             ; EINT Line 3
+                DCD     EINT4_IRQHandler             ; EINT Line 4
+                DCD     DMA1_Channel1_IRQHandler     ; DMA1 Channel 1
+                DCD     DMA1_Channel2_IRQHandler     ; DMA1 Channel 2
+                DCD     DMA1_Channel3_IRQHandler     ; DMA1 Channel 3
+                DCD     DMA1_Channel4_IRQHandler     ; DMA1 Channel 4
+                DCD     DMA1_Channel5_IRQHandler     ; DMA1 Channel 5
+                DCD     DMA1_Channel6_IRQHandler     ; DMA1 Channel 6
+                DCD     DMA1_Channel7_IRQHandler     ; DMA1 Channel 7
+                DCD     ADC1_2_IRQHandler            ; ADC1 & ADC2
+                DCD     USBD1_HP_CAN1_TX_IRQHandler  ; USBD1 High Priority or CAN1 TX
+                DCD     USBD1_LP_CAN1_RX0_IRQHandler ; USBD1 Low  Priority or CAN1 RX0
+                DCD     CAN1_RX1_IRQHandler          ; CAN1 RX1
+                DCD     CAN1_SCE_IRQHandler          ; CAN1 SCE
+                DCD     EINT9_5_IRQHandler           ; EINT Line 9..5
+                DCD     TMR1_BRK_IRQHandler          ; TMR1 Break
+                DCD     TMR1_UP_IRQHandler           ; TMR1 Update
+                DCD     TMR1_TRG_COM_IRQHandler      ; TMR1 Trigger and Commutation
+                DCD     TMR1_CC_IRQHandler           ; TMR1 Capture Compare
+                DCD     TMR2_IRQHandler              ; TMR2
+                DCD     TMR3_IRQHandler              ; TMR3
+                DCD     TMR4_IRQHandler              ; TMR4
+                DCD     I2C1_EV_IRQHandler           ; I2C1 Event
+                DCD     I2C1_ER_IRQHandler           ; I2C1 Error
+                DCD     I2C2_EV_IRQHandler           ; I2C2 Event
+                DCD     I2C2_ER_IRQHandler           ; I2C2 Error
+                DCD     SPI1_IRQHandler              ; SPI1
+                DCD     SPI2_IRQHandler              ; SPI2
+                DCD     USART1_IRQHandler            ; USART1
+                DCD     USART2_IRQHandler            ; USART2
+                DCD     USART3_IRQHandler            ; USART3
+                DCD     EINT15_10_IRQHandler         ; EINT Line 15..10
+                DCD     RTCAlarm_IRQHandler          ; RTC Alarm through EINT Line
+                DCD     USBDWakeUp_IRQHandler        ; USBD Wakeup from suspend
+                DCD     FPU_IRQHandler               ; FPU
+                DCD     QSPI_IRQHandler              ; QSPI
+                DCD     USBD2_HP_IRQHandler          ; USBD2 High Priority
+                DCD     USBD2_LP_IRQHandler          ; USBD2 Low Priority
 __Vectors_End
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
+;; Default interrupt handlers.
 ;;
-Default interrupt handlers.
-;;
-THUMB
+        THUMB
 
-PUBWEAK Reset_Handler
-SECTION .text:
-CODE:
-REORDER:
-NOROOT(2)
+        PUBWEAK Reset_Handler
+        SECTION .text:CODE:REORDER:NOROOT(2)
 Reset_Handler
-LDR     R0, = SystemInit
-              BLX     R0
-              LDR     R0, = __iar_program_start
-                            BX      R0
-
-                            PUBWEAK NMI_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            NMI_Handler
-                            B NMI_Handler
-
-                            PUBWEAK HardFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            HardFault_Handler
-                            B HardFault_Handler
-
-                            PUBWEAK MemManage_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            MemManage_Handler
-                            B MemManage_Handler
-
-                            PUBWEAK BusFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            BusFault_Handler
-                            B BusFault_Handler
-
-                            PUBWEAK UsageFault_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            UsageFault_Handler
-                            B UsageFault_Handler
-
-                            PUBWEAK SVC_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SVC_Handler
-                            B SVC_Handler
-
-                            PUBWEAK DebugMon_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DebugMon_Handler
-                            B DebugMon_Handler
-
-                            PUBWEAK PendSV_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            PendSV_Handler
-                            B PendSV_Handler
-
-                            PUBWEAK SysTick_Handler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SysTick_Handler
-                            B SysTick_Handler
-
-                            PUBWEAK WWDT_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            WWDT_IRQHandler
-                            B WWDT_IRQHandler
-
-                            PUBWEAK PVD_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            PVD_IRQHandler
-                            B PVD_IRQHandler
-
-                            PUBWEAK TAMPER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TAMPER_IRQHandler
-                            B TAMPER_IRQHandler
-
-                            PUBWEAK RTC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RTC_IRQHandler
-                            B RTC_IRQHandler
-
-                            PUBWEAK FLASH_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            FLASH_IRQHandler
-                            B FLASH_IRQHandler
-
-                            PUBWEAK RCM_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RCM_IRQHandler
-                            B RCM_IRQHandler
-
-                            PUBWEAK EINT0_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT0_IRQHandler
-                            B EINT0_IRQHandler
-
-                            PUBWEAK EINT1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT1_IRQHandler
-                            B EINT1_IRQHandler
-
-                            PUBWEAK EINT2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT2_IRQHandler
-                            B EINT2_IRQHandler
-
-                            PUBWEAK EINT3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT3_IRQHandler
-                            B EINT3_IRQHandler
-
-                            PUBWEAK EINT4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT4_IRQHandler
-                            B EINT4_IRQHandler
-
-                            PUBWEAK DMA1_Channel1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel1_IRQHandler
-                            B DMA1_Channel1_IRQHandler
-
-                            PUBWEAK DMA1_Channel2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel2_IRQHandler
-                            B DMA1_Channel2_IRQHandler
-
-                            PUBWEAK DMA1_Channel3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel3_IRQHandler
-                            B DMA1_Channel3_IRQHandler
-
-                            PUBWEAK DMA1_Channel4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel4_IRQHandler
-                            B DMA1_Channel4_IRQHandler
-
-                            PUBWEAK DMA1_Channel5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel5_IRQHandler
-                            B DMA1_Channel5_IRQHandler
-
-                            PUBWEAK DMA1_Channel6_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel6_IRQHandler
-                            B DMA1_Channel6_IRQHandler
-
-                            PUBWEAK DMA1_Channel7_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            DMA1_Channel7_IRQHandler
-                            B DMA1_Channel7_IRQHandler
-
-                            PUBWEAK ADC1_2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            ADC1_2_IRQHandler
-                            B ADC1_2_IRQHandler
-
-                            PUBWEAK USBD1_HP_CAN1_TX_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD1_HP_CAN1_TX_IRQHandler
-                            B USBD1_HP_CAN1_TX_IRQHandler
-
-                            PUBWEAK USBD1_LP_CAN1_RX0_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD1_LP_CAN1_RX0_IRQHandler
-                            B USBD1_LP_CAN1_RX0_IRQHandler
-
-                            PUBWEAK CAN1_RX1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN1_RX1_IRQHandler
-                            B CAN1_RX1_IRQHandler
-
-                            PUBWEAK CAN1_SCE_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            CAN1_SCE_IRQHandler
-                            B CAN1_SCE_IRQHandler
-
-                            PUBWEAK EINT9_5_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT9_5_IRQHandler
-                            B EINT9_5_IRQHandler
-
-                            PUBWEAK TMR1_BRK_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_BRK_IRQHandler
-                            B TMR1_BRK_IRQHandler
-
-                            PUBWEAK TMR1_UP_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_UP_IRQHandler
-                            B TMR1_UP_IRQHandler
-
-                            PUBWEAK TMR1_TRG_COM_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_TRG_COM_IRQHandler
-                            B TMR1_TRG_COM_IRQHandler
-
-                            PUBWEAK TMR1_CC_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR1_CC_IRQHandler
-                            B TMR1_CC_IRQHandler
-
-                            PUBWEAK TMR2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR2_IRQHandler
-                            B TMR2_IRQHandler
-
-                            PUBWEAK TMR3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR3_IRQHandler
-                            B TMR3_IRQHandler
-
-                            PUBWEAK TMR4_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            TMR4_IRQHandler
-                            B TMR4_IRQHandler
-
-                            PUBWEAK I2C1_EV_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C1_EV_IRQHandler
-                            B I2C1_EV_IRQHandler
-
-                            PUBWEAK I2C1_ER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C1_ER_IRQHandler
-                            B I2C1_ER_IRQHandler
-
-                            PUBWEAK I2C2_EV_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C2_EV_IRQHandler
-                            B I2C2_EV_IRQHandler
-
-                            PUBWEAK I2C2_ER_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            I2C2_ER_IRQHandler
-                            B I2C2_ER_IRQHandler
-
-                            PUBWEAK SPI1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SPI1_IRQHandler
-                            B SPI1_IRQHandler
-
-                            PUBWEAK SPI2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            SPI2_IRQHandler
-                            B SPI2_IRQHandler
-
-                            PUBWEAK USART1_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART1_IRQHandler
-                            B USART1_IRQHandler
-
-                            PUBWEAK USART2_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART2_IRQHandler
-                            B USART2_IRQHandler
-
-                            PUBWEAK USART3_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USART3_IRQHandler
-                            B USART3_IRQHandler
-
-                            PUBWEAK EINT15_10_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            EINT15_10_IRQHandler
-                            B EINT15_10_IRQHandler
-
-                            PUBWEAK RTCAlarm_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            RTCAlarm_IRQHandler
-                            B RTCAlarm_IRQHandler
-
-                            PUBWEAK USBDWakeUp_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBDWakeUp_IRQHandler
-                            B USBDWakeUp_IRQHandler
-
-                            PUBWEAK FPU_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            FPU_IRQHandler
-                            B FPU_IRQHandler
-
-                            PUBWEAK QSPI_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            QSPI_IRQHandler
-                            B QSPI_IRQHandler
-
-                            PUBWEAK USBD2_HP_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD2_HP_IRQHandler
-                            B USBD2_HP_IRQHandler
-
-                            PUBWEAK USBD2_LP_IRQHandler
-                            SECTION .text:
-                            CODE:
-                            REORDER:
-                            NOROOT(1)
-                            USBD2_LP_IRQHandler
-                            B USBD2_LP_IRQHandler
-
-
-                            END
+        LDR     R0, =SystemInit
+        BLX     R0
+        LDR     R0, =__iar_program_start
+        BX      R0
+
+        PUBWEAK NMI_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+        B NMI_Handler
+
+        PUBWEAK HardFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+        B HardFault_Handler
+
+        PUBWEAK MemManage_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+MemManage_Handler
+        B MemManage_Handler
+
+        PUBWEAK BusFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+BusFault_Handler
+        B BusFault_Handler
+
+        PUBWEAK UsageFault_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+UsageFault_Handler
+        B UsageFault_Handler
+
+        PUBWEAK SVC_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+        B SVC_Handler
+
+        PUBWEAK DebugMon_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DebugMon_Handler
+        B DebugMon_Handler
+
+        PUBWEAK PendSV_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+        B PendSV_Handler
+
+        PUBWEAK SysTick_Handler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+        B SysTick_Handler
+
+        PUBWEAK WWDT_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+WWDT_IRQHandler
+        B WWDT_IRQHandler
+
+        PUBWEAK PVD_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+PVD_IRQHandler
+        B PVD_IRQHandler
+
+        PUBWEAK TAMPER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TAMPER_IRQHandler
+        B TAMPER_IRQHandler
+
+        PUBWEAK RTC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RTC_IRQHandler
+        B RTC_IRQHandler
+
+        PUBWEAK FLASH_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+FLASH_IRQHandler
+        B FLASH_IRQHandler
+
+        PUBWEAK RCM_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RCM_IRQHandler
+        B RCM_IRQHandler
+
+        PUBWEAK EINT0_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT0_IRQHandler
+        B EINT0_IRQHandler
+
+        PUBWEAK EINT1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT1_IRQHandler
+        B EINT1_IRQHandler
+
+        PUBWEAK EINT2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT2_IRQHandler
+        B EINT2_IRQHandler
+
+        PUBWEAK EINT3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT3_IRQHandler
+        B EINT3_IRQHandler
+
+        PUBWEAK EINT4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT4_IRQHandler
+        B EINT4_IRQHandler
+
+        PUBWEAK DMA1_Channel1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel1_IRQHandler
+        B DMA1_Channel1_IRQHandler
+
+        PUBWEAK DMA1_Channel2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel2_IRQHandler
+        B DMA1_Channel2_IRQHandler
+
+        PUBWEAK DMA1_Channel3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel3_IRQHandler
+        B DMA1_Channel3_IRQHandler
+
+        PUBWEAK DMA1_Channel4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel4_IRQHandler
+        B DMA1_Channel4_IRQHandler
+
+        PUBWEAK DMA1_Channel5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel5_IRQHandler
+        B DMA1_Channel5_IRQHandler
+
+        PUBWEAK DMA1_Channel6_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel6_IRQHandler
+        B DMA1_Channel6_IRQHandler
+
+        PUBWEAK DMA1_Channel7_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+DMA1_Channel7_IRQHandler
+        B DMA1_Channel7_IRQHandler
+
+        PUBWEAK ADC1_2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+ADC1_2_IRQHandler
+        B ADC1_2_IRQHandler
+
+        PUBWEAK USBD1_HP_CAN1_TX_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD1_HP_CAN1_TX_IRQHandler
+        B USBD1_HP_CAN1_TX_IRQHandler
+
+        PUBWEAK USBD1_LP_CAN1_RX0_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD1_LP_CAN1_RX0_IRQHandler
+        B USBD1_LP_CAN1_RX0_IRQHandler
+
+        PUBWEAK CAN1_RX1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN1_RX1_IRQHandler
+        B CAN1_RX1_IRQHandler
+
+        PUBWEAK CAN1_SCE_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+CAN1_SCE_IRQHandler
+        B CAN1_SCE_IRQHandler
+
+        PUBWEAK EINT9_5_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT9_5_IRQHandler
+        B EINT9_5_IRQHandler
+
+        PUBWEAK TMR1_BRK_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_BRK_IRQHandler
+        B TMR1_BRK_IRQHandler
+
+        PUBWEAK TMR1_UP_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_UP_IRQHandler
+        B TMR1_UP_IRQHandler
+
+        PUBWEAK TMR1_TRG_COM_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_TRG_COM_IRQHandler
+        B TMR1_TRG_COM_IRQHandler
+
+        PUBWEAK TMR1_CC_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR1_CC_IRQHandler
+        B TMR1_CC_IRQHandler
+
+        PUBWEAK TMR2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR2_IRQHandler
+        B TMR2_IRQHandler
+
+        PUBWEAK TMR3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR3_IRQHandler
+        B TMR3_IRQHandler
+
+        PUBWEAK TMR4_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+TMR4_IRQHandler
+        B TMR4_IRQHandler
+
+        PUBWEAK I2C1_EV_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C1_EV_IRQHandler
+        B I2C1_EV_IRQHandler
+
+        PUBWEAK I2C1_ER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C1_ER_IRQHandler
+        B I2C1_ER_IRQHandler
+
+        PUBWEAK I2C2_EV_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C2_EV_IRQHandler
+        B I2C2_EV_IRQHandler
+
+        PUBWEAK I2C2_ER_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+I2C2_ER_IRQHandler
+        B I2C2_ER_IRQHandler
+
+        PUBWEAK SPI1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SPI1_IRQHandler
+        B SPI1_IRQHandler
+
+        PUBWEAK SPI2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+SPI2_IRQHandler
+        B SPI2_IRQHandler
+
+        PUBWEAK USART1_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART1_IRQHandler
+        B USART1_IRQHandler
+
+        PUBWEAK USART2_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART2_IRQHandler
+        B USART2_IRQHandler
+
+        PUBWEAK USART3_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USART3_IRQHandler
+        B USART3_IRQHandler
+
+        PUBWEAK EINT15_10_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+EINT15_10_IRQHandler
+        B EINT15_10_IRQHandler
+
+        PUBWEAK RTCAlarm_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+RTCAlarm_IRQHandler
+        B RTCAlarm_IRQHandler
+
+        PUBWEAK USBDWakeUp_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBDWakeUp_IRQHandler
+        B USBDWakeUp_IRQHandler
+
+        PUBWEAK FPU_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+FPU_IRQHandler
+        B FPU_IRQHandler
+
+        PUBWEAK QSPI_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+QSPI_IRQHandler
+        B QSPI_IRQHandler
+
+        PUBWEAK USBD2_HP_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD2_HP_IRQHandler
+        B USBD2_HP_IRQHandler
+
+        PUBWEAK USBD2_LP_IRQHandler
+        SECTION .text:CODE:REORDER:NOROOT(1)
+USBD2_LP_IRQHandler
+        B USBD2_LP_IRQHandler
+
+
+        END
 

+ 1 - 1
bsp/apm32/libraries/Drivers/drv_common.c

@@ -91,7 +91,7 @@ void rt_hw_us_delay(rt_uint32_t us)
 }
 
 /**
- * This function will initial STM32 board.
+ * This function will config the board for initialization.
  */
 RT_WEAK void rt_hw_board_init()
 {

+ 22 - 0
bsp/apm32/tools/sdk_dist.py

@@ -0,0 +1,22 @@
+import os
+import sys
+import shutil
+
+cwd_path = os.getcwd()
+sys.path.append(os.path.join(os.path.dirname(cwd_path), 'rt-thread', 'tools'))
+
+# BSP dist function
+def dist_do_building(BSP_ROOT, dist_dir):
+    from mkdist import bsp_copy_files
+    import rtconfig
+
+    print("=> copy apm32 bsp library")
+    library_dir = os.path.join(dist_dir, 'libraries')
+    library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries')
+    bsp_copy_files(os.path.join(library_path, rtconfig.BSP_LIBRARY_TYPE),
+                   os.path.join(library_dir, rtconfig.BSP_LIBRARY_TYPE))
+
+    print("=> copy bsp drivers")
+    bsp_copy_files(os.path.join(library_path, 'Drivers'), os.path.join(library_dir, 'Drivers'))
+    shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig'))
+

+ 6 - 0
bsp/at32/libraries/f403a_407/.ignore_format.yml

@@ -0,0 +1,6 @@
+# files format check exclude path, please follow the instructions below to modify;
+# If you need to exclude an entire folder, add the folder path in dir_path;
+# If you need to exclude a file, add the path to the file in file_path.
+
+dir_path:
+- firmware

+ 16 - 14
bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c

@@ -29,12 +29,12 @@
 
 /* rtc date upper bound reaches the year of 2099. */
 #define RTC_TM_UPPER_BOUND                                              \
-{   .tm_year = CONV_TO_TM_YEAR(2099),                                   \
-    .tm_mon  = CONV_TO_TM_MON(12),                                      \
-    .tm_mday  = 31,                                                     \
-    .tm_hour  = 23,                                                     \
-    .tm_min = 59,                                                       \
-    .tm_sec  = 59,                                                      \
+{   .tm_year = CONV_TO_TM_YEAR(2038),                                   \
+    .tm_mon  = CONV_TO_TM_MON(1),                                       \
+    .tm_mday  = 19,                                                     \
+    .tm_hour  = 3,                                                      \
+    .tm_min = 14,                                                       \
+    .tm_sec  = 07,                                                      \
 }
 
 /* rtc date lower bound reaches the year of 2000. */
@@ -57,8 +57,8 @@ static rt_size_t nu_rtc_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_siz
 static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);
 #endif
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t);
-static void nu_rtc_init(void);
+static rt_err_t nu_rtc_is_date_valid(const time_t t);
+static rt_err_t nu_rtc_init(void);
 
 #if defined(RT_USING_ALARM)
 static void nu_rtc_alarm_reset(void);
@@ -74,7 +74,7 @@ extern rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t secon
 static struct rt_device device_rtc;
 
 
-static void nu_rtc_init(void)
+static rt_err_t nu_rtc_init(void)
 {
     /* hw rtc initialise */
     RTC_Open(NULL);
@@ -86,6 +86,8 @@ static void nu_rtc_init(void)
     RTC_EnableInt(RTC_INTEN_ALMIEN_Msk);
     NVIC_EnableIRQ(RTC_IRQn);
 #endif
+
+    return RT_EOK;
 }
 
 
@@ -173,7 +175,7 @@ static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer,
 #endif
 
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
+static rt_err_t nu_rtc_is_date_valid(const time_t t)
 {
     static struct tm tm_upper = RTC_TM_UPPER_BOUND;
     static struct tm tm_lower = RTC_TM_LOWER_BOUND;
@@ -188,7 +190,7 @@ static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
     }
 
     /* check the date is supported by rtc. */
-    if ((*t > t_upper) || (*t < t_lower))
+    if ((t > t_upper) || (t < t_lower))
         return -(RT_EINVAL);
 
     return RT_EOK;
@@ -230,11 +232,11 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args)
     case RT_DEVICE_CTRL_RTC_SET_TIME:
 
         time = (time_t *) args;
-        tm_in = gmtime(time);
 
-        if (nu_rtc_is_date_valid(time) != RT_EOK)
-            return RT_ERROR;
+        if (nu_rtc_is_date_valid(*time) != RT_EOK)
+            return -(RT_ERROR);
 
+        tm_in = gmtime(time);
         hw_time.u32Year = CONV_FROM_TM_YEAR(tm_in->tm_year);
         hw_time.u32Month = CONV_FROM_TM_MON(tm_in->tm_mon);
         hw_time.u32Day = tm_in->tm_mday;

+ 16 - 14
bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c

@@ -29,12 +29,12 @@
 
 /* rtc date upper bound reaches the year of 2099. */
 #define RTC_TM_UPPER_BOUND                                              \
-{   .tm_year = CONV_TO_TM_YEAR(2099),                                   \
-    .tm_mon  = CONV_TO_TM_MON(12),                                      \
-    .tm_mday  = 31,                                                     \
-    .tm_hour  = 23,                                                     \
-    .tm_min = 59,                                                       \
-    .tm_sec  = 59,                                                      \
+{   .tm_year = CONV_TO_TM_YEAR(2038),                                   \
+    .tm_mon  = CONV_TO_TM_MON(1),                                       \
+    .tm_mday  = 19,                                                     \
+    .tm_hour  = 3,                                                      \
+    .tm_min = 14,                                                       \
+    .tm_sec  = 07,                                                      \
 }
 
 /* rtc date lower bound reaches the year of 2000. */
@@ -57,8 +57,8 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args);
     static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);
 #endif
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t);
-static void nu_rtc_init(void);
+static rt_err_t nu_rtc_is_date_valid(const time_t t);
+static rt_err_t nu_rtc_init(void);
 
 #if defined(RT_USING_ALARM)
     static void nu_rtc_alarm_reset(void);
@@ -74,7 +74,7 @@ static void nu_rtc_init(void);
 static struct rt_device device_rtc;
 
 
-static void nu_rtc_init(void)
+static rt_err_t nu_rtc_init(void)
 {
     /* hw rtc initialise */
     RTC_Open(NULL);
@@ -89,6 +89,8 @@ static void nu_rtc_init(void)
     RTC_EnableInt(RTC_INTEN_ALMIEN_Msk);
     NVIC_EnableIRQ(RTC_IRQn);
 #endif
+
+    return RT_EOK;
 }
 
 
@@ -176,7 +178,7 @@ static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer,
 #endif
 
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
+static rt_err_t nu_rtc_is_date_valid(const time_t t)
 {
     static struct tm tm_upper = RTC_TM_UPPER_BOUND;
     static struct tm tm_lower = RTC_TM_LOWER_BOUND;
@@ -191,7 +193,7 @@ static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
     }
 
     /* check the date is supported by rtc. */
-    if ((*t > t_upper) || (*t < t_lower))
+    if ((t > t_upper) || (t < t_lower))
         return -(RT_EINVAL);
 
     return RT_EOK;
@@ -233,11 +235,11 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args)
     case RT_DEVICE_CTRL_RTC_SET_TIME:
 
         time = (time_t *) args;
-        tm_in = gmtime(time);
 
-        if (nu_rtc_is_date_valid(time) != RT_EOK)
-            return RT_ERROR;
+        if (nu_rtc_is_date_valid(*time) != RT_EOK)
+            return -(RT_ERROR);
 
+        tm_in = gmtime(time);
         hw_time.u32Year = CONV_FROM_TM_YEAR(tm_in->tm_year);
         hw_time.u32Month = CONV_FROM_TM_MON(tm_in->tm_mon);
         hw_time.u32Day = tm_in->tm_mday;

+ 16 - 14
bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c

@@ -29,12 +29,12 @@
 
 /* rtc date upper bound reaches the year of 2099. */
 #define RTC_TM_UPPER_BOUND                                              \
-{   .tm_year = CONV_TO_TM_YEAR(2099),                                   \
-    .tm_mon  = CONV_TO_TM_MON(12),                                      \
-    .tm_mday  = 31,                                                     \
-    .tm_hour  = 23,                                                     \
-    .tm_min = 59,                                                       \
-    .tm_sec  = 59,                                                      \
+{   .tm_year = CONV_TO_TM_YEAR(2038),                                   \
+    .tm_mon  = CONV_TO_TM_MON(1),                                       \
+    .tm_mday  = 19,                                                     \
+    .tm_hour  = 3,                                                      \
+    .tm_min = 14,                                                       \
+    .tm_sec  = 07,                                                      \
 }
 
 /* rtc date lower bound reaches the year of 2000. */
@@ -57,8 +57,8 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args);
     static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);
 #endif
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t);
-static void nu_rtc_init(void);
+static rt_err_t nu_rtc_is_date_valid(const time_t t);
+static rt_err_t nu_rtc_init(void);
 
 #if defined(RT_USING_ALARM)
     static void nu_rtc_alarm_reset(void);
@@ -74,7 +74,7 @@ static void nu_rtc_init(void);
 static struct rt_device device_rtc;
 
 
-static void nu_rtc_init(void)
+static rt_err_t nu_rtc_init(void)
 {
     /* hw rtc initialise */
     RTC_Open(NULL);
@@ -88,6 +88,8 @@ static void nu_rtc_init(void)
     RTC_EnableInt(RTC_INTEN_ALMIEN_Msk);
     NVIC_EnableIRQ(RTC_IRQn);
 #endif
+
+    return RT_EOK;
 }
 
 
@@ -175,7 +177,7 @@ static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer,
 #endif
 
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
+static rt_err_t nu_rtc_is_date_valid(const time_t t)
 {
     static struct tm tm_upper = RTC_TM_UPPER_BOUND;
     static struct tm tm_lower = RTC_TM_LOWER_BOUND;
@@ -190,7 +192,7 @@ static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
     }
 
     /* check the date is supported by rtc. */
-    if ((*t > t_upper) || (*t < t_lower))
+    if ((t > t_upper) || (t < t_lower))
         return -(RT_EINVAL);
 
     return RT_EOK;
@@ -232,11 +234,11 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args)
     case RT_DEVICE_CTRL_RTC_SET_TIME:
 
         time = (time_t *) args;
-        tm_in = gmtime(time);
 
-        if (nu_rtc_is_date_valid(time) != RT_EOK)
-            return RT_ERROR;
+        if (nu_rtc_is_date_valid(*time) != RT_EOK)
+            return -(RT_ERROR);
 
+        tm_in = gmtime(time);
         hw_time.u32Year = CONV_FROM_TM_YEAR(tm_in->tm_year);
         hw_time.u32Month = CONV_FROM_TM_MON(tm_in->tm_mon);
         hw_time.u32Day = tm_in->tm_mday;

+ 2 - 0
bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini

@@ -0,0 +1,2 @@
+LOAD %L INCREMENTAL
+$ = 0

+ 12 - 0
bsp/nuvoton/libraries/n9h30/Script/N9H30.sct

@@ -0,0 +1,12 @@
+
+
+LR_IROM1 0x00000000  {    ; load region size_region
+    ER_IROM1 0x00000000 {  ; load address = execution address
+        *.o (NUC_INIT, +First)
+        *(InRoot$$Sections)
+        .ANY (+RO)
+    }
+    RW_RAM1 +0  {  ; RW_RAM1 start address is after ER_ROM1
+        .ANY (+RW +ZI)
+    }
+}

+ 15 - 13
bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c

@@ -30,12 +30,12 @@
 
 /* rtc date upper bound reaches the year of 2099. */
 #define RTC_TM_UPPER_BOUND                                              \
-{   .tm_year = CONV_TO_TM_YEAR(2099),                                   \
-    .tm_mon  = CONV_TO_TM_MON(12),                                      \
-    .tm_mday  = 31,                                                     \
-    .tm_hour  = 23,                                                     \
-    .tm_min = 59,                                                       \
-    .tm_sec  = 59,                                                      \
+{   .tm_year = CONV_TO_TM_YEAR(2038),                                   \
+    .tm_mon  = CONV_TO_TM_MON(1),                                       \
+    .tm_mday  = 19,                                                     \
+    .tm_hour  = 3,                                                      \
+    .tm_min = 14,                                                       \
+    .tm_sec  = 07,                                                      \
 }
 
 /* rtc date lower bound reaches the year of 2000. */
@@ -58,8 +58,8 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args);
     static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);
 #endif
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t);
-static void nu_rtc_init(void);
+static rt_err_t nu_rtc_is_date_valid(const time_t t);
+static rt_err_t nu_rtc_init(void);
 
 #if defined(RT_USING_ALARM)
     static void nu_rtc_alarm_reset(void);
@@ -76,7 +76,7 @@ static void nu_rtc_init(void);
 static struct rt_device device_rtc;
 
 
-static void nu_rtc_init(void)
+static rt_err_t nu_rtc_init(void)
 {
     S_RTC_TIME_DATA_T sInitTime = {0};
 
@@ -114,6 +114,8 @@ static void nu_rtc_init(void)
     rt_hw_interrupt_umask(IRQ_RTC);
 
 #endif
+
+    return RT_EOK;
 }
 
 
@@ -194,7 +196,7 @@ static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer,
 #endif
 
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
+static rt_err_t nu_rtc_is_date_valid(const time_t t)
 {
     static struct tm tm_upper = RTC_TM_UPPER_BOUND;
     static struct tm tm_lower = RTC_TM_LOWER_BOUND;
@@ -209,7 +211,7 @@ static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
     }
 
     /* check the date is supported by rtc. */
-    if ((*t > t_upper) || (*t < t_lower))
+    if ((t > t_upper) || (t < t_lower))
         return -(RT_EINVAL);
 
     return RT_EOK;
@@ -255,11 +257,11 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args)
     case RT_DEVICE_CTRL_RTC_SET_TIME:
 
         time = (time_t *) args;
-        tm_in = gmtime(time);
 
-        if (nu_rtc_is_date_valid(time) != RT_EOK)
+        if (nu_rtc_is_date_valid(*time) != RT_EOK)
             return -(RT_ERROR);
 
+        tm_in = gmtime(time);
         hw_time.u32Year = CONV_FROM_TM_YEAR(tm_in->tm_year);
         hw_time.u32cMonth = CONV_FROM_TM_MON(tm_in->tm_mon);
         hw_time.u32cDay = tm_in->tm_mday;

+ 17 - 4
bsp/nuvoton/libraries/nu_packages/Kconfig

@@ -136,16 +136,29 @@ menu "Nuvoton Packages Config"
 
         endif
 
-    config NU_PKG_USING_ILI_TPC
-        bool "ILI Series TPC"
+    config NU_PKG_USING_TPC
+        bool "Support Touch Panel Controller over I2C"
         select RT_USING_TOUCH
+        select RT_TOUCH_PIN_IRQ
         select RT_USING_I2C
-        select BSP_USING_I2C
-        default n
+
+    if NU_PKG_USING_TPC
+        choice
+            prompt "Select TPC drivers"
+            config NU_PKG_USING_TPC_ILI
+                bool "ILI Series TPC"
+                default n
+
+            config NU_PKG_USING_TPC_GT911
+                bool "GT911 TPC"
+                default n
+        endchoice
+    endif
 
     config NU_PKG_USING_ADC_TOUCH
         bool "ADC touch function"
         default n
+    
 
     if NU_PKG_USING_ADC_TOUCH
         config NU_PKG_USING_ADC_TOUCH_SW

+ 3 - 0
bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c

@@ -24,6 +24,7 @@
 #endif
 
 #define ssd1963_delay_ms(ms)    rt_thread_mdelay(ms)
+static void ssd1963_fillscreen(rt_uint16_t color);
 
 static struct rt_device_graphic_info g_SSD1963Info =
 {
@@ -125,6 +126,8 @@ static rt_err_t ssd1963_lcd_init(rt_device_t dev)
     ssd1963_send_cmd(0x29);    //SET display on
     ssd1963_delay_ms(5);
 
+    ssd1963_fillscreen(0);
+
     SET_DISP_ON;
 
     SET_BACKLIGHT_ON;

+ 18 - 0
bsp/nuvoton/libraries/nu_packages/TPC/SConscript

@@ -0,0 +1,18 @@
+from building import *
+Import('rtconfig')
+
+src   = []
+cwd   = GetCurrentDir()
+path  = [cwd]
+
+# add src and include to group.
+src += Glob('tpc_worker.c')
+if GetDepend('NU_PKG_USING_TPC_ILI'):
+    src += Glob('ili.c')
+elif GetDepend('NU_PKG_USING_TPC_GT911'):
+    src += Glob('gt911.c')
+else:
+    src = []
+
+group = DefineGroup('nu_pkgs_tpc', src, depend = [''], CPPPATH = path)
+Return('group')

+ 490 - 0
bsp/nuvoton/libraries/nu_packages/TPC/gt911.c

@@ -0,0 +1,490 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-01-13     RiceChen     the first version
+ * 2022-02-25     Wayne        optimization
+ */
+
+#include <rtthread.h>
+#include <rtdevice.h>
+
+#include <string.h>
+
+#define DBG_TAG "gt911"
+#define DBG_LVL DBG_INFO
+#include <rtdbg.h>
+
+#include "gt911.h"
+
+static struct rt_i2c_client gt911_client;
+
+/* hardware section */
+static rt_uint8_t GT911_CFG_TBL[] =
+{
+    0x6b, 0x00, 0x04, 0x58, 0x02, 0x05, 0x0d, 0x00, 0x01, 0x0f,
+    0x28, 0x0f, 0x50, 0x32, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x2a, 0x0c,
+    0x45, 0x47, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x40, 0x03, 0x2c,
+    0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x64, 0x32, 0x00, 0x00,
+    0x00, 0x28, 0x64, 0x94, 0xd5, 0x02, 0x07, 0x00, 0x00, 0x04,
+    0x95, 0x2c, 0x00, 0x8b, 0x34, 0x00, 0x82, 0x3f, 0x00, 0x7d,
+    0x4c, 0x00, 0x7a, 0x5b, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x18, 0x16, 0x14, 0x12, 0x10, 0x0e, 0x0c, 0x0a,
+    0x08, 0x06, 0x04, 0x02, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x16, 0x18, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21,
+    0x22, 0x24, 0x13, 0x12, 0x10, 0x0f, 0x0a, 0x08, 0x06, 0x04,
+    0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x79, 0x01,
+};
+static void gt911_touch_up(void *buf, rt_int8_t id);
+static rt_err_t gt911_write_reg(struct rt_i2c_client *dev, rt_uint8_t *data, rt_uint8_t len)
+{
+    struct rt_i2c_msg msgs;
+
+    msgs.addr  = dev->client_addr;
+    msgs.flags = RT_I2C_WR;
+    msgs.buf   = data;
+    msgs.len   = len;
+
+    if (rt_i2c_transfer(dev->bus, &msgs, 1) == 1)
+    {
+        return RT_EOK;
+    }
+    else
+    {
+        return -RT_ERROR;
+    }
+}
+
+static rt_err_t gt911_read_regs(struct rt_i2c_client *dev, rt_uint8_t *reg, rt_uint8_t *data, rt_uint8_t len)
+{
+    struct rt_i2c_msg msgs[2];
+
+    msgs[0].addr  = dev->client_addr;
+    msgs[0].flags = RT_I2C_WR;
+    msgs[0].buf   = reg;
+    msgs[0].len   = GT911_REGITER_LEN;
+
+    msgs[1].addr  = dev->client_addr;
+    msgs[1].flags = RT_I2C_RD;
+    msgs[1].buf   = data;
+    msgs[1].len   = len;
+
+    if (rt_i2c_transfer(dev->bus, msgs, 2) == 2)
+    {
+        return RT_EOK;
+    }
+    else
+    {
+        return -RT_ERROR;
+    }
+}
+
+static rt_err_t gt911_get_product_id(struct rt_i2c_client *dev, rt_uint8_t *data, rt_uint8_t len)
+{
+    rt_uint8_t reg[2];
+
+    reg[0] = (rt_uint8_t)(GT911_PRODUCT_ID >> 8);
+    reg[1] = (rt_uint8_t)(GT911_PRODUCT_ID & 0xff);
+
+    if (gt911_read_regs(dev, reg, data, len) != RT_EOK)
+    {
+        LOG_E("read id failed");
+        return -RT_ERROR;
+    }
+    return RT_EOK;
+}
+
+static rt_err_t gt911_get_info(struct rt_i2c_client *dev, struct rt_touch_info *info)
+{
+    rt_uint8_t reg[2];
+    rt_uint8_t out_info[7];
+    rt_uint8_t out_len = 7;
+
+    reg[0] = (rt_uint8_t)(GT911_CONFIG_REG >> 8);
+    reg[1] = (rt_uint8_t)(GT911_CONFIG_REG & 0xFF);
+
+    if(gt911_read_regs(dev, reg, out_info, out_len) != RT_EOK)
+    {
+        LOG_E("read info failed");
+        return -RT_ERROR;
+    }
+
+    info->range_x = (out_info[2] << 8) | out_info[1];
+    info->range_y = (out_info[4] << 8) | out_info[3];
+    info->point_num = out_info[5] & 0x0f;
+
+    return RT_EOK;
+}
+
+static rt_err_t gt911_soft_reset(struct rt_i2c_client *dev)
+{
+    rt_uint8_t buf[3];
+
+    buf[0] = (rt_uint8_t)(GT911_COMMAND_REG >> 8);
+    buf[1] = (rt_uint8_t)(GT911_COMMAND_REG & 0xFF);
+    buf[2] = 0x02;
+
+    if(gt911_write_reg(dev, buf, 3) != RT_EOK)
+    {
+        LOG_E("soft reset failed");
+        return -RT_ERROR;
+    }
+    return RT_EOK;
+}
+
+static rt_int16_t pre_x[GT911_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_int16_t pre_y[GT911_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_int16_t pre_w[GT911_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_uint8_t s_tp_dowm[GT911_MAX_TOUCH];
+
+static void gt911_touch_up(void *buf, rt_int8_t id)
+{
+    struct rt_touch_data *read_data = (struct rt_touch_data *)buf;
+
+    if(s_tp_dowm[id] == 1)
+    {
+        s_tp_dowm[id] = 0;
+        read_data[id].event = RT_TOUCH_EVENT_UP;
+    }
+    else
+    {
+        read_data[id].event = RT_TOUCH_EVENT_NONE;
+    }
+
+    read_data[id].timestamp = rt_touch_get_ts();
+    read_data[id].width = pre_w[id];
+    read_data[id].x_coordinate = pre_x[id];
+    read_data[id].y_coordinate = pre_y[id];
+    read_data[id].track_id = id;
+
+    pre_x[id] = -1;  /* last point is none */
+    pre_y[id] = -1;
+    pre_w[id] = -1;
+}
+
+static void gt911_touch_down(void *buf, rt_int8_t id, rt_int16_t x, rt_int16_t y, rt_int16_t w)
+{
+    struct rt_touch_data *read_data = (struct rt_touch_data *)buf;
+
+    if (s_tp_dowm[id] == 1)
+    {
+        read_data[id].event = RT_TOUCH_EVENT_MOVE;
+
+    }
+    else
+    {
+        read_data[id].event = RT_TOUCH_EVENT_DOWN;
+        s_tp_dowm[id] = 1;
+    }
+
+    read_data[id].timestamp = rt_touch_get_ts();
+    read_data[id].width = w;
+    read_data[id].x_coordinate = x;
+    read_data[id].y_coordinate = y;
+    read_data[id].track_id = id;
+
+    pre_x[id] = x; /* save last point */
+    pre_y[id] = y;
+    pre_w[id] = w;
+}
+
+static rt_size_t gt911_read_point(struct rt_touch_device *touch, void *buf, rt_size_t read_num)
+{
+    rt_uint8_t point_status = 0;
+    rt_uint8_t touch_num = 0;
+    rt_uint8_t write_buf[3];
+    rt_uint8_t cmd[2];
+    rt_uint8_t read_buf[8 * GT911_MAX_TOUCH] = {0};
+    rt_uint8_t read_index;
+    rt_int8_t read_id = 0;
+    rt_int16_t input_x = 0;
+    rt_int16_t input_y = 0;
+    rt_int16_t input_w = 0;
+
+    static rt_uint8_t pre_touch = 0;
+    static rt_int8_t pre_id[GT911_MAX_TOUCH] = {0};
+
+    /* point status register */
+    cmd[0] = (rt_uint8_t)((GT911_READ_STATUS >> 8) & 0xFF);
+    cmd[1] = (rt_uint8_t)(GT911_READ_STATUS & 0xFF);
+
+    if (gt911_read_regs(&gt911_client, cmd, &point_status, 1) != RT_EOK)
+    {
+        LOG_D("read point failed\n");
+        read_num = 0;
+        goto exit_;
+    }
+
+    if (point_status == 0)             /* no data */
+    {
+        read_num = 0;
+        goto exit_;
+    }
+
+    if ((point_status & 0x80) == 0)    /* data is not ready */
+    {
+        read_num = 0;
+        goto exit_;
+    }
+
+    touch_num = point_status & 0x0f;  /* get point num */
+
+    if (touch_num > GT911_MAX_TOUCH) /* point num is not correct */
+    {
+        read_num = 0;
+        goto exit_;
+    }
+
+    cmd[0] = (rt_uint8_t)((GT911_POINT1_REG >> 8) & 0xFF);
+    cmd[1] = (rt_uint8_t)(GT911_POINT1_REG & 0xFF);
+
+    /* read point num is touch_num */
+    if(gt911_read_regs(&gt911_client, cmd, read_buf, read_num * GT911_POINT_INFO_NUM) !=RT_EOK)
+    {
+        LOG_D("read point failed\n");
+        read_num = 0;
+        goto exit_;
+    }
+
+    if(pre_touch > touch_num)                                       /* point up */
+    {
+        for (read_index = 0; read_index < pre_touch; read_index++)
+        {
+            rt_uint8_t j;
+
+            for (j = 0; j < touch_num; j++)                          /* this time touch num */
+            {
+                read_id = read_buf[j * 8] & 0x0F;
+
+                if (pre_id[read_index] == read_id)                   /* this id is not free */
+                    break;
+
+                if (j >= touch_num - 1)
+                {
+                    rt_uint8_t up_id;
+                    up_id = pre_id[read_index];
+                    gt911_touch_up(buf, up_id);
+                }
+            }
+        }
+    }
+
+    if(touch_num)                                                 /* point down */
+    {
+        rt_uint8_t off_set;
+
+        for(read_index = 0; read_index < touch_num; read_index++)
+        {
+            off_set = read_index * 8;
+            read_id = read_buf[off_set] & 0x0f;
+            pre_id[read_index] = read_id;
+            input_x = read_buf[off_set + 1] | (read_buf[off_set + 2] << 8);	/* x */
+            input_y = read_buf[off_set + 3] | (read_buf[off_set + 4] << 8);	/* y */
+            input_w = read_buf[off_set + 5] | (read_buf[off_set + 6] << 8);	/* size */
+
+            gt911_touch_down(buf, read_id, input_x, input_y, input_w);
+        }
+    }
+    else if (pre_touch)
+    {
+        for(read_index = 0; read_index < pre_touch; read_index++)
+        {
+            gt911_touch_up(buf, pre_id[read_index]);
+        }
+    }
+
+    pre_touch = touch_num;
+
+exit_:
+    write_buf[0] = (rt_uint8_t)((GT911_READ_STATUS >> 8) & 0xFF);
+    write_buf[1] = (rt_uint8_t)(GT911_READ_STATUS & 0xFF);
+    write_buf[2] = 0x00;
+    gt911_write_reg(&gt911_client, write_buf, 3);
+
+    return read_num;
+}
+
+static rt_err_t gt911_control(struct rt_touch_device *touch, int cmd, void *arg)
+{
+    if (cmd == RT_TOUCH_CTRL_GET_ID)
+    {
+        return gt911_get_product_id(&gt911_client, arg, 6);
+    }
+
+    if (cmd == RT_TOUCH_CTRL_GET_INFO)
+    {
+        return gt911_get_info(&gt911_client, arg);
+    }
+
+    rt_uint8_t buf[4];
+    rt_uint8_t i = 0;
+    rt_uint8_t *config;
+
+    config = (rt_uint8_t *)rt_calloc(1, sizeof(GT911_CFG_TBL) + GT911_REGITER_LEN);
+    if(config == RT_NULL)
+    {
+        LOG_D("malloc config memory failed\n");
+        return -RT_ERROR;
+    }
+
+    config[0] = (rt_uint8_t)((GT911_CONFIG_REG >> 8) & 0xFF);
+    config[1] = (rt_uint8_t)(GT911_CONFIG_REG & 0xFF);
+
+    memcpy(&config[2], GT911_CFG_TBL, sizeof(GT911_CFG_TBL));
+
+    switch(cmd)
+    {
+        case RT_TOUCH_CTRL_SET_X_RANGE:
+        {
+            rt_uint16_t x_range;
+
+            x_range = *(rt_uint16_t *)arg;
+            config[4] = (rt_uint8_t)(x_range >> 8);
+            config[3] = (rt_uint8_t)(x_range & 0xff);
+
+            GT911_CFG_TBL[2] = config[4];
+            GT911_CFG_TBL[1] = config[3];
+            break;
+        }
+        case RT_TOUCH_CTRL_SET_Y_RANGE:
+        {
+            rt_uint16_t y_range;
+
+            y_range = *(rt_uint16_t *)arg;
+            config[6] = (rt_uint8_t)(y_range >> 8);
+            config[5] = (rt_uint8_t)(y_range & 0xff);
+
+            GT911_CFG_TBL[4] = config[6];
+            GT911_CFG_TBL[3] = config[5];
+            break;
+        }
+        case RT_TOUCH_CTRL_SET_X_TO_Y:
+        {
+            config[8] ^= (1 << 3);
+            break;
+        }
+        case RT_TOUCH_CTRL_SET_MODE:
+        {
+            rt_uint16_t trig_type;
+            trig_type = *(rt_uint16_t *)arg;
+
+            switch (trig_type)
+            {
+            case RT_DEVICE_FLAG_INT_RX:
+                config[8] &= 0xFC;
+                break;
+            case RT_DEVICE_FLAG_RDONLY:
+                config[8] &= 0xFC;
+                config[8] |= 0x02;
+                break;
+            default:
+                break;
+            }
+            break;
+        }
+        default:
+        {
+            break;
+        }
+    }
+
+    if(gt911_write_reg(&gt911_client, config, sizeof(GT911_CFG_TBL) + GT911_ADDR_LEN) != RT_EOK)
+    {
+        LOG_D("send config failed");
+        return -1;
+    }
+
+    buf[0] = (rt_uint8_t)((GT911_CHECK_SUM >> 8) & 0xFF);
+    buf[1] = (rt_uint8_t)(GT911_CHECK_SUM & 0xFF);
+    buf[2] = 0;
+
+    for(i = GT911_ADDR_LEN; i < sizeof(GT911_CFG_TBL) + GT911_ADDR_LEN; i++)
+    {
+        buf[GT911_ADDR_LEN] += config[i];
+    }
+
+    buf[2] = (~buf[2]) + 1;
+    buf[3] = 1;
+
+    gt911_write_reg(&gt911_client, buf, 4);
+    rt_free(config);
+
+    return RT_EOK;
+}
+
+static struct rt_touch_ops gt911_touch_ops =
+{
+    .touch_readpoint = gt911_read_point,
+    .touch_control = gt911_control,
+};
+
+int rt_hw_gt911_init(const char *name, struct rt_touch_config *cfg)
+{
+    struct rt_touch_device *touch_device = RT_NULL;
+    rt_uint32_t bus_speed = 400000;
+
+    touch_device = (struct rt_touch_device *)rt_malloc(sizeof(struct rt_touch_device));
+    if(touch_device == RT_NULL)
+    {
+        LOG_E("touch device malloc fail");
+        return -RT_ERROR;
+    }
+    rt_memset((void *)touch_device, 0, sizeof(struct rt_touch_device));
+
+    /* hw init*/
+    rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
+    rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_OUTPUT);
+
+    rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_LOW);
+    rt_pin_write(cfg->irq_pin.pin, PIN_LOW);
+    rt_thread_delay(10);
+    rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_HIGH);
+    rt_thread_delay(10);
+    rt_pin_write(cfg->irq_pin.pin, PIN_MODE_INPUT);
+    rt_thread_delay(100);
+
+    gt911_client.bus = (struct rt_i2c_bus_device *)rt_device_find(cfg->dev_name);
+
+    if(gt911_client.bus == RT_NULL)
+    {
+        LOG_E("Can't find %s device", cfg->dev_name);
+        return -RT_ERROR;
+    }
+
+    if(rt_device_open((rt_device_t)gt911_client.bus, RT_DEVICE_FLAG_RDWR) != RT_EOK)
+    {
+        LOG_E("open %s device failed", cfg->dev_name);
+        return -RT_ERROR;
+    }
+
+    if ( rt_device_control((rt_device_t)gt911_client.bus, RT_I2C_DEV_CTRL_CLK, &bus_speed) != RT_EOK )
+    {
+        LOG_E("control %s device failed", cfg->dev_name);
+        return -RT_ERROR;
+    }
+
+    gt911_client.client_addr = GT911_ADDRESS_HIGH;
+    gt911_soft_reset(&gt911_client);
+
+    /* register touch device */
+    touch_device->info.type = RT_TOUCH_TYPE_CAPACITANCE;
+    touch_device->info.vendor = RT_TOUCH_VENDOR_GT;
+    rt_memcpy(&touch_device->config, cfg, sizeof(struct rt_touch_config));
+    touch_device->ops = &gt911_touch_ops;
+
+    rt_hw_touch_register(touch_device, name, RT_DEVICE_FLAG_INT_RX, RT_NULL);
+
+    LOG_I("touch device gt911 init success");
+
+    return RT_EOK;
+}

+ 41 - 0
bsp/nuvoton/libraries/nu_packages/TPC/gt911.h

@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-01-13     RiceChen     the first version
+ */
+
+#ifndef __GT911_H__
+#define __GT911_H__
+
+#include "touch.h"
+
+#define GT911_ADDR_LEN          2
+#define GT911_REGITER_LEN       2
+#define GT911_MAX_TOUCH         5
+#define GT911_POINT_INFO_NUM    1
+
+#define GT911_ADDRESS_HIGH      0x5D
+#define GT911_ADDRESS_LOW       0x14
+
+#define GT911_COMMAND_REG       0x8040
+#define GT911_CONFIG_REG        0x8047
+
+#define GT911_PRODUCT_ID        0x8140
+#define GT911_VENDOR_ID         0x814A
+#define GT911_READ_STATUS       0x814E
+
+#define GT911_POINT1_REG        0x814F
+#define GT911_POINT2_REG        0x8157
+#define GT911_POINT3_REG        0x815F
+#define GT911_POINT4_REG        0x8167
+#define GT911_POINT5_REG        0x816F
+
+#define GT911_CHECK_SUM         0x80FF
+
+int rt_hw_gt911_init(const char *name, struct rt_touch_config *cfg);
+
+#endif /* gt911.h */

+ 644 - 0
bsp/nuvoton/libraries/nu_packages/TPC/ili.c

@@ -0,0 +1,644 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2022-02-25     Wayne        the first version
+ */
+
+#include <rtthread.h>
+#include <rtdevice.h>
+
+#include <nu_bitutil.h>
+
+#define DBG_TAG "ili_tpc"
+#define DBG_LVL DBG_INFO
+#include <rtdbg.h>
+
+#include "ili.h"
+
+#define ILI_MAX_TOUCH         5
+#define ILI_ADDRESS           0x41
+
+#define BL_V1_8                     0x108
+#define BL_V1_7                     0x107
+#define BL_V1_6                     0x106
+
+#define ILITEK_TP_CMD_GET_TP_RES            0x20
+#define ILITEK_TP_CMD_GET_SCRN_RES      0x21
+#define ILITEK_TP_CMD_SET_IC_SLEEP      0x30
+#define ILITEK_TP_CMD_SET_IC_WAKE           0x31
+#define ILITEK_TP_CMD_GET_FW_VER            0x40
+#define ILITEK_TP_CMD_GET_PRL_VER           0x42
+#define ILITEK_TP_CMD_GET_MCU_VER           0x61
+#define ILITEK_TP_CMD_GET_IC_MODE           0xC0
+#define ILITEK_TP_CMD_RESET                 0x60
+
+#define REPORT_COUNT_ADDRESS                  61
+
+struct ili_protocol_info
+{
+    rt_uint16_t     ver;
+    rt_uint8_t      ver_major;
+};
+
+struct ili_ts_data
+{
+    struct rt_touch_device touch_device;
+    struct rt_i2c_client *client;
+
+    rt_base_t       reset_pin;
+    rt_base_t       irq_pin;
+
+    struct ili_protocol_info    ptl;
+    rt_uint8_t      product_id[30];
+    rt_uint16_t     mcu_ver;
+    rt_uint8_t      ic_mode;
+    rt_uint8_t      firmware_ver[8];
+
+    rt_int32_t      screen_max_x;
+    rt_int32_t      screen_max_y;
+    rt_int32_t      screen_min_x;
+    rt_int32_t      screen_min_y;
+    rt_int32_t      max_tp;
+};
+typedef struct ili_ts_data *ili_ts_data_t;
+
+// Private data
+static struct ili_ts_data g_iliTsData;
+
+static rt_err_t ili_i2c_write_and_read(struct rt_i2c_client *psI2cClient,
+                                       rt_uint8_t *cmd, int write_len, int delay,
+                                       rt_uint8_t *data, int read_len)
+{
+    struct rt_i2c_msg msgs[] =
+    {
+        {
+            .addr = psI2cClient->client_addr,
+            .flags = RT_I2C_WR,
+            .len = write_len,
+            .buf = cmd,
+        },
+        {
+            .addr = psI2cClient->client_addr,
+            .flags = RT_I2C_RD,
+            .len = read_len,
+            .buf = data,
+        },
+    };
+
+    if (delay == 0 && write_len > 0 && read_len > 0)
+    {
+        if (rt_i2c_transfer(psI2cClient->bus, msgs, 2) != 2)
+            goto exit_ili_i2c_write_and_read;
+    }
+    else
+    {
+        if (write_len > 0)
+        {
+            if (rt_i2c_transfer(psI2cClient->bus, msgs, 1) != 1)
+                goto exit_ili_i2c_write_and_read;
+        }
+
+        if (delay > 0)
+            rt_thread_mdelay(delay);
+
+        if (read_len > 0)
+        {
+            if (rt_i2c_transfer(psI2cClient->bus, msgs + 1, 1) != 1)
+                goto exit_ili_i2c_write_and_read;
+        }
+    }
+
+    return RT_EOK;
+
+exit_ili_i2c_write_and_read:
+
+    return -RT_ERROR;
+}
+
+static int ili_get_ptl_ver(ili_ts_data_t psIliTs,
+                           rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 3);
+    if (error)
+        return error;
+
+    psIliTs->ptl.ver = nu_get16_be(outbuf);
+    psIliTs->ptl.ver_major = outbuf[0];
+
+    return 0;
+}
+
+static int ili_get_mcu_ver(ili_ts_data_t psIliTs,
+                           rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 32);
+    if (error)
+        return error;
+
+    psIliTs->mcu_ver = nu_get16_le(outbuf);
+    rt_memset(psIliTs->product_id, 0, sizeof(psIliTs->product_id));
+    rt_memcpy(psIliTs->product_id, outbuf + 6, 26);
+
+    return 0;
+}
+
+static int ili_get_fw_ver(ili_ts_data_t psIliTs,
+                          rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 8);
+    if (error)
+        return error;
+
+    rt_memcpy(psIliTs->firmware_ver, outbuf, 8);
+
+    return 0;
+}
+
+static int ili_get_scrn_res(ili_ts_data_t psIliTs,
+                            rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 8);
+    if (error)
+        return error;
+
+    psIliTs->screen_min_x = nu_get16_le(outbuf);
+    psIliTs->screen_min_y = nu_get16_le(outbuf + 2);
+    psIliTs->screen_max_x = nu_get16_le(outbuf + 4);
+    psIliTs->screen_max_y = nu_get16_le(outbuf + 6);
+
+    return 0;
+}
+
+static int ili_get_tp_res(ili_ts_data_t psIliTs,
+                          rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 15);
+    if (error)
+        return error;
+
+    psIliTs->max_tp = outbuf[8];
+    if (psIliTs->max_tp > ILI_MAX_TOUCH)
+    {
+        return -RT_EINVAL;
+    }
+
+    return 0;
+}
+
+static int ili_get_ic_mode(ili_ts_data_t psIliTs,
+                           rt_uint16_t cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 5, outbuf, 2);
+    if (error)
+        return error;
+
+    psIliTs->ic_mode = outbuf[0];
+    return 0;
+}
+
+static int ili_send_soft_reset(ili_ts_data_t psIliTs,
+                               rt_uint16_t  cmd, rt_uint8_t *inbuf, rt_uint8_t *outbuf)
+{
+    rt_int32_t error;
+    rt_uint8_t buf[64];
+
+    buf[0] = cmd;
+    error = ili_i2c_write_and_read(psIliTs->client, buf, 1, 0, RT_NULL, 0);
+    if (error)
+        return error;
+
+    return 0;
+}
+
+static void ili_tpc_reset(ili_ts_data_t psIliTs, int delay_ms)
+{
+    if (0)
+    {
+        //FIXME
+        /* hw pin init*/
+        rt_pin_mode(psIliTs->reset_pin, PIN_MODE_OUTPUT);
+
+        /* Reset */
+        rt_pin_write(psIliTs->reset_pin, PIN_HIGH);
+        rt_thread_mdelay(10);
+        rt_pin_write(psIliTs->reset_pin, PIN_LOW);
+    }
+    else
+    {
+        rt_err_t error;
+        error = ili_send_soft_reset(psIliTs, ILITEK_TP_CMD_RESET, RT_NULL, RT_NULL);
+        if (error)
+            return;
+    }
+    rt_thread_mdelay(delay_ms);
+}
+
+static rt_err_t ili_get_info(ili_ts_data_t psIliTs, struct rt_touch_info *info)
+{
+    rt_uint8_t outbuf[256];
+    rt_err_t error;
+
+    error = ili_get_ptl_ver(psIliTs, ILITEK_TP_CMD_GET_PRL_VER, RT_NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    error = ili_get_mcu_ver(psIliTs, ILITEK_TP_CMD_GET_MCU_VER, RT_NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    error = ili_get_fw_ver(psIliTs, ILITEK_TP_CMD_GET_FW_VER, NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    error = ili_get_scrn_res(psIliTs, ILITEK_TP_CMD_GET_SCRN_RES, NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    error = ili_get_tp_res(psIliTs, ILITEK_TP_CMD_GET_TP_RES, NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    error = ili_get_ic_mode(psIliTs, ILITEK_TP_CMD_GET_IC_MODE, NULL, outbuf);
+    if (error)
+        goto exit_ili_get_info;
+
+    LOG_I("touch device probed");
+
+    return RT_EOK;
+
+exit_ili_get_info:
+
+    return -RT_ERROR;
+}
+
+static void ili_info_dump(ili_ts_data_t psIliTs)
+{
+    rt_kprintf("reset_pin: %d\n", psIliTs->reset_pin);
+    rt_kprintf("irq_pin: %d\n", psIliTs->irq_pin);
+    rt_kprintf("ptl.ver: %x \n", psIliTs->ptl.ver_major);
+    rt_kprintf("mcu_ver: %x\n", psIliTs->mcu_ver);
+    rt_kprintf("firmware_ver:[%02X%02X.%02X%02X.%02X%02X.%02X%02X]\n",
+               psIliTs->firmware_ver[0],
+               psIliTs->firmware_ver[1],
+               psIliTs->firmware_ver[2],
+               psIliTs->firmware_ver[3],
+               psIliTs->firmware_ver[4],
+               psIliTs->firmware_ver[5],
+               psIliTs->firmware_ver[6],
+               psIliTs->firmware_ver[7]);
+
+    rt_kprintf("product_id: %s\n", psIliTs->product_id);
+
+    rt_kprintf("screen_max_x: %d\n", psIliTs->screen_max_x);
+    rt_kprintf("screen_max_y: %d\n", psIliTs->screen_max_y);
+    rt_kprintf("screen_min_x: %d\n", psIliTs->screen_min_x);
+    rt_kprintf("screen_min_y: %d\n", psIliTs->screen_min_y);
+    rt_kprintf("max_tp: %d\n", psIliTs->max_tp);
+    rt_kprintf("ic_mode: %d\n", psIliTs->ic_mode);
+}
+
+static rt_int16_t pre_x[ILI_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_int16_t pre_y[ILI_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_int16_t pre_w[ILI_MAX_TOUCH] = {-1, -1, -1, -1, -1};
+static rt_uint8_t s_tp_dowm[ILI_MAX_TOUCH];
+
+static void ili_touch_up(void *buf, int8_t id)
+{
+    struct rt_touch_data *read_data = (struct rt_touch_data *)buf;
+
+    if (s_tp_dowm[id] == 1)
+    {
+        s_tp_dowm[id] = 0;
+        read_data[id].event = RT_TOUCH_EVENT_UP;
+    }
+    else
+    {
+        read_data[id].event = RT_TOUCH_EVENT_NONE;
+    }
+
+    read_data[id].timestamp = rt_touch_get_ts();
+    read_data[id].width = pre_w[id];
+    read_data[id].x_coordinate = pre_x[id];
+    read_data[id].y_coordinate = pre_y[id];
+    read_data[id].track_id = id;
+
+    pre_x[id] = -1;  /* last point is none */
+    pre_y[id] = -1;
+    pre_w[id] = -1;
+}
+
+static void ili_touch_down(void *buf, int8_t id, int16_t x, int16_t y, int16_t w)
+{
+    struct rt_touch_data *read_data = (struct rt_touch_data *)buf;
+
+    if (s_tp_dowm[id] == 1)
+    {
+        read_data[id].event = RT_TOUCH_EVENT_MOVE;
+
+    }
+    else
+    {
+        read_data[id].event = RT_TOUCH_EVENT_DOWN;
+        s_tp_dowm[id] = 1;
+    }
+
+    read_data[id].timestamp = rt_touch_get_ts();
+    read_data[id].width = w;
+    read_data[id].x_coordinate = x;
+    read_data[id].y_coordinate = y;
+    read_data[id].track_id = id;
+
+    pre_x[id] = x; /* save last point */
+    pre_y[id] = y;
+    pre_w[id] = w;
+}
+
+static rt_size_t ili_read_point(struct rt_touch_device *touch, void *buf, rt_size_t read_num)
+{
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+
+    struct ili_ts_data *ts = (ili_ts_data_t)touch;
+    rt_uint8_t tmpbuf[256] = {0};
+    rt_err_t error = 0;
+    rt_int32_t packet_len = 5;
+    rt_int32_t packet_max_point = 10;
+    rt_int8_t touch_num;
+    rt_int32_t i, count;
+    rt_uint16_t x, y;
+    rt_int32_t   tip, point_id;
+
+    static rt_uint8_t pre_touch = 0;
+    static int8_t pre_id[ILI_MAX_TOUCH] = {0};
+
+    error = ili_i2c_write_and_read(ts->client, NULL, 0, 0, tmpbuf, 64);
+    if (error)
+    {
+        LOG_E("get touch info failed, err:%d\n", error);
+        goto exit_ili_read_point;
+    }
+
+    touch_num = tmpbuf[REPORT_COUNT_ADDRESS];
+    if (touch_num > ts->max_tp)
+    {
+        LOG_E("FW report max point:%d > panel info. max:%d\n", touch_num, ts->max_tp);
+        goto exit_ili_read_point;
+    }
+
+    count = DIV_ROUND_UP(touch_num, packet_max_point);
+    for (i = 1; i < count; i++)
+    {
+        error = ili_i2c_write_and_read(ts->client, NULL, 0, 0, tmpbuf + i * 64, 64);
+        if (error)
+        {
+            LOG_E("get touch info. failed, cnt:%d, err:%d\n",   count, error);
+            goto exit_ili_read_point;
+        }
+    }
+
+    if (pre_touch > touch_num)                                       /* point up */
+    {
+        for (i = 0; i < pre_touch; i++)
+        {
+            rt_uint8_t j;
+            for (j = 0; j < touch_num; j++)                          /* this time touch num */
+            {
+                point_id = tmpbuf[j * packet_len + 1] & 0x3F;
+
+                if (pre_id[i] == point_id)                   /* this id is not free */
+                    break;
+
+                if (j >= touch_num - 1)
+                {
+                    ili_touch_up(buf, pre_id[i]);
+                }
+            }
+        }
+    }
+    if (touch_num > 0)
+    {
+        uint32_t range_x = touch->info.range_x;
+        uint32_t range_y = touch->info.range_y;
+
+        for (i = 0; i < touch_num; i++)
+        {
+            tip = tmpbuf[i * packet_len + 1] & 0x40;
+            point_id = tmpbuf[i * packet_len + 1] & 0x3F;
+            pre_id[i] = point_id;
+            if (!tip)
+            {
+                // Up
+                ili_touch_up(buf, point_id);
+                continue;
+            }
+
+            x = nu_get16_le(tmpbuf + i * packet_len + 2);
+            y = nu_get16_le(tmpbuf + i * packet_len + 4);
+
+            if (x > ts->screen_max_x || x < ts->screen_min_x ||
+                    y > ts->screen_max_y || y < ts->screen_min_y)
+            {
+                LOG_E("invalid position, X[%d,%u,%d], Y[%d,%u,%d]\n",
+                      ts->screen_min_x, x, ts->screen_max_x,
+                      ts->screen_min_y, y, ts->screen_max_y);
+                continue;
+            }
+            x = (uint16_t)(range_x * x / ts->screen_max_x);
+            y = (uint16_t)(range_y * y / ts->screen_max_y);
+
+            ili_touch_down(buf, point_id, x, y, 255);
+        }
+    }
+
+    pre_touch = touch_num;
+
+    return read_num;
+
+exit_ili_read_point:
+
+    return 0;
+}
+
+static rt_err_t ili_control(struct rt_touch_device *touch, int cmd, void *arg)
+{
+    switch (cmd)
+    {
+    case RT_TOUCH_CTRL_GET_ID:
+    {
+        RT_ASSERT(arg);
+        rt_uint8_t *pu8ID = arg;
+        rt_memcpy((void *)pu8ID, (void *)&g_iliTsData.product_id[0], 8);
+    }
+    break;
+
+    case RT_TOUCH_CTRL_GET_INFO:
+    {
+        RT_ASSERT(arg);
+
+        touch->info.type      = RT_TOUCH_TYPE_CAPACITANCE;
+        touch->info.vendor    = RT_TOUCH_VENDOR_UNKNOWN;
+        touch->info.point_num = g_iliTsData.max_tp;
+
+        rt_memcpy(arg, &touch->info, sizeof(struct rt_touch_info));
+    }
+    break;
+
+    case RT_TOUCH_CTRL_SET_X_RANGE:
+    {
+        RT_ASSERT(arg);
+        uint16_t range_x = *(rt_uint16_t *)arg;
+        if (range_x > g_iliTsData.screen_max_x || range_x < g_iliTsData.screen_min_x)
+        {
+            LOG_E("Set x range failed. %d", range_x);
+        }
+        else
+        {
+            touch->info.range_x   = range_x;
+        }
+    }
+    break;
+
+    case RT_TOUCH_CTRL_SET_Y_RANGE:
+    {
+        RT_ASSERT(arg);
+        uint16_t range_y = *(rt_uint16_t *)arg;
+        if (range_y > g_iliTsData.screen_max_y || range_y < g_iliTsData.screen_min_y)
+        {
+            LOG_E("Set y range failed. %d", range_y);
+        }
+        else
+        {
+            touch->info.range_y   = range_y;
+        }
+    }
+    break;
+
+    case RT_TOUCH_CTRL_SET_MODE:
+    {
+        rt_uint16_t trig_type;
+        RT_ASSERT(arg);
+        trig_type = *(rt_uint16_t *)arg;
+
+        switch (trig_type)
+        {
+        case RT_DEVICE_FLAG_INT_RX:
+            break;
+        case RT_DEVICE_FLAG_RDONLY:
+            break;
+        default:
+            break;
+        }
+    }
+    break;
+
+    default:
+    {
+    }
+    break;
+
+    }
+
+    return RT_EOK;
+}
+
+static struct rt_touch_ops ili_touch_ops =
+{
+    .touch_readpoint = ili_read_point,
+    .touch_control = ili_control,
+};
+
+int rt_hw_ili_tpc_init(const char *name, struct rt_touch_config *cfg)
+{
+    struct rt_touch_device *touch_device = RT_NULL;
+    rt_uint32_t bus_speed = 400000;
+
+    touch_device = (struct rt_touch_device *)&g_iliTsData.touch_device;
+    rt_memset((void *)touch_device, 0, sizeof(struct rt_touch_device));
+
+    g_iliTsData.client = (struct rt_i2c_client *)rt_malloc(sizeof(struct rt_i2c_client));
+    if (g_iliTsData.client == RT_NULL)
+    {
+        LOG_E("touch device malloc fail");
+        goto exit_rt_hw_ili_tpc_init;
+    }
+    rt_memset((void *)g_iliTsData.client, 0, sizeof(struct rt_i2c_client));
+
+    g_iliTsData.reset_pin = *((rt_base_t *)cfg->user_data);
+    g_iliTsData.irq_pin   = cfg->irq_pin.pin;
+
+    g_iliTsData.client->client_addr = ILI_ADDRESS;
+    g_iliTsData.client->bus = (struct rt_i2c_bus_device *)rt_device_find(cfg->dev_name);
+    if (g_iliTsData.client->bus == RT_NULL)
+    {
+        LOG_E("Can't find %s device", cfg->dev_name);
+        goto exit_rt_hw_ili_tpc_init;
+    }
+
+    if (rt_device_open((rt_device_t)g_iliTsData.client->bus, RT_DEVICE_FLAG_RDWR) != RT_EOK)
+    {
+        LOG_E("open %s device failed", cfg->dev_name);
+        goto exit_rt_hw_ili_tpc_init;
+    }
+
+    /* register touch device */
+    rt_memcpy(&touch_device->config, cfg, sizeof(struct rt_touch_config));
+    touch_device->ops = &ili_touch_ops;
+    if (rt_hw_touch_register(touch_device, name, RT_DEVICE_FLAG_INT_RX, RT_NULL) != RT_EOK)
+    {
+        LOG_E("register %s device failed", name);
+        goto exit_rt_hw_ili_tpc_init;
+    }
+
+    ili_tpc_reset(&g_iliTsData, 300);
+
+    if (rt_device_control((rt_device_t)g_iliTsData.client->bus, RT_I2C_DEV_CTRL_CLK, &bus_speed) != RT_EOK)
+    {
+        LOG_E("control %s device failed", cfg->dev_name);
+        goto exit_rt_hw_ili_tpc_init;
+    }
+
+    /* Probe */
+    if (ili_get_info(&g_iliTsData, &touch_device->info) != RT_EOK)
+    {
+        LOG_E("Get info failed");
+        return -RT_ERROR;
+    }
+    ili_info_dump(&g_iliTsData);
+
+
+    return 0;
+
+exit_rt_hw_ili_tpc_init:
+
+    if (g_iliTsData.client)
+        rt_free(g_iliTsData.client);
+
+    return -RT_ERROR;
+}

+ 18 - 0
bsp/nuvoton/libraries/nu_packages/TPC/ili.h

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2022-02-25     Wayne        the first version
+ */
+
+#ifndef __ILI_H__
+#define __ILI_H__
+
+#include "touch.h"
+
+int rt_hw_ili_tpc_init(const char *name, struct rt_touch_config *cfg);
+
+#endif /* ili2130.h */

+ 117 - 0
bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c

@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2022-02-25     Wayne        the first version
+ */
+
+#include <rtthread.h>
+#include <rtdevice.h>
+#include "touch.h"
+
+#define THREAD_PRIORITY   5
+#define THREAD_STACK_SIZE 2048
+#define THREAD_TIMESLICE  5
+
+static rt_sem_t  tpc_sem = RT_NULL;
+
+RT_WEAK void nu_touch_inputevent_cb(rt_int16_t x, rt_int16_t y, rt_uint8_t state)
+{
+    rt_kprintf("[%d] %d %d\n", state, x, y);
+}
+
+static rt_err_t rx_callback(rt_device_t dev, rt_size_t size)
+{
+    return rt_sem_release(tpc_sem);
+}
+
+static void tpc_entry(void *parameter)
+{
+    struct rt_touch_data *read_data;
+    struct rt_touch_info info;
+    rt_device_t  dev = RT_NULL;
+
+    const char *name = "ili_tpc";
+    rt_uint32_t x_range = BSP_LCD_WIDTH;
+    rt_uint32_t y_range = BSP_LCD_HEIGHT;
+
+    dev = rt_device_find(name);
+    if (dev == RT_NULL)
+    {
+        rt_kprintf("can't find device:%s\n", name);
+        return;
+    }
+
+    if (rt_device_open(dev, RT_DEVICE_FLAG_INT_RX) != RT_EOK)
+    {
+        rt_kprintf("open device failed!");
+        return;
+    }
+    rt_kprintf("[%s] x: %d, y: %d\n", __func__, x_range, y_range);
+
+    rt_device_control(dev, RT_TOUCH_CTRL_SET_X_RANGE, &x_range);  /* if possible you can set your x y coordinate*/
+    rt_device_control(dev, RT_TOUCH_CTRL_SET_Y_RANGE, &y_range);
+
+    tpc_sem = rt_sem_create("dsem", 0, RT_IPC_FLAG_FIFO);
+    if (tpc_sem == RT_NULL)
+    {
+        rt_kprintf("create dynamic semaphore failed.\n");
+        return;
+    }
+
+    rt_device_set_rx_indicate(dev, rx_callback);
+
+    rt_device_control(dev, RT_TOUCH_CTRL_GET_INFO, &info);
+    rt_kprintf("range_x = %d \n",   info.range_x);
+    rt_kprintf("range_y = %d \n",   info.range_y);
+    rt_kprintf("point_num = %d \n", info.point_num);
+
+    read_data = (struct rt_touch_data *)rt_malloc(sizeof(struct rt_touch_data) * info.point_num);
+    RT_ASSERT(read_data);
+
+    rt_memset(read_data, 0, sizeof(struct rt_touch_data) * info.point_num);
+
+    while (1)
+    {
+        rt_sem_take(tpc_sem, RT_WAITING_FOREVER);
+        rt_device_control(dev, RT_TOUCH_CTRL_DISABLE_INT, RT_NULL);
+
+        if (rt_device_read(dev, 0, read_data, info.point_num) == info.point_num)
+        {
+            for (rt_uint8_t i = 0; i < 1; i++) // Only report one point.
+            {
+                if (read_data[i].event == RT_TOUCH_EVENT_DOWN
+                        || read_data[i].event == RT_TOUCH_EVENT_UP
+                        || read_data[i].event == RT_TOUCH_EVENT_MOVE)
+                {
+                    //rt_kprintf("[%d] %d %d\n", read_data[i].event, read_data[i].x_coordinate, read_data[i].y_coordinate);
+
+                    nu_touch_inputevent_cb(read_data[i].x_coordinate, read_data[i].y_coordinate, read_data[i].event);
+                }
+            }
+        }
+        rt_device_control(dev, RT_TOUCH_CTRL_ENABLE_INT, RT_NULL);
+    }
+}
+
+
+/* Test function */
+int tpc_sample(void)
+{
+    rt_thread_t  tpc_thread;
+    tpc_thread = rt_thread_create("tpc",
+                                  tpc_entry,
+                                  RT_NULL,
+                                  THREAD_STACK_SIZE,
+                                  THREAD_PRIORITY,
+                                  THREAD_TIMESLICE);
+
+    if (tpc_thread != RT_NULL)
+        rt_thread_startup(tpc_thread);
+
+    return 0;
+}
+INIT_APP_EXPORT(tpc_sample);

+ 15 - 13
bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c

@@ -30,12 +30,12 @@
 
 /* rtc date upper bound reaches the year of 2099. */
 #define RTC_TM_UPPER_BOUND                                              \
-{   .tm_year = CONV_TO_TM_YEAR(2099),                                   \
-    .tm_mon  = CONV_TO_TM_MON(12),                                      \
-    .tm_mday  = 31,                                                     \
-    .tm_hour  = 23,                                                     \
-    .tm_min = 59,                                                       \
-    .tm_sec  = 59,                                                      \
+{   .tm_year = CONV_TO_TM_YEAR(2038),                                   \
+    .tm_mon  = CONV_TO_TM_MON(1),                                       \
+    .tm_mday  = 19,                                                     \
+    .tm_hour  = 3,                                                      \
+    .tm_min = 14,                                                       \
+    .tm_sec  = 07,                                                      \
 }
 
 /* rtc date lower bound reaches the year of 2000. */
@@ -58,8 +58,8 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args);
     static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);
 #endif
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t);
-static void nu_rtc_init(void);
+static rt_err_t nu_rtc_is_date_valid(const time_t t);
+static rt_err_t nu_rtc_init(void);
 
 #if defined(RT_USING_ALARM)
     static void nu_rtc_alarm_reset(void);
@@ -76,7 +76,7 @@ static void nu_rtc_init(void);
 static struct rt_device device_rtc;
 
 
-static void nu_rtc_init(void)
+static rt_err_t nu_rtc_init(void)
 {
     nu_sys_ipclk_enable(RTCCKEN);
 
@@ -93,6 +93,8 @@ static void nu_rtc_init(void)
     rt_hw_interrupt_umask(IRQ_RTC);
 
 #endif
+
+    return RT_EOK;
 }
 
 
@@ -176,7 +178,7 @@ static rt_size_t nu_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer,
 #endif
 
 
-static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
+static rt_err_t nu_rtc_is_date_valid(const time_t t)
 {
     static struct tm tm_upper = RTC_TM_UPPER_BOUND;
     static struct tm tm_lower = RTC_TM_LOWER_BOUND;
@@ -191,7 +193,7 @@ static rt_err_t nu_rtc_is_date_valid(const time_t *const t)
     }
 
     /* check the date is supported by rtc. */
-    if ((*t > t_upper) || (*t < t_lower))
+    if ((t > t_upper) || (t < t_lower))
         return -(RT_EINVAL);
 
     return RT_EOK;
@@ -233,11 +235,11 @@ static rt_err_t nu_rtc_control(rt_device_t dev, int cmd, void *args)
     case RT_DEVICE_CTRL_RTC_SET_TIME:
 
         time = (time_t *) args;
-        tm_in = gmtime(time);
 
-        if (nu_rtc_is_date_valid(time) != RT_EOK)
+        if (nu_rtc_is_date_valid(*time) != RT_EOK)
             return -(RT_ERROR);
 
+        tm_in = gmtime(time);
         hw_time.u32Year = CONV_FROM_TM_YEAR(tm_in->tm_year);
         hw_time.u32Month = CONV_FROM_TM_MON(tm_in->tm_mon);
         hw_time.u32Day = tm_in->tm_mday;

+ 87 - 81
bsp/nuvoton/nk-980iot/.config

@@ -94,17 +94,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -118,10 +109,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -156,6 +143,8 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_NFS is not set
+# CONFIG_RT_USING_FAL is not set
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -183,17 +172,22 @@ CONFIG_RT_USING_ADC=y
 # CONFIG_RT_USING_DAC is not set
 CONFIG_RT_USING_PWM=y
 # CONFIG_RT_USING_MTD_NOR is not set
-CONFIG_RT_USING_MTD_NAND=y
-CONFIG_RT_MTD_NAND_DEBUG=y
+# CONFIG_RT_USING_MTD_NAND is not set
 # CONFIG_RT_USING_PM is not set
 CONFIG_RT_USING_RTC=y
 CONFIG_RT_USING_ALARM=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
-# CONFIG_RT_USING_SFUD is not set
+CONFIG_RT_USING_SFUD=y
+CONFIG_RT_SFUD_USING_SFDP=y
+CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y
+CONFIG_RT_SFUD_USING_QSPI=y
+CONFIG_RT_SFUD_SPI_MAX_HZ=50000000
+# CONFIG_RT_DEBUG_SFUD is not set
 # CONFIG_RT_USING_ENC28J60 is not set
 # CONFIG_RT_USING_SPI_WIFI is not set
 CONFIG_RT_USING_WDT=y
@@ -261,7 +255,7 @@ CONFIG_RT_VCOM_TX_TIMEOUT=1000
 CONFIG_RT_USB_MSTORAGE_DISK_NAME="ramdisk1"
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
@@ -269,8 +263,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # POSIX (Portable Operating System Interface) layer
 #
 CONFIG_RT_USING_POSIX_FS=y
-# CONFIG_RT_USING_POSIX_DEVIO is not set
-# CONFIG_RT_USING_POSIX_STDIO is not set
+CONFIG_RT_USING_POSIX_DEVIO=y
+CONFIG_RT_USING_POSIX_STDIO=y
 CONFIG_RT_USING_POSIX_POLL=y
 CONFIG_RT_USING_POSIX_SELECT=y
 # CONFIG_RT_USING_POSIX_TERMIOS is not set
@@ -292,14 +286,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 # CONFIG_SAL_INTERNET_CHECK is not set
 
@@ -308,10 +299,6 @@ CONFIG_RT_USING_SAL=y
 #
 CONFIG_SAL_USING_LWIP=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -321,14 +308,13 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
 # CONFIG_RT_USING_LWIP141 is not set
 # CONFIG_RT_USING_LWIP203 is not set
 CONFIG_RT_USING_LWIP212=y
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20102
 # CONFIG_RT_USING_LWIP_IPV6 is not set
 CONFIG_RT_LWIP_MEM_ALIGNMENT=4
 CONFIG_RT_LWIP_IGMP=y
@@ -378,18 +364,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=1
 CONFIG_RT_LWIP_STATS=y
 # CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
 CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
 # CONFIG_RT_LWIP_DEBUG is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
-# CONFIG_LWIP_USING_DHCPD is not set
-
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
 
 #
 # Utilities
@@ -401,7 +378,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -415,6 +392,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -425,12 +403,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -500,16 +474,13 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -534,6 +505,22 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -559,15 +546,7 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # 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=y
-CONFIG_PKG_WAVPLAYER_PATH="/packages/multimedia/wavplayer"
-CONFIG_PKG_WP_USING_PLAY=y
-CONFIG_PKG_WP_PLAY_DEVICE="sound0"
-CONFIG_PKG_WP_USING_RECORD=y
-CONFIG_PKG_WP_RECORD_DEVICE="sound0"
-# CONFIG_PKG_USING_WAVPLAYER_V020 is not set
-CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION=y
-CONFIG_PKG_WAVPLAYER_VER="latest"
+# 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
@@ -625,10 +604,15 @@ CONFIG_PKG_WAVPLAYER_VER="latest"
 # 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_MEM_SANDBOX=y
+CONFIG_PKG_MEM_SANDBOX_PATH="/packages/tools/mem_sandbox"
+CONFIG_PKG_USING_MEM_SANDBOX_LATEST_VERSION=y
+CONFIG_PKG_MEM_SANDBOX_VER="latest"
 # 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
 
 #
 # system packages
@@ -647,7 +631,9 @@ CONFIG_PKG_WAVPLAYER_VER="latest"
 # CONFIG_PKG_USING_POSIX_GETLINE is not set
 # CONFIG_PKG_USING_POSIX_WCWIDTH is not set
 # CONFIG_PKG_USING_POSIX_ITOA is not set
-# CONFIG_PKG_USING_POSIX_STRINGS is not set
+CONFIG_PKG_USING_POSIX_STRINGS=y
+CONFIG_PKG_POSIX_STRINGS_PATH="/packages/system/POSIX/strings"
+CONFIG_PKG_POSIX_STRINGS_VER="latest"
 
 #
 # acceleration: Assembly language or algorithmic acceleration packages
@@ -671,29 +657,19 @@ CONFIG_PKG_WAVPLAYER_VER="latest"
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL 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=y
-CONFIG_PKG_UFFS_PATH="/packages/system/uffs"
-CONFIG_RT_USING_DFS_UFFS=y
-# CONFIG_RT_UFFS_ECC_MODE_0 is not set
-# CONFIG_RT_UFFS_ECC_MODE_1 is not set
-# CONFIG_RT_UFFS_ECC_MODE_2 is not set
-CONFIG_RT_UFFS_ECC_MODE_3=y
-CONFIG_RT_UFFS_ECC_MODE=3
-CONFIG_PKG_USING_DFS_UFFS_LATEST_VERSION=y
-CONFIG_PKG_UFFS_VER="latest"
+# 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
@@ -717,6 +693,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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
 
 #
 # peripheral libraries and drivers
@@ -740,6 +717,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -796,6 +774,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -814,6 +793,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -850,6 +833,7 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
@@ -857,7 +841,27 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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_VI=y
+CONFIG_PKG_VI_PATH="/packages/misc/vi"
+CONFIG_VI_SANDBOX_SIZE_KB=20
+CONFIG_VI_MAX_LEN=4096
+# CONFIG_VI_ENABLE_8BIT is not set
+CONFIG_VI_ENABLE_COLON=y
+CONFIG_VI_ENABLE_COLON_EXPAND=y
+CONFIG_VI_ENABLE_YANKMARK=y
+CONFIG_VI_ENABLE_SEARCH=y
+CONFIG_VI_ENABLE_DOT_CMD=y
+CONFIG_VI_ENABLE_READONLY=y
+CONFIG_VI_ENABLE_SETOPTS=y
+CONFIG_VI_ENABLE_SET=y
+# CONFIG_VI_ENABLE_WIN_RESIZE is not set
+CONFIG_VI_ENABLE_VI_ASK_TERMINAL=y
+CONFIG_VI_ENABLE_UNDO=y
+CONFIG_VI_ENABLE_UNDO_QUEUE=y
+CONFIG_VI_UNDO_QUEUE_MAX=256
+CONFIG_VI_ENABLE_VERBOSE_STATUS=y
+CONFIG_PKG_USING_VI_LATEST_VERSION=y
+CONFIG_PKG_VI_VER="latest"
 # CONFIG_PKG_USING_KI is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_UKAL is not set
@@ -867,6 +871,7 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
 
 #
 # Hardware Drivers Config
@@ -947,9 +952,9 @@ CONFIG_BSP_USING_SPI1_NONE=y
 CONFIG_BSP_USING_I2S=y
 CONFIG_NU_I2S_DMA_FIFO_SIZE=4096
 CONFIG_BSP_USING_QSPI=y
-CONFIG_BSP_USING_QSPI_PDMA=y
+# CONFIG_BSP_USING_QSPI_PDMA is not set
 CONFIG_BSP_USING_QSPI0=y
-CONFIG_BSP_USING_QSPI0_PDMA=y
+# CONFIG_BSP_USING_QSPI0_PDMA is not set
 # CONFIG_BSP_USING_SCUART is not set
 CONFIG_BSP_USING_CRYPTO=y
 # CONFIG_NU_PRNG_USE_SEED is not set
@@ -966,8 +971,8 @@ CONFIG_BSP_USING_CONSOLE=y
 CONFIG_BOARD_USING_IP101GR=y
 CONFIG_BOARD_USING_NAU8822=y
 CONFIG_BOARD_USING_STORAGE_SDCARD=y
-# CONFIG_BOARD_USING_STORAGE_SPIFLASH is not set
-CONFIG_BOARD_USING_STORAGE_SPINAND=y
+CONFIG_BOARD_USING_STORAGE_SPIFLASH=y
+# CONFIG_BOARD_USING_STORAGE_SPINAND is not set
 CONFIG_BOARD_USING_USB0_DEVICE_HOST=y
 CONFIG_BOARD_USING_USB1_HOST=y
 
@@ -989,6 +994,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 CONFIG_NU_PKG_USING_NAU8822=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
-CONFIG_NU_PKG_USING_SPINAND=y
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.nk980-iot.test.utest."
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
+# CONFIG_NU_PKG_USING_SPINAND is not set

+ 4 - 6
bsp/nuvoton/nk-980iot/README.md

@@ -48,15 +48,13 @@ Nuvoton Technology provides industrial IoT development platform using NUC980DK61
 |VCOM | For console | Ready.(Need to install VCOM driver) |
 
 ## 2. Supported compiler
-Support GCC, MDK4 and MDK5 IDE/compilers. More information of these compiler version as following:
-
+Support GCC and MDK IDE/compilers. More information of these compiler version as following:
 | IDE/Compiler  | Tested version            |
 | ---------- | ---------------------------- |
-| MDK4       | 4.76                         |
-| MDK5       | 5.26.2                       |
-| GCC        | GCC 5.4.1 20160919 (release) |
+| MDK        | uVision 5.25                 |
+| GCC        | 6-2017-q1-update             |
 
-Notice: Please install ICE driver for development.
+Notice: Please install ICE driver for development and [NuMicro_ARM9_Device_Database_Keil](https://www.nuvoton.com/resource-download.jsp?tp_GUID=SW1820201207155701).
 
 ## 3. Program firmware
 ### 3.1 SDRAM Downloading using NuWriter

+ 39 - 44
bsp/nuvoton/nk-980iot/rtconfig.h

@@ -58,14 +58,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -77,9 +71,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -123,12 +114,15 @@
 #define RT_USING_PIN
 #define RT_USING_ADC
 #define RT_USING_PWM
-#define RT_USING_MTD_NAND
-#define RT_MTD_NAND_DEBUG
 #define RT_USING_RTC
 #define RT_USING_ALARM
 #define RT_USING_SPI
 #define RT_USING_QSPI
+#define RT_USING_SFUD
+#define RT_SFUD_USING_SFDP
+#define RT_SFUD_USING_FLASH_INFO_TABLE
+#define RT_SFUD_USING_QSPI
+#define RT_SFUD_SPI_MAX_HZ 50000000
 #define RT_USING_WDT
 #define RT_USING_AUDIO
 #define RT_AUDIO_REPLAY_MP_BLOCK_SIZE 4096
@@ -173,13 +167,15 @@
 #define RT_VCOM_TX_TIMEOUT 1000
 #define RT_USB_MSTORAGE_DISK_NAME "ramdisk1"
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
 /* POSIX (Portable Operating System Interface) layer */
 
 #define RT_USING_POSIX_FS
+#define RT_USING_POSIX_DEVIO
+#define RT_USING_POSIX_STDIO
 #define RT_USING_POSIX_POLL
 #define RT_USING_POSIX_SELECT
 
@@ -188,9 +184,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 
@@ -198,9 +193,6 @@
 
 #define SAL_USING_LWIP
 #define SAL_USING_POSIX
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -208,11 +200,9 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
 #define RT_USING_LWIP
 #define RT_USING_LWIP212
+#define RT_USING_LWIP_VER_NUM 0x20102
 #define RT_LWIP_MEM_ALIGNMENT 4
 #define RT_LWIP_IGMP
 #define RT_LWIP_ICMP
@@ -256,12 +246,6 @@
 #define RT_LWIP_STATS
 #define RT_LWIP_USING_PING
 
-/* AT commands */
-
-
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -304,6 +288,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -312,18 +301,14 @@
 
 /* u8g2: a monochrome graphic library */
 
-#define PKG_USING_WAVPLAYER
-#define PKG_WP_USING_PLAY
-#define PKG_WP_PLAY_DEVICE "sound0"
-#define PKG_WP_USING_RECORD
-#define PKG_WP_RECORD_DEVICE "sound0"
-#define PKG_USING_WAVPLAYER_LATEST_VERSION
 
 /* PainterEngine: A cross-platform graphics application framework written in C language */
 
 
 /* tools packages */
 
+#define PKG_USING_MEM_SANDBOX
+#define PKG_USING_MEM_SANDBOX_LATEST_VERSION
 
 /* system packages */
 
@@ -332,6 +317,7 @@
 
 /* POSIX extension functions */
 
+#define PKG_USING_POSIX_STRINGS
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
@@ -341,11 +327,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define PKG_USING_DFS_UFFS
-#define RT_USING_DFS_UFFS
-#define RT_UFFS_ECC_MODE_3
-#define RT_UFFS_ECC_MODE 3
-#define PKG_USING_DFS_UFFS_LATEST_VERSION
 #define PKG_USING_RAMDISK
 #define PKG_USING_RAMDISK_LATEST_VERSION
 
@@ -357,6 +338,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -364,6 +347,23 @@
 
 #define PKG_USING_OPTPARSE
 #define PKG_USING_OPTPARSE_LATEST_VERSION
+#define PKG_USING_VI
+#define VI_SANDBOX_SIZE_KB 20
+#define VI_MAX_LEN 4096
+#define VI_ENABLE_COLON
+#define VI_ENABLE_COLON_EXPAND
+#define VI_ENABLE_YANKMARK
+#define VI_ENABLE_SEARCH
+#define VI_ENABLE_DOT_CMD
+#define VI_ENABLE_READONLY
+#define VI_ENABLE_SETOPTS
+#define VI_ENABLE_SET
+#define VI_ENABLE_VI_ASK_TERMINAL
+#define VI_ENABLE_UNDO
+#define VI_ENABLE_UNDO_QUEUE
+#define VI_UNDO_QUEUE_MAX 256
+#define VI_ENABLE_VERBOSE_STATUS
+#define PKG_USING_VI_LATEST_VERSION
 
 /* Hardware Drivers Config */
 
@@ -415,9 +415,7 @@
 #define BSP_USING_I2S
 #define NU_I2S_DMA_FIFO_SIZE 4096
 #define BSP_USING_QSPI
-#define BSP_USING_QSPI_PDMA
 #define BSP_USING_QSPI0
-#define BSP_USING_QSPI0_PDMA
 #define BSP_USING_CRYPTO
 #define BSP_USING_WDT
 #define BSP_USING_USBD
@@ -429,7 +427,7 @@
 #define BOARD_USING_IP101GR
 #define BOARD_USING_NAU8822
 #define BOARD_USING_STORAGE_SDCARD
-#define BOARD_USING_STORAGE_SPINAND
+#define BOARD_USING_STORAGE_SPIFLASH
 #define BOARD_USING_USB0_DEVICE_HOST
 #define BOARD_USING_USB1_HOST
 
@@ -441,8 +439,5 @@
 #define NU_PKG_USING_UTILS
 #define NU_PKG_USING_DEMO
 #define NU_PKG_USING_NAU8822
-#define NU_PKG_USING_SPINAND
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.nk980-iot.test.utest."
 
 #endif

+ 58 - 73
bsp/nuvoton/nk-980iot/spinor.config

@@ -7,7 +7,6 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=16
-# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -95,17 +94,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -119,10 +109,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -157,6 +143,13 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+CONFIG_FAL_USING_SFUD_PORT=y
+CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -191,6 +184,7 @@ CONFIG_RT_USING_ALARM=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -266,9 +260,8 @@ CONFIG_RT_VCOM_TX_TIMEOUT=1000
 CONFIG_RT_USB_MSTORAGE_DISK_NAME="ramdisk1"
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
 #
@@ -284,7 +277,9 @@ CONFIG_RT_USING_POSIX_SELECT=y
 # CONFIG_RT_USING_POSIX_MMAN 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)
@@ -296,14 +291,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 # CONFIG_SAL_INTERNET_CHECK is not set
 
@@ -312,10 +304,6 @@ CONFIG_RT_USING_SAL=y
 #
 CONFIG_SAL_USING_LWIP=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -325,15 +313,13 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
 # CONFIG_RT_USING_LWIP141 is not set
-# CONFIG_RT_USING_LWIP202 is not set
 # CONFIG_RT_USING_LWIP203 is not set
 CONFIG_RT_USING_LWIP212=y
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20102
 # CONFIG_RT_USING_LWIP_IPV6 is not set
 CONFIG_RT_LWIP_MEM_ALIGNMENT=4
 CONFIG_RT_LWIP_IGMP=y
@@ -383,18 +369,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=1
 CONFIG_RT_LWIP_STATS=y
 # CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
 CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
 # CONFIG_RT_LWIP_DEBUG is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
-# CONFIG_LWIP_USING_DHCPD is not set
-
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
 
 #
 # Utilities
@@ -406,7 +383,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -420,6 +397,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -430,12 +408,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -468,11 +442,9 @@ CONFIG_NETUTILS_NTP_HOSTNAME2="1.tw.pool.ntp.org"
 CONFIG_NETUTILS_NTP_HOSTNAME3="2.tw.pool.ntp.org"
 # CONFIG_PKG_NETUTILS_TELNET is not set
 # CONFIG_PKG_NETUTILS_TCPDUMP is not set
-# CONFIG_PKG_USING_NETUTILS_LATEST_VERSION is not set
-CONFIG_PKG_USING_NETUTILS_V131=y
-# CONFIG_PKG_USING_NETUTILS_V130 is not set
-CONFIG_PKG_NETUTILS_VER="v1.3.1"
-CONFIG_PKG_NETUTILS_VER_NUM=0x10301
+CONFIG_PKG_USING_NETUTILS_LATEST_VERSION=y
+CONFIG_PKG_NETUTILS_VER="latest"
+CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # CONFIG_PKG_USING_CMUX is not set
 # CONFIG_PKG_USING_PPP_DEVICE is not set
 # CONFIG_PKG_USING_AT_DEVICE is not set
@@ -493,6 +465,7 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x10301
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
 # 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
@@ -506,16 +479,13 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x10301
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -540,6 +510,22 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x10301
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -630,6 +616,8 @@ CONFIG_PKG_MEM_SANDBOX_VER="latest"
 # 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
 
 #
 # system packages
@@ -648,7 +636,9 @@ CONFIG_PKG_MEM_SANDBOX_VER="latest"
 # CONFIG_PKG_USING_POSIX_GETLINE is not set
 # CONFIG_PKG_USING_POSIX_WCWIDTH is not set
 # CONFIG_PKG_USING_POSIX_ITOA is not set
-# CONFIG_PKG_USING_POSIX_STRINGS is not set
+CONFIG_PKG_USING_POSIX_STRINGS=y
+CONFIG_PKG_POSIX_STRINGS_PATH="/packages/system/POSIX/strings"
+CONFIG_PKG_POSIX_STRINGS_VER="latest"
 
 #
 # acceleration: Assembly language or algorithmic acceleration packages
@@ -672,27 +662,12 @@ CONFIG_PKG_MEM_SANDBOX_VER="latest"
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-CONFIG_FAL_USING_SFUD_PORT=y
-CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -722,7 +697,8 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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_USB_STACK is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
 
 #
 # peripheral libraries and drivers
@@ -746,6 +722,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -802,6 +779,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -820,6 +798,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -856,6 +838,7 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
@@ -893,6 +876,7 @@ CONFIG_PKG_VI_VER="latest"
 # 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
 
 #
 # Hardware Drivers Config
@@ -1015,6 +999,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 CONFIG_NU_PKG_USING_NAU8822=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.nk980-iot.test.utest."

+ 38 - 10
bsp/nuvoton/nk-980iot/template.uvproj

@@ -10,11 +10,12 @@
       <TargetName>rtthread</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
+      <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>Nuvoton_ARM9_Series</Device>
           <Vendor>Nuvoton</Vendor>
-          <Cpu></Cpu>
+          <Cpu>IRAM(0x0-0x0) CLOCK(000000000) CPUTYPE(ARM926EJ-S)</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
           <FlashDriverDll></FlashDriverDll>
@@ -30,6 +31,7 @@
           <SLE66AMisc></SLE66AMisc>
           <SLE66LinkerMisc></SLE66LinkerMisc>
           <SFDFile></SFDFile>
+          <bCustSvd>0</bCustSvd>
           <UseEnv>0</UseEnv>
           <BinPath></BinPath>
           <IncludePath></IncludePath>
@@ -43,7 +45,7 @@
             <NotGenerated>0</NotGenerated>
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputDirectory>.\build\keil4\</OutputDirectory>
           <OutputName>rtthread</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
@@ -71,14 +73,18 @@
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
+            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
           </AfterMake>
           <SelectedForBatchBuild>0</SelectedForBatchBuild>
           <SVCSIdString></SVCSIdString>
@@ -97,6 +103,7 @@
           <StopOnExitCode>3</StopOnExitCode>
           <CustomArgument></CustomArgument>
           <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
         </CommonProperty>
         <DllOption>
           <SimDllName>SARM.DLL</SimDllName>
@@ -126,6 +133,7 @@
             <RestoreFunctions>1</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+            <RestoreSysVw>1</RestoreSysVw>
           </Simulator>
           <Target>
             <UseTarget>1</UseTarget>
@@ -137,9 +145,10 @@
             <RestoreFunctions>0</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <RestoreTracepoints>1</RestoreTracepoints>
+            <RestoreSysVw>1</RestoreSysVw>
           </Target>
           <RunDebugAfterBuild>0</RunDebugAfterBuild>
-          <TargetSelection>6</TargetSelection>
+          <TargetSelection>18</TargetSelection>
           <SimDlls>
             <CpuDll></CpuDll>
             <CpuDllArguments></CpuDllArguments>
@@ -169,6 +178,10 @@
           <Flash2>Segger\JLTAgdi.dll</Flash2>
           <Flash3>"" ()</Flash3>
           <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
         </Utilities>
         <TargetArmAds>
           <ArmAdsMisc>
@@ -199,22 +212,24 @@
             <AdsLsxf>1</AdsLsxf>
             <RvctClst>0</RvctClst>
             <GenPPlst>0</GenPPlst>
-            <AdsCpuType></AdsCpuType>
+            <AdsCpuType>ARM926EJ-S</AdsCpuType>
             <RvctDeviceName></RvctDeviceName>
             <mOS>0</mOS>
             <uocRom>0</uocRom>
             <uocRam>0</uocRam>
             <hadIROM>0</hadIROM>
-            <hadIRAM>0</hadIRAM>
+            <hadIRAM>1</hadIRAM>
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>0</StupSel>
             <useUlib>0</useUlib>
             <EndSel>0</EndSel>
             <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
             <RoSelD>3</RoSelD>
             <RwSelD>3</RwSelD>
             <CodeSel>0</CodeSel>
@@ -267,8 +282,8 @@
               </Ocm6>
               <IRAM>
                 <Type>0</Type>
-                <StartAddress>0x200000</StartAddress>
-                <Size>0x1000</Size>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1</Size>
               </IRAM>
               <IROM>
                 <Type>1</Type>
@@ -323,7 +338,7 @@
               <OCR_RVCT9>
                 <Type>0</Type>
                 <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
+                <Size>0x1</Size>
               </OCR_RVCT9>
               <OCR_RVCT10>
                 <Type>0</Type>
@@ -347,6 +362,16 @@
             <wLevel>2</wLevel>
             <uThumb>0</uThumb>
             <uSurpInc>0</uSurpInc>
+            <uC99>0</uC99>
+            <uGnu>0</uGnu>
+            <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>--c99</MiscControls>
               <Define>RT_USING_INTERRUPT_INFO</Define>
@@ -363,6 +388,8 @@
             <SwStkChk>0</SwStkChk>
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
@@ -379,6 +406,7 @@
             <useFile>0</useFile>
             <TextAddressRange>0x20000000</TextAddressRange>
             <DataAddressRange>0x20800000</DataAddressRange>
+            <pXoBase></pXoBase>
             <ScatterFile>.\linking_scripts\nuc980.sct</ScatterFile>
             <IncludeLibs></IncludeLibs>
             <IncludeLibsPath></IncludeLibsPath>

+ 0 - 387
bsp/nuvoton/nk-980iot/template.uvprojx

@@ -1,387 +0,0 @@
-<?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>rtthread</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>Nuvoton_ARM9_Series</Device>
-          <Vendor>Nuvoton</Vendor>
-          <Cpu></Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll></FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile></RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile></SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath>Atmel\SAM9260\</RegisterFilePath>
-          <DBRegisterFilePath>Atmel\SAM9260\</DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\build\keil5\</OutputDirectory>
-          <OutputName>rtthread</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\build\keil5\</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>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</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>SARM.DLL</SimDllName>
-          <SimDllArguments>-cAT91SAM9260</SimDllArguments>
-          <SimDlgDll>DARMATS9.DLL</SimDlgDll>
-          <SimDlgDllArguments>-p91SAM9260</SimDlgDllArguments>
-          <TargetDllName>SARM.DLL</TargetDllName>
-          <TargetDllArguments></TargetDllArguments>
-          <TargetDlgDll>TARMATS9.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-p91SAM9260</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>0</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4098</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JLTAgdi.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>ARM926EJ-S</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>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>1</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>0</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>0</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>0x200000</StartAddress>
-                <Size>0x1000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x100000</StartAddress>
-                <Size>0x8000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x800000</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>0x100000</StartAddress>
-                <Size>0x8000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x20800000</StartAddress>
-                <Size>0x1800000</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>0x200000</StartAddress>
-                <Size>0x1000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x300000</StartAddress>
-                <Size>0x1000</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>1</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</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>0</uC99>
-            <uGnu>0</uGnu>
-            <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>--c99</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></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x20000000</TextAddressRange>
-            <DataAddressRange>0x20800000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\linking_scripts\nuc980.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>

+ 46 - 64
bsp/nuvoton/nk-n9h30/.config

@@ -94,17 +94,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -118,10 +109,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -156,6 +143,13 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+CONFIG_FAL_USING_SFUD_PORT=y
+CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -190,6 +184,7 @@ CONFIG_RT_USING_ALARM=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -244,7 +239,7 @@ CONFIG_RT_VCOM_TX_TIMEOUT=1000
 CONFIG_RT_USB_MSTORAGE_DISK_NAME="ramdisk1"
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
@@ -275,14 +270,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
@@ -291,10 +283,6 @@ CONFIG_SAL_INTERNET_CHECK=y
 #
 CONFIG_SAL_USING_LWIP=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -304,14 +292,13 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
 # CONFIG_RT_USING_LWIP141 is not set
 CONFIG_RT_USING_LWIP203=y
 # CONFIG_RT_USING_LWIP212 is not set
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20003
 # CONFIG_RT_USING_LWIP_IPV6 is not set
 CONFIG_RT_LWIP_MEM_ALIGNMENT=4
 CONFIG_RT_LWIP_IGMP=y
@@ -361,18 +348,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=1
 CONFIG_RT_LWIP_STATS=y
 # CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
 CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
 # CONFIG_RT_LWIP_DEBUG is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
-# CONFIG_LWIP_USING_DHCPD is not set
-
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
 
 #
 # Utilities
@@ -384,7 +362,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -398,6 +376,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -408,12 +387,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -467,16 +442,13 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -501,6 +473,22 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -598,6 +586,8 @@ CONFIG_PKG_LV_MUSIC_DEMO_VER="v0.1.1"
 # 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
 
 #
 # system packages
@@ -640,28 +630,12 @@ CONFIG_PKG_LV_MUSIC_DEMO_VER="v0.1.1"
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-CONFIG_FAL_USING_SFUD_PORT=y
-CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
-# CONFIG_PKG_USING_FAL_V10000 is not set
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -692,6 +666,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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
 
 #
 # peripheral libraries and drivers
@@ -715,6 +690,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -771,6 +747,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -789,6 +766,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -839,6 +820,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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
 
 #
 # Hardware Drivers Config
@@ -966,8 +948,8 @@ CONFIG_NU_PKG_USING_UTILS=y
 CONFIG_NU_PKG_USING_NAU8822=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
 CONFIG_NU_PKG_USING_ADC_TOUCH=y
 # CONFIG_NU_PKG_USING_ADC_TOUCH_SW is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.nk-n9h30.test.utest."

+ 3 - 3
bsp/nuvoton/nk-n9h30/README.md

@@ -43,13 +43,13 @@ Nuvoton offers HMI platforms which are embedded with Nuvoton N9H MPU.  The N9H s
 |SPI NOR flash | W25Q256JVEQ (32 MB) | Supported |
 
 ## 2. Supported compiler
-Support GCC, MDK4 and MDK5 IDE/compilers. More information of these compiler version as following:
+Support GCC and MDK IDE/compilers. More information of these compiler version as following:
 | IDE/Compiler  | Tested version            |
 | ---------- | ---------------------------- |
-| MDK5       | 5.26.2                       |
+| MDK        | uVision 5.25.2               |
 | GCC        | 6-2017-q1-update             |
 
-Notice: Please install ICE driver for development.
+Notice: Please install ICE driver for development and [NuMicro_ARM9_Device_Database_Keil](https://www.nuvoton.com/resource-download.jsp?tp_GUID=SW1820201207155701).
 
 ## 3. Program firmware
 ### 3.1 SDRAM Downloading using NuWriter

+ 7 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h

@@ -13,6 +13,8 @@
 
 #include "rtconfig.h"
 
+#define LV_VERSION_EQUAL(x,y,z) (x == LVGL_VERSION_MAJOR && y==LVGL_VERSION_MINOR  && z==LVGL_VERSION_PATCH )
+
 //#define LV_USE_GPU_N9H30_GE2D   1
 
 #define LV_COLOR_DEPTH                  BSP_LCD_BPP
@@ -23,8 +25,13 @@
 #define LV_FONT_MONTSERRAT_16           1
 #define LV_USE_PERF_MONITOR             1
 
+#if LV_VERSION_EQUAL(8, 1, 0)		
 #define LV_USE_DEMO_RTT_MUSIC           1
 #define LV_DEMO_RTT_MUSIC_AUTO_PLAY     1
+#else
+#define LV_USE_DEMO_MUSIC           1
+#define LV_DEMO_MUSIC_AUTO_PLAY     1
+#endif
 
 //#define LV_DISP_DEF_REFR_PERIOD         16
 

+ 4 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c

@@ -135,6 +135,7 @@ static void nu_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t
     lv_disp_flush_ready(disp_drv);
 }
 
+#if LV_VERSION_EQUAL(8, 1, 0)
 static void nu_fill_cb(struct _lv_disp_drv_t *disp_drv, lv_color_t *dest_buf, lv_coord_t dest_width,
                        const lv_area_t *fill_area, lv_color_t color)
 {
@@ -185,6 +186,7 @@ static void nu_fill_cb(struct _lv_disp_drv_t *disp_drv, lv_color_t *dest_buf, lv
         // -> Leave GE2D
     }
 }
+#endif
 
 void nu_perf_monitor(struct _lv_disp_drv_t *disp_drv, uint32_t time, uint32_t px)
 {
@@ -271,8 +273,10 @@ void lv_port_disp_init(void)
     /*Set a display buffer*/
     disp_drv.draw_buf = &disp_buf;
 
+#if LV_VERSION_EQUAL(8, 1, 0)		
     /*Fill a memory with a color (GPU only)*/
     disp_drv.gpu_fill_cb = nu_fill_cb;
+#endif
 
     /*Called after every refresh cycle to tell the rendering and flushing time + the number of flushed pixels*/
     //disp_drv.monitor_cb = nu_perf_monitor;

+ 18 - 35
bsp/nuvoton/nk-n9h30/rtconfig.h

@@ -59,14 +59,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -78,9 +72,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -104,6 +95,12 @@
 #define RT_DFS_ELM_REENTRANT
 #define RT_DFS_ELM_MUTEX_TIMEOUT 3000
 #define RT_USING_DFS_DEVFS
+#define RT_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
+#define FAL_USING_SFUD_PORT
+#define FAL_USING_NOR_FLASH_DEV_NAME "norflash0"
 
 /* Device Drivers */
 
@@ -160,7 +157,7 @@
 #define RT_VCOM_TX_TIMEOUT 1000
 #define RT_USB_MSTORAGE_DISK_NAME "ramdisk1"
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -176,9 +173,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 #define SAL_INTERNET_CHECK
@@ -187,9 +183,6 @@
 
 #define SAL_USING_LWIP
 #define SAL_USING_POSIX
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -197,11 +190,9 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
 #define RT_USING_LWIP
 #define RT_USING_LWIP203
+#define RT_USING_LWIP_VER_NUM 0x20003
 #define RT_LWIP_MEM_ALIGNMENT 4
 #define RT_LWIP_IGMP
 #define RT_LWIP_ICMP
@@ -244,12 +235,6 @@
 #define RT_LWIP_STATS
 #define RT_LWIP_USING_PING
 
-/* AT commands */
-
-
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -280,6 +265,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -315,14 +305,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define RT_USING_FAL
-#define FAL_DEBUG_CONFIG
-#define FAL_DEBUG 1
-#define FAL_PART_HAS_TABLE_CFG
-#define FAL_USING_SFUD_PORT
-#define FAL_USING_NOR_FLASH_DEV_NAME "norflash0"
-#define RT_USING_FAL_LATEST_VERSION
-#define PKG_FAL_VER_NUM 0x99999
 #define PKG_USING_RAMDISK
 #define PKG_USING_RAMDISK_LATEST_VERSION
 
@@ -334,6 +316,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -420,7 +404,6 @@
 
 #define NU_PKG_USING_UTILS
 #define NU_PKG_USING_NAU8822
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.nk-n9h30.test.utest."
+#define NU_PKG_USING_ADC_TOUCH
 
 #endif

+ 41 - 12
bsp/nuvoton/nk-n9h30/template.uvproj

@@ -10,11 +10,13 @@
       <TargetName>rtthread</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>Nuvoton_ARM9_Series</Device>
           <Vendor>Nuvoton</Vendor>
-          <Cpu></Cpu>
+          <Cpu>IRAM(0x0-0x0) CLOCK(000000000) CPUTYPE(ARM926EJ-S)</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
           <FlashDriverDll></FlashDriverDll>
@@ -30,6 +32,7 @@
           <SLE66AMisc></SLE66AMisc>
           <SLE66LinkerMisc></SLE66LinkerMisc>
           <SFDFile></SFDFile>
+          <bCustSvd>0</bCustSvd>
           <UseEnv>0</UseEnv>
           <BinPath></BinPath>
           <IncludePath></IncludePath>
@@ -43,7 +46,7 @@
             <NotGenerated>0</NotGenerated>
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputDirectory>.\build\keil4\</OutputDirectory>
           <OutputName>rtthread</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
@@ -71,14 +74,18 @@
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
+            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
           </AfterMake>
           <SelectedForBatchBuild>0</SelectedForBatchBuild>
           <SVCSIdString></SVCSIdString>
@@ -97,6 +104,7 @@
           <StopOnExitCode>3</StopOnExitCode>
           <CustomArgument></CustomArgument>
           <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
         </CommonProperty>
         <DllOption>
           <SimDllName>SARM.DLL</SimDllName>
@@ -126,6 +134,7 @@
             <RestoreFunctions>1</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+            <RestoreSysVw>1</RestoreSysVw>
           </Simulator>
           <Target>
             <UseTarget>1</UseTarget>
@@ -137,9 +146,10 @@
             <RestoreFunctions>0</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <RestoreTracepoints>1</RestoreTracepoints>
+            <RestoreSysVw>1</RestoreSysVw>
           </Target>
           <RunDebugAfterBuild>0</RunDebugAfterBuild>
-          <TargetSelection>6</TargetSelection>
+          <TargetSelection>18</TargetSelection>
           <SimDlls>
             <CpuDll></CpuDll>
             <CpuDllArguments></CpuDllArguments>
@@ -152,7 +162,7 @@
             <CpuDllArguments></CpuDllArguments>
             <PeripheralDll></PeripheralDll>
             <PeripheralDllArguments></PeripheralDllArguments>
-            <InitializationFile>..\libraries\nuc980\Script\NUC980xx61.ini</InitializationFile>
+            <InitializationFile>..\libraries\n9h30\Script\InitDDR2.ini</InitializationFile>
             <Driver>Segger\JLTAgdi.dll</Driver>
           </TargetDlls>
         </DebugOption>
@@ -167,8 +177,12 @@
           </Flash1>
           <bUseTDR>0</bUseTDR>
           <Flash2>Segger\JLTAgdi.dll</Flash2>
-          <Flash3>"" ()</Flash3>
+          <Flash3></Flash3>
           <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
         </Utilities>
         <TargetArmAds>
           <ArmAdsMisc>
@@ -199,22 +213,24 @@
             <AdsLsxf>1</AdsLsxf>
             <RvctClst>0</RvctClst>
             <GenPPlst>0</GenPPlst>
-            <AdsCpuType></AdsCpuType>
+            <AdsCpuType>ARM926EJ-S</AdsCpuType>
             <RvctDeviceName></RvctDeviceName>
             <mOS>0</mOS>
             <uocRom>0</uocRom>
             <uocRam>0</uocRam>
             <hadIROM>0</hadIROM>
-            <hadIRAM>0</hadIRAM>
+            <hadIRAM>1</hadIRAM>
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>0</StupSel>
             <useUlib>0</useUlib>
             <EndSel>0</EndSel>
             <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
             <RoSelD>3</RoSelD>
             <RwSelD>3</RwSelD>
             <CodeSel>0</CodeSel>
@@ -267,8 +283,8 @@
               </Ocm6>
               <IRAM>
                 <Type>0</Type>
-                <StartAddress>0x200000</StartAddress>
-                <Size>0x1000</Size>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1</Size>
               </IRAM>
               <IROM>
                 <Type>1</Type>
@@ -323,7 +339,7 @@
               <OCR_RVCT9>
                 <Type>0</Type>
                 <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
+                <Size>0x1</Size>
               </OCR_RVCT9>
               <OCR_RVCT10>
                 <Type>0</Type>
@@ -347,6 +363,16 @@
             <wLevel>2</wLevel>
             <uThumb>0</uThumb>
             <uSurpInc>0</uSurpInc>
+            <uC99>0</uC99>
+            <uGnu>0</uGnu>
+            <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>--c99</MiscControls>
               <Define>RT_USING_INTERRUPT_INFO</Define>
@@ -363,6 +389,8 @@
             <SwStkChk>0</SwStkChk>
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
@@ -379,6 +407,7 @@
             <useFile>0</useFile>
             <TextAddressRange>0x20000000</TextAddressRange>
             <DataAddressRange>0x20800000</DataAddressRange>
+            <pXoBase></pXoBase>
             <ScatterFile>.\linking_scripts\n9h30.sct</ScatterFile>
             <IncludeLibs></IncludeLibs>
             <IncludeLibsPath></IncludeLibsPath>

+ 0 - 387
bsp/nuvoton/nk-n9h30/template.uvprojx

@@ -1,387 +0,0 @@
-<?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>rtthread</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>Nuvoton_ARM9_Series</Device>
-          <Vendor>Nuvoton</Vendor>
-          <Cpu></Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll></FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile></RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile></SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath>Atmel\SAM9260\</RegisterFilePath>
-          <DBRegisterFilePath>Atmel\SAM9260\</DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\build\keil5\</OutputDirectory>
-          <OutputName>rtthread</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\build\keil5\</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>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</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>SARM.DLL</SimDllName>
-          <SimDllArguments>-cAT91SAM9260</SimDllArguments>
-          <SimDlgDll>DARMATS9.DLL</SimDlgDll>
-          <SimDlgDllArguments>-p91SAM9260</SimDlgDllArguments>
-          <TargetDllName>SARM.DLL</TargetDllName>
-          <TargetDllArguments></TargetDllArguments>
-          <TargetDlgDll>TARMATS9.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-p91SAM9260</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>0</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4098</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JLTAgdi.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>ARM926EJ-S</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>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>1</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>0</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>0</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>0x200000</StartAddress>
-                <Size>0x1000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x100000</StartAddress>
-                <Size>0x8000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x800000</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>0x100000</StartAddress>
-                <Size>0x8000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x20800000</StartAddress>
-                <Size>0x1800000</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>0x200000</StartAddress>
-                <Size>0x1000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x300000</StartAddress>
-                <Size>0x1000</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>1</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</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>0</uC99>
-            <uGnu>0</uGnu>
-            <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>--c99</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></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x20000000</TextAddressRange>
-            <DataAddressRange>0x20800000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\linking_scripts\n9h30.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>

+ 48 - 63
bsp/nuvoton/nk-rtu980/.config

@@ -94,17 +94,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -118,10 +109,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -156,6 +143,13 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+CONFIG_FAL_USING_SFUD_PORT=y
+CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -190,6 +184,7 @@ CONFIG_RT_USING_RTC=y
 CONFIG_RT_USING_SOFT_RTC=y
 # CONFIG_RT_USING_SDIO is not set
 CONFIG_RT_USING_SPI=y
+# CONFIG_RT_USING_SPI_BITOPS is not set
 CONFIG_RT_USING_QSPI=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -262,7 +257,7 @@ CONFIG_RT_VCOM_TX_TIMEOUT=1000
 CONFIG_RT_USB_MSTORAGE_DISK_NAME="ramdisk1"
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
@@ -293,14 +288,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 # CONFIG_SAL_INTERNET_CHECK is not set
 
@@ -309,10 +301,6 @@ CONFIG_RT_USING_SAL=y
 #
 CONFIG_SAL_USING_LWIP=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -322,14 +310,13 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
 # CONFIG_RT_USING_LWIP141 is not set
 # CONFIG_RT_USING_LWIP203 is not set
 CONFIG_RT_USING_LWIP212=y
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20102
 # CONFIG_RT_USING_LWIP_IPV6 is not set
 CONFIG_RT_LWIP_MEM_ALIGNMENT=4
 CONFIG_RT_LWIP_IGMP=y
@@ -379,18 +366,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=1
 CONFIG_RT_LWIP_STATS=y
 # CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
 CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
 # CONFIG_RT_LWIP_DEBUG is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
-# CONFIG_LWIP_USING_DHCPD is not set
-
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
 
 #
 # Utilities
@@ -402,7 +380,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -416,6 +394,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -426,12 +405,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -501,16 +476,13 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -535,6 +507,22 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -622,6 +610,8 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # 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
 
 #
 # system packages
@@ -664,27 +654,12 @@ CONFIG_PKG_NETUTILS_VER_NUM=0x99999
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-CONFIG_FAL_USING_SFUD_PORT=y
-CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -715,6 +690,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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
 
 #
 # peripheral libraries and drivers
@@ -738,6 +714,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -794,6 +771,7 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -812,6 +790,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -848,6 +830,7 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
@@ -865,6 +848,7 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
 
 #
 # Hardware Drivers Config
@@ -978,6 +962,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.nk-rtu980.test.utest."

+ 4 - 6
bsp/nuvoton/nk-rtu980/README.md

@@ -44,15 +44,13 @@ NuMaker-RTU-NUC980, also known as Chili, is a Nuvoton’s development platform t
 |VCOM | For console | Ready.(Need to install VCOM driver) |
 
 ## 2. Supported compiler
-Support GCC, MDK4 and MDK5 IDE/compilers. More information of these compiler version as following:
-
+Support GCC and MDK IDE/compilers. More information of these compiler version as following:
 | IDE/Compiler  | Tested version            |
 | ---------- | ---------------------------- |
-| MDK4       | 4.76                         |
-| MDK5       | 5.26.2                       |
-| GCC        | GCC 5.4.1 20160919 (release) |
+| MDK        | uVision 5.25.2               |
+| GCC        | 6-2017-q1-update             |
 
-Notice: Please install ICE driver for development.
+Notice: Please install ICE driver for development and [NuMicro_ARM9_Device_Database_Keil](https://www.nuvoton.com/resource-download.jsp?tp_GUID=SW1820201207155701).
 
 ## 3. Program firmware
 ### 3.1 SDRAM Downloading using NuWriter

+ 17 - 35
bsp/nuvoton/nk-rtu980/rtconfig.h

@@ -58,14 +58,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -77,9 +71,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -103,6 +94,12 @@
 #define RT_DFS_ELM_REENTRANT
 #define RT_DFS_ELM_MUTEX_TIMEOUT 3000
 #define RT_USING_DFS_DEVFS
+#define RT_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
+#define FAL_USING_SFUD_PORT
+#define FAL_USING_NOR_FLASH_DEV_NAME "norflash0"
 
 /* Device Drivers */
 
@@ -171,7 +168,7 @@
 #define RT_VCOM_TX_TIMEOUT 1000
 #define RT_USB_MSTORAGE_DISK_NAME "ramdisk1"
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -187,9 +184,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 
@@ -197,9 +193,6 @@
 
 #define SAL_USING_LWIP
 #define SAL_USING_POSIX
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -207,11 +200,9 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
 #define RT_USING_LWIP
 #define RT_USING_LWIP212
+#define RT_USING_LWIP_VER_NUM 0x20102
 #define RT_LWIP_MEM_ALIGNMENT 4
 #define RT_LWIP_IGMP
 #define RT_LWIP_ICMP
@@ -255,12 +246,6 @@
 #define RT_LWIP_STATS
 #define RT_LWIP_USING_PING
 
-/* AT commands */
-
-
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -303,6 +288,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -334,14 +324,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define RT_USING_FAL
-#define FAL_DEBUG_CONFIG
-#define FAL_DEBUG 1
-#define FAL_PART_HAS_TABLE_CFG
-#define FAL_USING_SFUD_PORT
-#define FAL_USING_NOR_FLASH_DEV_NAME "norflash0"
-#define RT_USING_FAL_LATEST_VERSION
-#define PKG_FAL_VER_NUM 0x99999
 #define PKG_USING_RAMDISK
 #define PKG_USING_RAMDISK_LATEST_VERSION
 
@@ -353,6 +335,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -429,7 +413,5 @@
 
 #define NU_PKG_USING_UTILS
 #define NU_PKG_USING_DEMO
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.nk-rtu980.test.utest."
 
 #endif

+ 43 - 14
bsp/nuvoton/nk-rtu980/template.uvproj

@@ -10,11 +10,13 @@
       <TargetName>rtthread</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>Nuvoton_ARM9_Series</Device>
           <Vendor>Nuvoton</Vendor>
-          <Cpu></Cpu>
+          <Cpu>IRAM(0x0-0x0) CLOCK(000000000) CPUTYPE(ARM926EJ-S)</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
           <FlashDriverDll></FlashDriverDll>
@@ -30,6 +32,7 @@
           <SLE66AMisc></SLE66AMisc>
           <SLE66LinkerMisc></SLE66LinkerMisc>
           <SFDFile></SFDFile>
+          <bCustSvd>0</bCustSvd>
           <UseEnv>0</UseEnv>
           <BinPath></BinPath>
           <IncludePath></IncludePath>
@@ -43,14 +46,14 @@
             <NotGenerated>0</NotGenerated>
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputDirectory>.\build\keil4\</OutputDirectory>
           <OutputName>rtthread</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>0</CreateHexFile>
           <DebugInformation>1</DebugInformation>
           <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
+          <ListingPath>.\build\keil4\</ListingPath>
           <HexFormatSelection>1</HexFormatSelection>
           <Merge32K>0</Merge32K>
           <CreateBatchFile>0</CreateBatchFile>
@@ -71,14 +74,18 @@
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
+            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
           </AfterMake>
           <SelectedForBatchBuild>0</SelectedForBatchBuild>
           <SVCSIdString></SVCSIdString>
@@ -97,6 +104,7 @@
           <StopOnExitCode>3</StopOnExitCode>
           <CustomArgument></CustomArgument>
           <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
         </CommonProperty>
         <DllOption>
           <SimDllName>SARM.DLL</SimDllName>
@@ -118,7 +126,7 @@
           </OPTHX>
           <Simulator>
             <UseSimulator>0</UseSimulator>
-            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <LoadApplicationAtStartup>0</LoadApplicationAtStartup>
             <RunToMain>1</RunToMain>
             <RestoreBreakpoints>1</RestoreBreakpoints>
             <RestoreWatchpoints>1</RestoreWatchpoints>
@@ -126,10 +134,11 @@
             <RestoreFunctions>1</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+            <RestoreSysVw>1</RestoreSysVw>
           </Simulator>
           <Target>
             <UseTarget>1</UseTarget>
-            <LoadApplicationAtStartup>0</LoadApplicationAtStartup>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
             <RunToMain>0</RunToMain>
             <RestoreBreakpoints>1</RestoreBreakpoints>
             <RestoreWatchpoints>1</RestoreWatchpoints>
@@ -137,9 +146,10 @@
             <RestoreFunctions>0</RestoreFunctions>
             <RestoreToolbox>1</RestoreToolbox>
             <RestoreTracepoints>1</RestoreTracepoints>
+            <RestoreSysVw>1</RestoreSysVw>
           </Target>
           <RunDebugAfterBuild>0</RunDebugAfterBuild>
-          <TargetSelection>6</TargetSelection>
+          <TargetSelection>18</TargetSelection>
           <SimDlls>
             <CpuDll></CpuDll>
             <CpuDllArguments></CpuDllArguments>
@@ -167,8 +177,12 @@
           </Flash1>
           <bUseTDR>0</bUseTDR>
           <Flash2>Segger\JLTAgdi.dll</Flash2>
-          <Flash3>"" ()</Flash3>
+          <Flash3></Flash3>
           <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
         </Utilities>
         <TargetArmAds>
           <ArmAdsMisc>
@@ -199,22 +213,24 @@
             <AdsLsxf>1</AdsLsxf>
             <RvctClst>0</RvctClst>
             <GenPPlst>0</GenPPlst>
-            <AdsCpuType></AdsCpuType>
+            <AdsCpuType>ARM926EJ-S</AdsCpuType>
             <RvctDeviceName></RvctDeviceName>
             <mOS>0</mOS>
             <uocRom>0</uocRom>
             <uocRam>0</uocRam>
             <hadIROM>0</hadIROM>
-            <hadIRAM>0</hadIRAM>
+            <hadIRAM>1</hadIRAM>
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>0</StupSel>
             <useUlib>0</useUlib>
             <EndSel>0</EndSel>
             <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
             <RoSelD>3</RoSelD>
             <RwSelD>3</RwSelD>
             <CodeSel>0</CodeSel>
@@ -267,8 +283,8 @@
               </Ocm6>
               <IRAM>
                 <Type>0</Type>
-                <StartAddress>0x200000</StartAddress>
-                <Size>0x1000</Size>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x1</Size>
               </IRAM>
               <IROM>
                 <Type>1</Type>
@@ -323,7 +339,7 @@
               <OCR_RVCT9>
                 <Type>0</Type>
                 <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
+                <Size>0x1</Size>
               </OCR_RVCT9>
               <OCR_RVCT10>
                 <Type>0</Type>
@@ -347,6 +363,16 @@
             <wLevel>2</wLevel>
             <uThumb>0</uThumb>
             <uSurpInc>0</uSurpInc>
+            <uC99>0</uC99>
+            <uGnu>0</uGnu>
+            <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>--c99</MiscControls>
               <Define>RT_USING_INTERRUPT_INFO</Define>
@@ -363,6 +389,8 @@
             <SwStkChk>0</SwStkChk>
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
@@ -379,6 +407,7 @@
             <useFile>0</useFile>
             <TextAddressRange>0x20000000</TextAddressRange>
             <DataAddressRange>0x20800000</DataAddressRange>
+            <pXoBase></pXoBase>
             <ScatterFile>.\linking_scripts\nuc980.sct</ScatterFile>
             <IncludeLibs></IncludeLibs>
             <IncludeLibsPath></IncludeLibsPath>

+ 45 - 63
bsp/nuvoton/numaker-iot-m487/.config

@@ -7,7 +7,6 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
-# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -94,17 +93,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -118,10 +108,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -155,6 +141,12 @@ CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
 CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -194,6 +186,7 @@ CONFIG_RT_USING_RTC=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -275,7 +268,7 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # CONFIG_RT_USB_DEVICE_HID_MEDIA is not set
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
@@ -306,14 +299,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
@@ -322,10 +312,6 @@ CONFIG_SAL_INTERNET_CHECK=y
 #
 CONFIG_SAL_USING_AT=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -335,15 +321,7 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 # CONFIG_RT_USING_LWIP is not set
-
-#
-# AT commands
-#
 CONFIG_RT_USING_AT=y
 # CONFIG_AT_DEBUG is not set
 # CONFIG_AT_USING_SERVER is not set
@@ -355,11 +333,6 @@ CONFIG_AT_USING_CLI=y
 CONFIG_AT_CMD_MAX_LEN=512
 CONFIG_AT_SW_VERSION_NUM=0x10301
 
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
-
 #
 # Utilities
 #
@@ -370,7 +343,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -384,6 +357,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -394,12 +368,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -473,6 +443,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
 # 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
@@ -486,16 +457,13 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -520,6 +488,22 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -607,6 +591,8 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # system packages
@@ -649,26 +635,12 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-# CONFIG_FAL_USING_SFUD_PORT is not set
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -694,7 +666,8 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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_USB_STACK is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
 
 #
 # peripheral libraries and drivers
@@ -718,6 +691,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -774,6 +748,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -792,6 +767,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -824,6 +803,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
@@ -841,6 +821,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
 
 #
 # Hardware Drivers Config
@@ -980,6 +961,7 @@ CONFIG_NU_PKG_USING_NAU88L25=y
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.numaker-iot-m487.test.utest."

+ 14 - 33
bsp/nuvoton/numaker-iot-m487/rtconfig.h

@@ -57,14 +57,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -76,9 +70,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -101,6 +92,10 @@
 #define RT_DFS_ELM_REENTRANT
 #define RT_DFS_ELM_MUTEX_TIMEOUT 3000
 #define RT_USING_DFS_DEVFS
+#define RT_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
 
 /* Device Drivers */
 
@@ -178,7 +173,7 @@
 #define RT_USB_DEVICE_HID
 #define RT_USB_DEVICE_HID_MOUSE
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -194,9 +189,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 #define SAL_INTERNET_CHECK
@@ -205,9 +199,6 @@
 
 #define SAL_USING_AT
 #define SAL_USING_POSIX
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -215,12 +206,6 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
-
-/* AT commands */
-
 #define RT_USING_AT
 #define AT_USING_CLIENT
 #define AT_CLIENT_NUM_MAX 1
@@ -229,9 +214,6 @@
 #define AT_CMD_MAX_LEN 512
 #define AT_SW_VERSION_NUM 0x10301
 
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -268,6 +250,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -299,12 +286,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define PKG_USING_FAL
-#define FAL_DEBUG_CONFIG
-#define FAL_DEBUG 1
-#define FAL_PART_HAS_TABLE_CFG
-#define PKG_USING_FAL_LATEST_VERSION
-#define PKG_FAL_VER_NUM 0x99999
 
 /* peripheral libraries and drivers */
 
@@ -314,6 +295,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -398,7 +381,5 @@
 #define NU_PKG_USING_DEMO
 #define NU_PKG_USING_BMX055
 #define NU_PKG_USING_NAU88L25
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.numaker-iot-m487.test.utest."
 
 #endif

+ 61 - 65
bsp/nuvoton/numaker-m032ki/.config

@@ -7,7 +7,6 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
-# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -96,17 +95,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -120,10 +110,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -135,6 +121,8 @@ CONFIG_DFS_FD_MAX=16
 CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
+# CONFIG_RT_USING_FAL is not set
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -199,9 +187,8 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # CONFIG_RT_USB_DEVICE_HID_MEDIA is not set
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
 #
@@ -210,7 +197,9 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # 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)
@@ -222,36 +211,16 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 # CONFIG_RT_USING_SAL is not set
-
-#
-# Network interface device
-#
 # CONFIG_RT_USING_NETDEV is not set
-
-#
-# light weight TCP/IP stack
-#
 # CONFIG_RT_USING_LWIP is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
 
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
-
 #
 # Utilities
 #
@@ -262,7 +231,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -300,6 +269,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 #
 # 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
@@ -310,12 +280,8 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -355,6 +321,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
 # 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
@@ -368,16 +335,13 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -402,6 +366,22 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -446,6 +426,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
 
 #
 # tools packages
@@ -456,7 +437,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
 # CONFIG_PKG_USING_SEGGER_RTT is not set
 # CONFIG_PKG_USING_RDB is not set
-# CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
 # CONFIG_PKG_USING_ULOG_FILE is not set
 # CONFIG_PKG_USING_LOGMGR is not set
@@ -489,6 +469,8 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
 
 #
 # system packages
@@ -507,6 +489,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_POSIX_GETLINE is not set
 # CONFIG_PKG_USING_POSIX_WCWIDTH is not set
 # CONFIG_PKG_USING_POSIX_ITOA is not set
+# CONFIG_PKG_USING_POSIX_STRINGS is not set
 
 #
 # acceleration: Assembly language or algorithmic acceleration packages
@@ -530,12 +513,11 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE 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_FAL is not set
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -561,7 +543,8 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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_USB_STACK is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
 
 #
 # peripheral libraries and drivers
@@ -585,6 +568,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -618,6 +602,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
@@ -640,6 +625,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -658,6 +644,10 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -690,6 +680,7 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
@@ -705,19 +696,9 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_LWGPS is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
 # CONFIG_PKG_USING_DESIGN_PATTERN is not set
-
-#
-# Nuvoton Packages Config
-#
-CONFIG_NU_PKG_USING_UTILS=y
-CONFIG_NU_PKG_USING_DEMO=y
-# CONFIG_NU_PKG_USING_BMX055 is not set
-# CONFIG_NU_PKG_USING_MAX31875 is not set
-# CONFIG_NU_PKG_USING_NAU88L25 is not set
-# CONFIG_NU_PKG_USING_NAU8822 is not set
-# CONFIG_NU_PKG_USING_DA9062 is not set
-# CONFIG_NU_PKG_USING_ILI9341 is not set
-# CONFIG_NU_PKG_USING_SPINAND 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
 
 #
 # Hardware Drivers Config
@@ -797,5 +778,20 @@ CONFIG_BSP_USING_NULINKME=y
 # Board extended module drivers
 #
 # CONFIG_BOARD_USING_STORAGE_SPIFLASH is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.numaker-m032ki.test.utest."
+# CONFIG_BOARD_USING_LCD_ILI9341 is not set
+
+#
+# Nuvoton Packages Config
+#
+CONFIG_NU_PKG_USING_UTILS=y
+CONFIG_NU_PKG_USING_DEMO=y
+# CONFIG_NU_PKG_USING_BMX055 is not set
+# CONFIG_NU_PKG_USING_MAX31875 is not set
+# CONFIG_NU_PKG_USING_NAU88L25 is not set
+# CONFIG_NU_PKG_USING_NAU8822 is not set
+# CONFIG_NU_PKG_USING_DA9062 is not set
+# CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
+# CONFIG_NU_PKG_USING_SPINAND is not set

+ 15 - 32
bsp/nuvoton/numaker-m032ki/rtconfig.h

@@ -57,14 +57,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -76,9 +70,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -115,7 +106,7 @@
 #define RT_USB_DEVICE_HID
 #define RT_USB_DEVICE_HID_MOUSE
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -127,21 +118,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
-
-/* Socket abstraction layer */
-
-
-/* Network interface device */
-
-
-/* light weight TCP/IP stack */
-
-
-/* AT commands */
 
-
-/* VBUS(Virtual Software BUS) */
+/* Network */
 
 
 /* Utilities */
@@ -186,6 +164,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -226,17 +209,14 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
 /* entertainment: terminal games and other interesting software packages */
 
 
-/* Nuvoton Packages Config */
-
-#define NU_PKG_USING_UTILS
-#define NU_PKG_USING_DEMO
-
 /* Hardware Drivers Config */
 
 /* On-chip Peripheral Drivers */
@@ -282,7 +262,10 @@
 
 /* Board extended module drivers */
 
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.numaker-m032ki.test.utest."
+
+/* Nuvoton Packages Config */
+
+#define NU_PKG_USING_UTILS
+#define NU_PKG_USING_DEMO
 
 #endif

+ 49 - 63
bsp/nuvoton/numaker-m2354/.config

@@ -7,7 +7,6 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
-# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -91,17 +90,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -115,10 +105,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -152,6 +138,11 @@ CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
 CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
 
 #
 # Device Drivers
@@ -191,6 +182,7 @@ CONFIG_RT_USING_RTC=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -272,9 +264,8 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # CONFIG_RT_USB_DEVICE_HID_MEDIA is not set
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
 #
@@ -290,7 +281,9 @@ CONFIG_RT_USING_POSIX_SELECT=y
 # CONFIG_RT_USING_POSIX_MMAN 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)
@@ -302,14 +295,11 @@ CONFIG_RT_USING_POSIX_SELECT=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
@@ -318,10 +308,6 @@ CONFIG_SAL_INTERNET_CHECK=y
 #
 CONFIG_SAL_USING_AT=y
 CONFIG_SAL_USING_POSIX=y
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -331,15 +317,7 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 # CONFIG_RT_USING_LWIP is not set
-
-#
-# AT commands
-#
 CONFIG_RT_USING_AT=y
 # CONFIG_AT_DEBUG is not set
 # CONFIG_AT_USING_SERVER is not set
@@ -351,11 +329,6 @@ CONFIG_AT_USING_CLI=y
 CONFIG_AT_CMD_MAX_LEN=2048
 CONFIG_AT_SW_VERSION_NUM=0x10301
 
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
-
 #
 # Utilities
 #
@@ -366,6 +339,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -379,6 +353,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -389,12 +364,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -423,7 +394,9 @@ CONFIG_PKG_AT_DEVICE_PATH="/packages/iot/at_device"
 # CONFIG_AT_DEVICE_USING_ESP32 is not set
 CONFIG_AT_DEVICE_USING_ESP8266=y
 CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
+CONFIG_AT_DEVICE_ESP8266_SOCKET=y
 # CONFIG_AT_DEVICE_ESP8266_SAMPLE is not set
+# CONFIG_AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER is not set
 # CONFIG_AT_DEVICE_USING_RW007 is not set
 # CONFIG_AT_DEVICE_USING_SIM800C is not set
 # CONFIG_AT_DEVICE_USING_SIM76XX is not set
@@ -466,6 +439,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
 # 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
@@ -479,16 +453,13 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -513,6 +484,22 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -600,6 +587,8 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # system packages
@@ -642,25 +631,11 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-# CONFIG_FAL_USING_SFUD_PORT is not set
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -686,7 +661,8 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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_USB_STACK is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
 
 #
 # peripheral libraries and drivers
@@ -710,6 +686,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -766,6 +743,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -784,6 +762,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -816,6 +798,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
@@ -833,6 +816,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
 
 #
 # Hardware Drivers Config
@@ -937,6 +921,7 @@ CONFIG_BOARD_USING_OTG=y
 #
 # Board extended module drivers
 #
+# CONFIG_BOARD_USING_LCD_ILI9341 is not set
 CONFIG_BOARD_USING_SEGMENT_LCD=y
 
 #
@@ -950,6 +935,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.numaker-m2354.test.utest."

+ 15 - 33
bsp/nuvoton/numaker-m2354/rtconfig.h

@@ -53,14 +53,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -72,9 +66,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -97,6 +88,10 @@
 #define RT_DFS_ELM_REENTRANT
 #define RT_DFS_ELM_MUTEX_TIMEOUT 3000
 #define RT_USING_DFS_DEVFS
+#define RT_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
 
 /* Device Drivers */
 
@@ -176,7 +171,7 @@
 #define RT_USB_DEVICE_HID
 #define RT_USB_DEVICE_HID_MOUSE
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -192,9 +187,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 #define SAL_INTERNET_CHECK
@@ -203,9 +197,6 @@
 
 #define SAL_USING_AT
 #define SAL_USING_POSIX
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -213,12 +204,6 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
-
-/* AT commands */
-
 #define RT_USING_AT
 #define AT_USING_CLIENT
 #define AT_CLIENT_NUM_MAX 1
@@ -227,9 +212,6 @@
 #define AT_CMD_MAX_LEN 2048
 #define AT_SW_VERSION_NUM 0x10301
 
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -254,6 +236,7 @@
 #define PKG_USING_AT_DEVICE
 #define AT_DEVICE_USING_ESP8266
 #define AT_DEVICE_ESP8266_INIT_ASYN
+#define AT_DEVICE_ESP8266_SOCKET
 #define PKG_USING_AT_DEVICE_LATEST_VERSION
 #define PKG_AT_DEVICE_VER_NUM 0x99999
 
@@ -265,6 +248,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -296,12 +284,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define RT_USING_FAL
-#define FAL_DEBUG_CONFIG
-#define FAL_DEBUG 1
-#define FAL_PART_HAS_TABLE_CFG
-#define RT_USING_FAL_LATEST_VERSION
-#define PKG_FAL_VER_NUM 0x99999
 
 /* peripheral libraries and drivers */
 
@@ -311,6 +293,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -379,7 +363,5 @@
 
 #define NU_PKG_USING_UTILS
 #define NU_PKG_USING_DEMO
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.numaker-m2354.test.utest."
 
 #endif

+ 49 - 64
bsp/nuvoton/numaker-pfm-m487/.config

@@ -7,7 +7,6 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
-# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -94,17 +93,8 @@ CONFIG_RT_USING_USER_MAIN=y
 CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # CONFIG_RT_USING_LEGACY is not set
-
-#
-# C++ features
-#
-# CONFIG_RT_USING_CPLUSPLUS is not set
-
-#
-# Command shell
-#
-CONFIG_RT_USING_FINSH=y
 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
@@ -118,10 +108,6 @@ 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
-
-#
-# Device virtual file system
-#
 CONFIG_RT_USING_DFS=y
 CONFIG_DFS_USING_POSIX=y
 CONFIG_DFS_USING_WORKDIR=y
@@ -156,6 +142,12 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+# CONFIG_RT_USING_LWP is not set
 
 #
 # Device Drivers
@@ -195,6 +187,7 @@ CONFIG_RT_USING_RTC=y
 # CONFIG_RT_USING_SOFT_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=y
 # CONFIG_RT_USING_SPI_MSD is not set
 CONFIG_RT_USING_SFUD=y
@@ -277,7 +270,7 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # CONFIG_RT_USB_DEVICE_HID_MEDIA is not set
 
 #
-# POSIX layer and C standard library
+# C/C++ and POSIX layer
 #
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
@@ -308,14 +301,11 @@ CONFIG_RT_USING_POSIX_DEVIO=y
 #
 # Socket is in the 'Network' category
 #
+# CONFIG_RT_USING_CPLUSPLUS is not set
 
 #
 # Network
 #
-
-#
-# Socket abstraction layer
-#
 CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
@@ -325,10 +315,6 @@ CONFIG_SAL_INTERNET_CHECK=y
 CONFIG_SAL_USING_LWIP=y
 # CONFIG_SAL_USING_POSIX is not set
 CONFIG_SAL_SOCKETS_NUM=16
-
-#
-# Network interface device
-#
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -338,14 +324,13 @@ CONFIG_NETDEV_USING_AUTO_DEFAULT=y
 CONFIG_NETDEV_IPV4=1
 CONFIG_NETDEV_IPV6=0
 # CONFIG_NETDEV_IPV6_SCOPES is not set
-
-#
-# light weight TCP/IP stack
-#
 CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
 # CONFIG_RT_USING_LWIP141 is not set
 CONFIG_RT_USING_LWIP203=y
 # CONFIG_RT_USING_LWIP212 is not set
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20003
 # CONFIG_RT_USING_LWIP_IPV6 is not set
 CONFIG_RT_LWIP_MEM_ALIGNMENT=4
 CONFIG_RT_LWIP_IGMP=y
@@ -395,18 +380,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
 # CONFIG_RT_LWIP_STATS is not set
 # CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
 CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
 # CONFIG_RT_LWIP_DEBUG is not set
-
-#
-# AT commands
-#
 # CONFIG_RT_USING_AT is not set
-# CONFIG_LWIP_USING_DHCPD is not set
-
-#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
 
 #
 # Utilities
@@ -418,7 +394,7 @@ CONFIG_UTEST_THR_STACK_SIZE=4096
 CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# CONFIG_RT_USING_LWP is not set
+# CONFIG_RT_USING_VBUS is not set
 
 #
 # RT-Thread Utestcases
@@ -432,6 +408,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
@@ -442,12 +419,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_CJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 #
@@ -487,6 +460,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
 # 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
@@ -500,16 +474,13 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_RAPIDJSON 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
@@ -534,6 +505,22 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -621,6 +608,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # system packages
@@ -663,26 +652,12 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_RT_USING_ARDUINO is not set
+# CONFIG_PKG_USING_RTDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON 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_FAL=y
-CONFIG_PKG_FAL_PATH="/packages/system/fal"
-CONFIG_FAL_DEBUG_CONFIG=y
-CONFIG_FAL_DEBUG=1
-CONFIG_FAL_PART_HAS_TABLE_CFG=y
-# CONFIG_FAL_USING_SFUD_PORT is not set
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-CONFIG_PKG_USING_FAL_LATEST_VERSION=y
-CONFIG_PKG_FAL_VER="latest"
-CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -708,7 +683,8 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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_USB_STACK is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
 
 #
 # peripheral libraries and drivers
@@ -732,6 +708,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK 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
@@ -788,6 +765,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
 
 #
 # AI packages
@@ -806,6 +784,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # miscellaneous packages
 #
 
+#
+# project laboratory
+#
+
 #
 # samples: kernel and components samples
 #
@@ -838,6 +820,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
@@ -855,6 +838,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
 
 #
 # Hardware Drivers Config
@@ -979,6 +963,7 @@ CONFIG_NU_PKG_USING_NAU88L25=y
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
-CONFIG_BOARD_USE_UTEST=y
-CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.numaker-pfm-m487.test.utest."

+ 15 - 33
bsp/nuvoton/numaker-pfm-m487/rtconfig.h

@@ -57,14 +57,8 @@
 #define RT_USING_USER_MAIN
 #define RT_MAIN_THREAD_STACK_SIZE 2048
 #define RT_MAIN_THREAD_PRIORITY 10
-
-/* C++ features */
-
-
-/* Command shell */
-
-#define RT_USING_FINSH
 #define RT_USING_MSH
+#define RT_USING_FINSH
 #define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_PRIORITY 20
@@ -76,9 +70,6 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-
-/* Device virtual file system */
-
 #define RT_USING_DFS
 #define DFS_USING_POSIX
 #define DFS_USING_WORKDIR
@@ -101,6 +92,10 @@
 #define RT_DFS_ELM_REENTRANT
 #define RT_DFS_ELM_MUTEX_TIMEOUT 3000
 #define RT_USING_DFS_DEVFS
+#define RT_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
 
 /* Device Drivers */
 
@@ -176,7 +171,7 @@
 #define RT_USB_DEVICE_HID
 #define RT_USB_DEVICE_HID_MOUSE
 
-/* POSIX layer and C standard library */
+/* C/C++ and POSIX layer */
 
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 
@@ -190,9 +185,8 @@
 
 /* Socket is in the 'Network' category */
 
-/* Network */
 
-/* Socket abstraction layer */
+/* Network */
 
 #define RT_USING_SAL
 #define SAL_INTERNET_CHECK
@@ -201,9 +195,6 @@
 
 #define SAL_USING_LWIP
 #define SAL_SOCKETS_NUM 16
-
-/* Network interface device */
-
 #define RT_USING_NETDEV
 #define NETDEV_USING_IFCONFIG
 #define NETDEV_USING_PING
@@ -211,11 +202,9 @@
 #define NETDEV_USING_AUTO_DEFAULT
 #define NETDEV_IPV4 1
 #define NETDEV_IPV6 0
-
-/* light weight TCP/IP stack */
-
 #define RT_USING_LWIP
 #define RT_USING_LWIP203
+#define RT_USING_LWIP_VER_NUM 0x20003
 #define RT_LWIP_MEM_ALIGNMENT 4
 #define RT_LWIP_IGMP
 #define RT_LWIP_ICMP
@@ -256,12 +245,6 @@
 #define LWIP_NETIF_LOOPBACK 0
 #define RT_LWIP_USING_PING
 
-/* AT commands */
-
-
-/* VBUS(Virtual Software BUS) */
-
-
 /* Utilities */
 
 #define RT_USING_UTEST
@@ -292,6 +275,11 @@
 
 /* language packages */
 
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
 
 /* multimedia packages */
 
@@ -323,12 +311,6 @@
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-#define RT_USING_FAL
-#define FAL_DEBUG_CONFIG
-#define FAL_DEBUG 1
-#define FAL_PART_HAS_TABLE_CFG
-#define RT_USING_FAL_LATEST_VERSION
-#define PKG_FAL_VER_NUM 0x99999
 
 /* peripheral libraries and drivers */
 
@@ -338,6 +320,8 @@
 
 /* miscellaneous packages */
 
+/* project laboratory */
+
 /* samples: kernel and components samples */
 
 
@@ -410,7 +394,5 @@
 #define NU_PKG_USING_UTILS
 #define NU_PKG_USING_DEMO
 #define NU_PKG_USING_NAU88L25
-#define BOARD_USE_UTEST
-#define UTEST_CMD_PREFIX "bsp.nuvoton.numaker-pfm-m487.test.utest."
 
 #endif

+ 6 - 0
bsp/v85xxp/.ignore_format.yml

@@ -0,0 +1,6 @@
+# files format check exclude path, please follow the instructions below to modify;
+# If you need to exclude an entire folder, add the folder path in dir_path;
+# If you need to exclude a file, add the path to the file in file_path.
+
+dir_path:
+- Libraries/VangoV85xxP_standard_peripheral

+ 97 - 0
bsp/v85xxp/Kconfig

@@ -0,0 +1,97 @@
+mainmenu "RT-Thread Configuration"
+
+config BSP_DIR
+    string
+    option env="BSP_ROOT"
+    default "."
+
+config RTT_DIR
+    string
+    option env="RTT_ROOT"
+    default "../.."
+    
+# you can change the RTT_ROOT default: "rt-thread"
+# example : default "F:/git_repositories/rt-thread"
+
+config PKGS_DIR
+    string
+    option env="PKGS_ROOT"
+    default "packages"
+
+source "$RTT_DIR/Kconfig"
+source "$PKGS_DIR/Kconfig"
+
+config SOC_SERIES_V85XXP
+    bool
+    default y
+
+config SOC_V85XXP
+    bool
+    select RT_USING_COMPONENTS_INIT
+    select RT_USING_USER_MAIN
+    select SOC_SERIES_V85XXP
+    default y
+
+menu "On-chip Peripheral Drivers"
+    menuconfig BSP_USING_UART
+        bool "Enable UART"
+        default y
+        select RT_USING_SERIAL
+        if BSP_USING_UART
+            config BSP_USING_UART0
+                bool "using uart0"
+                default n
+            config BSP_USING_UART1
+                bool "using uart1"
+                default n
+            config BSP_USING_UART2
+                bool "using uart2"
+                default y
+            config BSP_USING_UART3
+                bool "using uart3"
+                default n
+            config BSP_USING_UART4
+                bool "using uart4"
+                default n
+            config BSP_USING_UART5
+                bool "using uart5"
+                default n
+        endif
+    menuconfig BSP_USING_ADC
+        bool "Enable ADC"
+        default n
+        select RT_USING_ADC
+        if BSP_USING_ADC
+            config BSP_USING_ADC0
+                bool "using adc0"
+                default n
+        endif
+    menuconfig BSP_USING_HWTIMER
+        bool "Enable hwtimer"
+        default n
+        select RT_USING_HWTIMER
+        if BSP_USING_HWTIMER
+            config BSP_USING_HWTIMER0
+                bool "using hwtimer0"
+                default n
+            config BSP_USING_HWTIMER1
+                bool "using hwtimer1"
+                default n
+            config BSP_USING_HWTIMER2
+                bool "using hwtimer2"
+                default n
+            config BSP_USING_HWTIMER3
+                bool "using hwtimer3"
+                default n
+        endif
+    config BSP_USING_WDT
+        bool "Enable Watchdog Timer"
+        select RT_USING_WDT
+        default n
+
+    config BSP_USING_RTC
+        bool "using internal rtc"
+        default n
+        select RT_USING_RTC
+
+endmenu

+ 46 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_CodeRAM.h

@@ -0,0 +1,46 @@
+/**
+  ******************************************************************************
+  * @file    lib_CodeRAM.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Codes executed in SRAM.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+#ifndef __LIB_CODERAM_H
+#define __LIB_CODERAM_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "target.h"   
+
+#ifndef __GNUC__
+
+#ifdef __ICCARM__          /* EWARM */
+  #define __RAM_FUNC       __ramfunc
+#endif
+
+#ifdef __CC_ARM            /* MDK-ARM */
+  #define __RAM_FUNC       __attribute__((used))
+#endif
+
+/* Exported Functions ------------------------------------------------------- */
+
+__RAM_FUNC void PMU_EnterIdle_FlashDSTB(void);
+
+#endif /* __GNUC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_CODERAM_H */
+
+/*********************************** END OF FILE ******************************/

+ 235 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_LoadNVR.h

@@ -0,0 +1,235 @@
+/**
+  ******************************************************************************
+  * @file    lib_LoadNVR.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Load information from NVR.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+#ifndef __LIB_LOADNVR_H
+#define __LIB_LOADNVR_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "target.h"
+
+/* Power Measure Result */
+typedef struct
+{
+  uint32_t  AVCCMEAResult;  // LDO33 Measure Result
+  uint32_t  DVCCMEAResult;  // LDO15 Measure Result
+  uint32_t  BGPMEAResult;    // BGP Measure Result
+  uint32_t  RCLMEAResult;    // RCL Measure Result
+  uint32_t  RCHMEAResult;    // RCH Measure Result
+} NVR_MISCGain;
+
+/* Chip ID */
+typedef struct
+{
+  uint32_t  ChipID0;        // ID word 0
+  uint32_t  ChipID1;        // ID word 1
+} NVR_CHIPID;
+
+/* Temperature information */
+typedef struct
+{
+  float  TempOffset; 
+} NVR_TEMPINFO;
+
+/* LCD information */
+typedef struct
+{
+  uint32_t  MEALCDLDO;     // Measure LCD LDO pre trim value
+  uint32_t  MEALCDVol;     // VLCD setting
+} NVR_LCDINFO;
+
+/* RTC(temp) information */
+typedef struct
+{
+  int16_t RTCTempP0; //P0
+  int16_t RTCTempP1; //P1
+  int32_t RTCTempP2; //P2
+  int16_t RTCTempP4; //P4
+  int16_t RTCTempP5; //P5
+  int16_t RTCTempP6; //P6
+  int16_t RTCTempP7; //P7 
+  int16_t RTCTempK0; //K0
+  int16_t RTCTempK1; //K1
+  int16_t RTCTempK2; //K2
+  int16_t RTCTempK3; //K3
+  int16_t RTCTempK4; //K4
+  int16_t RTCACTI;      //Center temperature
+  uint32_t RTCACKTemp;  //section X temperature
+  int32_t RTCTempDelta; //Temperature delta
+  uint32_t RTCACF200;   //RTC_ACF200
+} NVR_RTCINFO;
+
+/* RTC(temp) information */
+typedef struct
+{
+  int16_t RTCTempP0; //P0
+  int16_t RTCTempP1; //P1
+  int32_t RTCTempP2; //P2
+} NVR_TempParams;
+
+/* ADC Voltage Parameters */
+typedef struct
+{
+  float aParameter;
+  float bParameter;
+  float OffsetParameter;
+} NVR_ADCVOLPARA;
+//Mode
+#define NVR_3V_EXTERNAL_NODIV    (0x000UL)    // Power supply: 3.3V;    Channel: External;    Divider modeL: None
+#define NVR_3V_EXTERNAL_RESDIV   (0x001UL)    // Power supply: 3.3V;    Channel: External;    Divider modeL: Resistive
+#define NVR_3V_BAT1_RESDIV       (0x002UL)    // Power supply: 3.3V;    Channel: VDD;         Divider modeL: Resistive
+#define NVR_3V_BATRTC_RESDIV     (0x003UL)    // Power supply: 3.3V;    Channel: BATRTC;      Divider modeL: Resistive
+#define NVR_5V_EXTERNAL_NODIV    (0x100UL)    // Power supply: 5V;      Channel: External;    Divider modeL: None
+#define NVR_5V_EXTERNAL_RESDIV   (0x101UL)    // Power supply: 5V;      Channel: External;    Divider modeL: Resistive
+#define NVR_5V_BAT1_RESDIV       (0x102UL)    // Power supply: 5V;      Channel: VDD;         Divider modeL: Resistive
+#define NVR_5V_BATRTC_RESDIV     (0x103UL)    // Power supply: 5V;      Channel: BATRTC;      Divider modeL: Resistive
+#define IS_NVR_ADCVOL_MODE(__MODE__)  (((__MODE__) == NVR_3V_EXTERNAL_NODIV)   ||\
+                                       ((__MODE__) == NVR_3V_EXTERNAL_RESDIV)  ||\
+                                       ((__MODE__) == NVR_3V_BAT1_RESDIV)       ||\
+                                       ((__MODE__) == NVR_3V_BATRTC_RESDIV)    ||\
+                                       ((__MODE__) == NVR_5V_EXTERNAL_NODIV)   ||\
+                                       ((__MODE__) == NVR_5V_EXTERNAL_RESDIV)  ||\
+                                       ((__MODE__) == NVR_5V_BAT1_RESDIV)       ||\
+                                       ((__MODE__) == NVR_5V_BATRTC_RESDIV))
+
+//VOLMode
+#define NVR_MEARES_3V      0
+#define NVR_MEARES_5V      1
+#define IS_MEARES(__VOLMODE__)     (((__VOLMODE__) == NVR_MEARES_3V)   ||\
+                                    ((__VOLMODE__) == NVR_MEARES_5V))
+/********** NVR Address **********/
+//ADC Voltage Parameters
+#define NVR_3VPARA_BASEADDR1          (__IO uint32_t *)(0x80C48)
+#define NVR_3VPARA_BASEADDR2          (__IO uint32_t *)(0x80C6C)
+#define NVR_5VPARA_BASEADDR1          (__IO uint32_t *)(0x80C00)
+#define NVR_5VPARA_BASEADDR2          (__IO uint32_t *)(0x80C24)
+//RTC DATA
+//P4
+#define NVR_RTC1_P4                   (__IO uint32_t *)(0x80800)
+#define NVR_RTC1_P4_CHKSUM            (__IO uint32_t *)(0x80804)
+#define NVR_RTC2_P4                   (__IO uint32_t *)(0x80808)
+#define NVR_RTC2_P4_CHKSUM            (__IO uint32_t *)(0x8080C)
+//ACK1~ACK5
+#define NVR_RTC1_ACK0                 (__IO uint32_t *)(0x80810)
+#define NVR_RTC1_ACK1                 (__IO uint32_t *)(0x80814)
+#define NVR_RTC1_ACK2                 (__IO uint32_t *)(0x80818)
+#define NVR_RTC1_ACK3                 (__IO uint32_t *)(0x8081C)
+#define NVR_RTC1_ACK4                 (__IO uint32_t *)(0x80820)
+#define NVR_RTC1_ACK_CHKSUM           (__IO uint32_t *)(0x80824)
+#define NVR_RTC2_ACK0                 (__IO uint32_t *)(0x80828)
+#define NVR_RTC2_ACK1                 (__IO uint32_t *)(0x8082C)
+#define NVR_RTC2_ACK2                 (__IO uint32_t *)(0x80830)
+#define NVR_RTC2_ACK3                 (__IO uint32_t *)(0x80834)
+#define NVR_RTC2_ACK4                 (__IO uint32_t *)(0x80838)
+#define NVR_RTC2_ACK_CHKSUM           (__IO uint32_t *)(0x8083C)
+//ACTI
+#define NVR_RTC1_ACTI                 (__IO uint32_t *)(0x80840)
+#define NVR_RTC1_ACTI_CHKSUM          (__IO uint32_t *)(0x80844)
+#define NVR_RTC2_ACTI                 (__IO uint32_t *)(0x80848)
+#define NVR_RTC2_ACTI_CHKSUM          (__IO uint32_t *)(0x8084C)
+//ACKTEMP
+#define NVR_RTC1_ACKTEMP              (__IO uint32_t *)(0x80850)
+#define NVR_RTC1_ACKTEMP_CHKSUM       (__IO uint32_t *)(0x80854)
+#define NVR_RTC2_ACKTEMP              (__IO uint32_t *)(0x80858)
+#define NVR_RTC2_ACKTEMP_CHKSUM       (__IO uint32_t *)(0x8085C)
+//Analog trim data
+#define NVR_ANA_TRIMDATA1             (__IO uint32_t *)(0x80DC0)
+#define NVR_ANA_OPREG1                (__IO uint32_t *)(0x80DC4)
+#define NVR_ANA_KEYREG1               (__IO uint32_t *)(0x80DC8)
+#define NVR_ANA_CHECKSUM1             (__IO uint32_t *)(0x80DCC)
+#define NVR_ANA_TRIMDATA2             (__IO uint32_t *)(0x80DD0)
+#define NVR_ANA_OPREG2                (__IO uint32_t *)(0x80DD4)
+#define NVR_ANA_KEYREG2               (__IO uint32_t *)(0x80DD8)
+#define NVR_ANA_CHECKSUM2             (__IO uint32_t *)(0x80DDC)
+#define NVR_ANA1_REG10                (__IO uint32_t *)(0x80DE0)
+#define NVR_ANA1_REG10_CHKSUM         (__IO uint32_t *)(0x80DE4)
+#define NVR_ANA2_REG10                (__IO uint32_t *)(0x80DE8)
+#define NVR_ANA2_REG10_CHKSUM         (__IO uint32_t *)(0x80DEC)
+//ADC_CHx
+#define NVR_5VADCCHx_NODIV1           (__IO uint32_t *)(0x80C90)
+#define NVR_5VADCCHx_RESDIV1          (__IO uint32_t *)(0x80C94)
+#define NVR_5VADCCHx_NODIV2           (__IO uint32_t *)(0x80CA4)
+#define NVR_5VADCCHx_RESDIV2          (__IO uint32_t *)(0x80CA8)
+#define NVR_3VADCCHx_NODIV1           (__IO uint32_t *)(0x80CB8)
+#define NVR_3VADCCHx_RESDIV1          (__IO uint32_t *)(0x80CBC)
+#define NVR_3VADCCHx_NODIV2           (__IO uint32_t *)(0x80CCC)
+#define NVR_3VADCCHx_RESDIV2          (__IO uint32_t *)(0x80CD0)
+//BAT Measure Result 
+#define NVR_5VBAT1                    (__IO uint32_t *)(0x80C98)
+#define NVR_5VBATRTC1                 (__IO uint32_t *)(0x80C9C)
+#define NVR_5VBATCHKSUM1              (__IO uint32_t *)(0x80CA0)
+#define NVR_5VBAT2                    (__IO uint32_t *)(0x80CAC)
+#define NVR_5VBATRTC2                 (__IO uint32_t *)(0x80CB0)
+#define NVR_5VBATCHKSUM2              (__IO uint32_t *)(0x80CB4)
+#define NVR_3VBAT1                    (__IO uint32_t *)(0x80CC0)
+#define NVR_3VBATRTC1                 (__IO uint32_t *)(0x80CC4)
+#define NVR_3VBATCHKSUM1              (__IO uint32_t *)(0x80CC8)
+#define NVR_3VBAT2                    (__IO uint32_t *)(0x80CD4)
+#define NVR_3VBATRTC2                 (__IO uint32_t *)(0x80CD8)
+#define NVR_3VBATCHKSUM2              (__IO uint32_t *)(0x80CDC)
+//RTC AutoCal Px pramameters
+#define NVR_RTC1_P1_P0                (__IO uint32_t *)(0x80D10)
+#define NVR_RTC1_P2                   (__IO uint32_t *)(0x80D14)
+#define NVR_RTC1_P5_P4                (__IO uint32_t *)(0x80D18)
+#define NVR_RTC1_P7_P6                (__IO uint32_t *)(0x80D1C)
+#define NVR_RTC1_PCHECHSUM            (__IO uint32_t *)(0x80D20)
+#define NVR_RTC2_P1_P0                (__IO uint32_t *)(0x80D24)
+#define NVR_RTC2_P2                   (__IO uint32_t *)(0x80D28)
+#define NVR_RTC2_P5_P4                (__IO uint32_t *)(0x80D2C)
+#define NVR_RTC2_P7_P6                (__IO uint32_t *)(0x80D30)
+#define NVR_RTC2_PCHECHSUM            (__IO uint32_t *)(0x80D34)
+//Power Measure Result
+#define NVR_AVCC_MEA1                 (__IO uint32_t *)(0x80D38)
+#define NVR_DVCC_MEA1                 (__IO uint32_t *)(0x80D3C)
+#define NVR_BGP_MEA1                  (__IO uint32_t *)(0x80D40)
+#define NVR_RCL_MEA1                  (__IO uint32_t *)(0x80D44)
+#define NVR_RCH_MEA1                  (__IO uint32_t *)(0x80D48)
+#define NVR_PWR_CHECKSUM1             (__IO uint32_t *)(0x80D4C)
+#define NVR_AVCC_MEA2                 (__IO uint32_t *)(0x80D50)
+#define NVR_DVCC_MEA2                 (__IO uint32_t *)(0x80D54)
+#define NVR_BGP_MEA2                  (__IO uint32_t *)(0x80D58)
+#define NVR_RCL_MEA2                  (__IO uint32_t *)(0x80D5C)
+#define NVR_RCH_MEA2                  (__IO uint32_t *)(0x80D60)
+#define NVR_PWR_CHECKSUM2             (__IO uint32_t *)(0x80D64)
+//Chip ID
+#define NVR_CHIP1_ID0                 (__IO uint32_t *)(0x80D68)
+#define NVR_CHIP1_ID1                 (__IO uint32_t *)(0x80D6C)
+#define NVR_CHIP1_CHECKSUM            (__IO uint32_t *)(0x80D70)
+#define NVR_CHIP2_ID0                 (__IO uint32_t *)(0x80D74)
+#define NVR_CHIP2_ID1                 (__IO uint32_t *)(0x80D78)
+#define NVR_CHIP2_CHECKSUM            (__IO uint32_t *)(0x80D7C)
+//Temperature information
+#define NVR_REALTEMP1                 (__IO uint32_t *)(0x80D80)
+#define NVR_MEATEMP1                  (__IO uint32_t *)(0x80D84)
+#define NVR_TEMP_CHECKSUM1            (__IO uint32_t *)(0x80D88)
+#define NVR_REALTEMP2                 (__IO uint32_t *)(0x80D9C)
+#define NVR_MEATEMP2                  (__IO uint32_t *)(0x80D90)
+#define NVR_TEMP_CHECKSUM2            (__IO uint32_t *)(0x80D94)
+
+uint32_t NVR_LoadANADataManual(void);
+uint32_t NVR_GetInfo_LoadRTCData(NVR_RTCINFO *RTCTempData, uint32_t DivCLKSource);
+uint32_t NVR_GetVoltageParameters(uint32_t Mode, NVR_ADCVOLPARA *Parameter);
+uint32_t NVR_GetTempParameters(NVR_TempParams *TempParams);
+uint32_t NVR_GetMISCGain(NVR_MISCGain *MEAResult);
+uint32_t NVR_GetChipID(NVR_CHIPID *ChipID);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_LOADNVR_H */
+
+/*********************************** END OF FILE ******************************/

+ 62 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_conf.h

@@ -0,0 +1,62 @@
+/**
+  ******************************************************************************
+  * @file    lib_conf.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Dirver configuration.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+#ifndef __LIB_CONF_H
+#define __LIB_CONF_H
+
+/* ########################## Assert Selection ############################## */
+
+//#define ASSERT_NDEBUG    1
+
+/* Includes ------------------------------------------------------------------*/
+/**
+  * @brief Include module's header file 
+  */
+#include "lib_ana.h"
+#include "lib_adc.h"
+#include "lib_adc_tiny.h"
+#include "lib_clk.h"
+#include "lib_cmp.h"
+#include "lib_crypt.h"
+#include "lib_dma.h"
+#include "lib_flash.h"
+#include "lib_gpio.h"
+#include "lib_i2c.h"
+#include "lib_iso7816.h"
+#include "lib_lcd.h"
+#include "lib_misc.h"
+#include "lib_pmu.h"
+#include "lib_pwm.h"
+#include "lib_rtc.h"
+#include "lib_spi.h"
+#include "lib_tmr.h"
+#include "lib_u32k.h"
+#include "lib_uart.h"
+#include "lib_version.h"
+#include "lib_wdt.h"
+#include "lib_LoadNVR.h"
+#include "lib_CodeRAM.h"
+#include "lib_cortex.h"
+
+/* Exported macro ------------------------------------------------------------*/
+#ifndef  ASSERT_NDEBUG
+  #define assert_parameters(expr) ((expr) ? (void)0U : assert_errhandler((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+  void assert_errhandler(uint8_t* file, uint32_t line);
+#else
+  #define assert_parameters(expr) ((void)0U)
+#endif /* ASSERT_NDEBUG */ 
+
+#endif
+
+/*********************************** END OF FILE ******************************/

+ 49 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_cortex.h

@@ -0,0 +1,49 @@
+/**
+  ******************************************************************************
+  * @file    lib_Cortex.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Cortex module driver.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+#ifndef __LIB_CORTEX_H
+#define __LIB_CORTEX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "target.h"   
+
+
+#define IS_CORTEX_NVIC_DEVICE_IRQ(IRQ)  ((IRQ) >= 0x00)
+   
+#define IS_CORTEX_NVIC_PREEMPTION_PRIORITY(PRIORITY)  ((PRIORITY) < 0x4)
+   
+/* Exported Functions ------------------------------------------------------- */
+void     CORTEX_SetPriority_ClearPending_EnableIRQ(IRQn_Type IRQn, uint32_t Priority);
+   
+void     CORTEX_NVIC_EnableIRQ(IRQn_Type IRQn);
+void     CORTEX_NVIC_DisableIRQ(IRQn_Type IRQn);
+uint32_t CORTEX_NVIC_GetPendingIRQ(IRQn_Type IRQn);
+void     CORTEX_NVIC_SetPendingIRQ(IRQn_Type IRQn);
+void     CORTEX_NVIC_ClearPendingIRQ(IRQn_Type IRQn);
+uint32_t CORTEX_NVIC_GetPriority(IRQn_Type IRQn);
+void     CORTEX_NVIC_SetPriority(IRQn_Type IRQn, uint32_t Priority);
+void     CORTEX_NVIC_SystemReset(void);
+uint32_t CORTEX_SystemTick_Config(uint32_t TicksNum);
+void     CORTEX_Delay_nSysClock(__IO uint32_t nClock);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_CORTEX_H */
+
+/*********************************** END OF FILE ******************************/

+ 38 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/system_target.h

@@ -0,0 +1,38 @@
+/**
+  ******************************************************************************
+  * @file    system_target.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   system source file.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __SYSTEM_TARGET_H
+#define __SYSTEM_TARGET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "type_def.h"
+
+
+
+extern void SystemInit(void);
+extern void SystemUpdate(void);
+
+
+#ifdef USE_TARGET_DRIVER
+    #include "lib_conf.h"
+#endif /* USE_TARGET_DRIVER */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SYSTEM_TARGET_H */
+
+/*********************************** END OF FILE ******************************/

+ 2771 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/target.h

@@ -0,0 +1,2771 @@
+/**
+********************************************************************************
+* @file    target.h
+* @author  Application Team
+* @version V1.1.0
+* @date    2019-10-28
+* @brief   Register define
+********************************************************************************
+* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 
+* TIME. AS A RESULT, XXXXX SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
+* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
+* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
+* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+********************************************************************************
+*/
+
+#ifndef TARGET_H
+#define TARGET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** @addtogroup Configuration_of_CMSIS
+  * @{
+  */
+
+
+typedef enum {ERROR = 0, SUCCESS = !ERROR, RESET = 0, SET = !RESET, DISABLE = 0, ENABLE = !DISABLE} TypeState, EventStatus, ControlStatus, FlagStatus,  ErrStatus;
+
+/* =========================================================================================================================== */
+/* ================                                Interrupt Number Definition                                ================ */
+/* =========================================================================================================================== */
+
+typedef enum {
+/* =======================================  ARM Cortex-M0 Specific Interrupt Numbers  ======================================== */
+  Reset_IRQn                = -15,              /*!< -15  Reset Vector, invoked on Power up and warm reset                     */
+  NonMaskableInt_IRQn       = -14,              /*!< -14  Non maskable Interrupt, cannot be stopped or preempted               */
+  HardFault_IRQn            = -13,              /*!< -13  Hard Fault, all classes of Fault                                     */
+  SVCall_IRQn               =  -5,              /*!< -5 System Service Call via SVC instruction                                */
+  PendSV_IRQn               =  -2,              /*!< -2 Pendable request for system service                                    */
+  SysTick_IRQn              =  -1,              /*!< -1 System Tick Timer                                                      */
+/* ===========================================  target Specific Interrupt Numbers  =========================================== */
+  PMU_IRQn                  =   0,              /*!< 0  PMU                                                                    */
+  RTC_IRQn                  =   1,              /*!< 1  RTC                                                                    */
+  U32K0_IRQn                =   2,              /*!< 2  U32K0                                                                  */
+  U32K1_IRQn                =   3,              /*!< 3  U32K1                                                                  */
+  I2C_IRQn                  =   4,              /*!< 4  I2C                                                                    */
+  SPI1_IRQn                 =   5,              /*!< 5  SPI1                                                                   */
+  UART0_IRQn                =   6,              /*!< 6  UART0                                                                  */
+  UART1_IRQn                =   7,              /*!< 7  UART1                                                                  */
+  UART2_IRQn                =   8,              /*!< 8  UART2                                                                  */
+  UART3_IRQn                =   9,              /*!< 9  UART3                                                                  */
+  UART4_IRQn                =  10,              /*!< 10 UART4                                                                  */
+  UART5_IRQn                =  11,              /*!< 11 UART5                                                                  */
+  ISO78160_IRQn             =  12,              /*!< 12 ISO78160                                                               */
+  ISO78161_IRQn             =  13,              /*!< 13 ISO78161                                                               */
+  TMR0_IRQn                 =  14,              /*!< 14 TMR0                                                                   */
+  TMR1_IRQn                 =  15,              /*!< 15 TMR1                                                                   */
+  TMR2_IRQn                 =  16,              /*!< 16 TMR2                                                                   */
+  TMR3_IRQn                 =  17,              /*!< 17 TMR3                                                                   */
+  PWM0_IRQn                 =  18,              /*!< 18 PWM0                                                                   */
+  PWM1_IRQn                 =  19,              /*!< 19 PWM1                                                                   */
+  PWM2_IRQn                 =  20,              /*!< 20 PWM2                                                                   */
+  PWM3_IRQn                 =  21,              /*!< 21 PWM3                                                                   */
+  DMA_IRQn                  =  22,              /*!< 22 DMA                                                                    */
+  FLASH_IRQn                =  23,              /*!< 23 FLASH                                                                  */
+  ANA_IRQn                  =  24,              /*!< 24 ANA                                                                    */
+  SPI2_IRQn                 =  27,              /*!< 27 SPI2                                                                   */
+  SPI3_IRQn                 =  28               /*!< 28 SPI3                                                                   */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================                           Processor and Core Peripheral Section                           ================ */
+/* =========================================================================================================================== */
+
+/* ===========================  Configuration of the ARM Cortex-M0 Processor and Core Peripherals  =========================== */
+#define __CM0_REV                 0x0000U       /*!< CM0 Core Revision                                                         */
+#define __NVIC_PRIO_BITS               2        /*!< Number of Bits used for Priority Levels                                   */
+#define __Vendor_SysTickConfig         0        /*!< Set to 1 if different SysTick Config is used                              */
+#define __MPU_PRESENT                  0        /*!< MPU present or not                                                        */
+#define __FPU_PRESENT                  0        /*!< FPU present or not                                                        */
+
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+#include "core_cm0.h"                           /*!< ARM Cortex-M0 processor and core peripherals                              */
+
+#ifndef __IM                                    /*!< Fallback for older CMSIS versions                                         */
+  #define __IM   __I
+#endif
+#ifndef __OM                                    /*!< Fallback for older CMSIS versions                                         */
+  #define __OM   __O
+#endif
+#ifndef __IOM                                   /*!< Fallback for older CMSIS versions                                         */
+  #define __IOM  __IO
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================                            Device Specific Peripheral Section                             ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_peripherals
+  * @{
+  */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            ANA                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The Analog controller is used to control the analog function of TARGET. (ANA)
+  */
+
+typedef struct {                                /*!< (@ 0x40014200) ANA Structure                                              */
+  __IOM uint32_t  REG0;                         /*!< (@ 0x00000000) Analog register 0.                                         */
+  __IOM uint32_t  REG1;                         /*!< (@ 0x00000004) Analog register 1.                                         */
+  __IOM uint32_t  REG2;                         /*!< (@ 0x00000008) Analog register 2.                                         */
+  __IOM uint32_t  REG3;                         /*!< (@ 0x0000000C) Analog register 3.                                         */
+  __IOM uint32_t  REG4;                         /*!< (@ 0x00000010) Analog register 4.                                         */
+  __IOM uint32_t  REG5;                         /*!< (@ 0x00000014) Analog register 5.                                         */
+  __IOM uint32_t  REG6;                         /*!< (@ 0x00000018) Analog register 6.                                         */
+  __IOM uint32_t  REG7;                         /*!< (@ 0x0000001C) Analog register 7.                                         */
+  __IOM uint32_t  REG8;                         /*!< (@ 0x00000020) Analog register 8.                                         */
+  __IOM uint32_t  REG9;                         /*!< (@ 0x00000024) Analog register 9.                                         */
+  __IOM uint32_t  REGA;                         /*!< (@ 0x00000028) Analog register 10.                                        */
+  __IOM uint32_t  REGB;                         /*!< (@ 0x0000002C) Analog register 11.                                        */
+  __IOM uint32_t  REGC;                         /*!< (@ 0x00000030) Analog register 12.                                        */
+  __IOM uint32_t  REGD;                         /*!< (@ 0x00000034) Analog register 13.                                        */
+  __IOM uint32_t  REGE;                         /*!< (@ 0x00000038) Analog register 14.                                        */
+  __IOM uint32_t  REGF;                         /*!< (@ 0x0000003C) Analog register 15.                                        */
+  __IOM uint32_t  REG10;                        /*!< (@ 0x00000040) Analog register 16.                                        */
+  __IOM uint32_t  REG11;                        /*!< (@ 0x00000044) Analog register 17.                                        */
+  __IM  uint32_t  RESERVED[2];
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000050) Analog control register.                                   */
+  __IM  uint32_t  CMPOUT;                       /*!< (@ 0x00000054) Comparator result register.                                */
+  __IM  uint32_t  RESERVED1;
+  __IM  uint32_t  ADCSTATE;                     /*!< (@ 0x0000005C) ADC State register.                                        */
+  __IOM uint32_t  INTSTS;                       /*!< (@ 0x00000060) Analog interrupt status register.                          */
+  __IOM uint32_t  INTEN;                        /*!< (@ 0x00000064) Analog interrupt enable register.                          */
+  __IOM uint32_t  ADCCTRL0;                     /*!< (@ 0x00000068) ADC control register.                                      */
+  __IOM uint32_t  CMPCTL;                       /*!< (@ 0x0000006C) CMP1/CMP2 control register.                                */
+  __IM  uint32_t  ADCDATA[16];                  /*!< (@ 0x00000070) ADC channel x data register.                               */
+  __IOM uint32_t  CMPCNT1;                      /*!< (@ 0x000000B0) Comparator x counter.                                      */
+  __IOM uint32_t  CMPCNT2;                      /*!< (@ 0x000000B4) Comparator x counter.                                      */
+  __IOM uint32_t  MISC;                         /*!< (@ 0x000000B8) Analog MISC control register.                              */
+  __IM  uint32_t  RESERVED2;
+  __IM  uint32_t  ADCDOS;                       /*!< (@ 0x000000C0) ANA_ADCDOS.                                                */
+  __IM  uint32_t  RESERVED3[7];
+  __IM  uint32_t  ADCDATADMA;                   /*!< (@ 0x000000E0) ANA_ADCDATADMA.                                            */
+  __IOM uint32_t  CMPTHR;                       /*!< (@ 0x000000E4) CMP1/CMP2 threshold register.                              */
+  __IOM uint32_t  ADCCTRL1;                     /*!< (@ 0x000000E8) ANA_ADCCTRL1.                                              */
+  __IOM uint32_t  ADCCTRL2;                     /*!< (@ 0x000000EC) ANA_ADCCTRL2.                                              */
+  __IM  uint32_t  RESERVED4;
+  __IOM uint32_t  ADCDATATHD1_0;                /*!< (@ 0x000000F4) ANA_ADCDATATHD1_0.                                         */
+  __IOM uint32_t  ADCDATATHD3_2;                /*!< (@ 0x000000F8) ANA_ADCDATATHD3_2.                                         */
+  __IOM uint32_t  ADCDATATHD_CH;                /*!< (@ 0x000000FC) ANA_ADCDATATHD_CH.                                         */
+} ANA_Type;                                     /*!< Size = 256 (0x100)                                                        */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           CRYPT                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief CRYPT accelerate the sign and verify process speed of ECC. (CRYPT)
+  */
+
+typedef struct {                                /*!< (@ 0x40006000) CRYPT Structure                                            */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000000) CRYPT control register.                                    */
+  __IOM uint32_t  PTRA;                         /*!< (@ 0x00000004) CRYPT pointer A.                                           */
+  __IOM uint32_t  PTRB;                         /*!< (@ 0x00000008) CRYPT pointer B.                                           */
+  __IOM uint32_t  PTRO;                         /*!< (@ 0x0000000C) CRYPT pointer O.                                           */
+  __IM  uint32_t  CARRY;                        /*!< (@ 0x00000010) CRYPT carry/borrow bit register.                           */
+} CRYPT_Type;                                   /*!< Size = 20 (0x14)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            DMA                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief DMA(Direct Memory Access) (DMA)
+  */
+
+typedef struct {                                /*!< (@ 0x40010000) DMA Structure                                              */
+  __IOM uint32_t  IE;                           /*!< (@ 0x00000000) DMA interrupt enable register.                             */
+  __IOM uint32_t  STS;                          /*!< (@ 0x00000004) DMA status register.                                       */
+  __IM  uint32_t  RESERVED[2];
+  __IOM uint32_t  C0CTL;                        /*!< (@ 0x00000010) DMA channel x control register.                            */
+  __IOM uint32_t  C0SRC;                        /*!< (@ 0x00000014) DMA source address register.                               */
+  __IOM uint32_t  C0DST;                        /*!< (@ 0x00000018) DMA channel x destination register.                        */
+  __IOM uint32_t  C0LEN;                        /*!< (@ 0x0000001C) DMA channel x transfer length register.                    */
+  __IOM uint32_t  C1CTL;                        /*!< (@ 0x00000020) DMA channel x control register.                            */
+  __IOM uint32_t  C1SRC;                        /*!< (@ 0x00000024) DMA source address register.                               */
+  __IOM uint32_t  C1DST;                        /*!< (@ 0x00000028) DMA channel x destination register.                        */
+  __IOM uint32_t  C1LEN;                        /*!< (@ 0x0000002C) DMA channel x transfer length register.                    */
+  __IOM uint32_t  C2CTL;                        /*!< (@ 0x00000030) DMA channel x control register.                            */
+  __IOM uint32_t  C2SRC;                        /*!< (@ 0x00000034) DMA source address register.                               */
+  __IOM uint32_t  C2DST;                        /*!< (@ 0x00000038) DMA channel x destination register.                        */
+  __IOM uint32_t  C2LEN;                        /*!< (@ 0x0000003C) DMA channel x transfer length register.                    */
+  __IOM uint32_t  C3CTL;                        /*!< (@ 0x00000040) DMA channel x control register.                            */
+  __IOM uint32_t  C3SRC;                        /*!< (@ 0x00000044) DMA source address register.                               */
+  __IOM uint32_t  C3DST;                        /*!< (@ 0x00000048) DMA channel x destination register.                        */
+  __IOM uint32_t  C3LEN;                        /*!< (@ 0x0000004C) DMA channel x transfer length register.                    */
+  __IOM uint32_t  AESCTL;                       /*!< (@ 0x00000050) DMA AES control register.                                  */
+  __IM  uint32_t  RESERVED1[3];
+  __IOM uint32_t  AESKEY[8];                    /*!< (@ 0x00000060) DMA AES key x register. When mode is AES128,
+                                                                    only register KEY3~KEY0 is used. When mode
+                                                                    is AES192, only register KEY5~KEY0 is used.
+                                                                    When mode is AES256, register KEY7~KEY0
+                                                                    is used.                                                   */
+} DMA_Type;                                     /*!< Size = 128 (0x80)                                                         */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           FLASH                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief FLASH Register (FLASH)
+  */
+
+typedef struct {                                /*!< (@ 0x000FFF00) FLASH Structure                                            */
+  __IM  uint32_t  RESERVED[42];
+  __IOM uint32_t  ICEPROT;                      /*!< (@ 0x000000A8) ICE protect register.                                      */
+  __IM  uint32_t  RDPROT;                       /*!< (@ 0x000000AC) Flash read protect status register                         */
+  __IOM uint32_t  WRPROT;                       /*!< (@ 0x000000B0) Flash write protect control register                       */
+  __IM  uint32_t  RESERVED1[2];
+  __IM  uint32_t  STS;                          /*!< (@ 0x000000BC) Flash programming status register.                         */
+  __IM  uint32_t  RESERVED2[3];
+  __IOM uint32_t  INTSTS;                       /*!< (@ 0x000000CC) FLASH Checksum interrupt status                            */
+  __IOM uint32_t  CSSADDR;                      /*!< (@ 0x000000D0) FLASH Checksum start address                               */
+  __IOM uint32_t  CSEADDR;                      /*!< (@ 0x000000D4) FLASH Checksum end address.                                */
+  __IM  uint32_t  CSVALUE;                      /*!< (@ 0x000000D8) FLASH Checksum value register                              */
+  __IOM uint32_t  CSCVALUE;                     /*!< (@ 0x000000DC) FLASH Checksum compare value register.                     */
+  __IOM uint32_t  PASS;                         /*!< (@ 0x000000E0) FLASH password register                                    */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x000000E4) FLASH control register.                                    */
+  __IOM uint32_t  PGADDR;                       /*!< (@ 0x000000E8) FLASH program address register.                            */
+  __IOM uint32_t  PGDATA;                       /*!< (@ 0x000000EC) FLASH program word data register.                          */
+  __IM  uint32_t  RESERVED3;
+  __IOM uint32_t  SERASE;                       /*!< (@ 0x000000F4) FLASH sector erase control register.                       */
+  __IOM uint32_t  CERASE;                       /*!< (@ 0x000000F8) FLASH chip erase control register.                         */
+  __IOM uint32_t  DSTB;                         /*!< (@ 0x000000FC) FLASH deep standby control register.                       */
+} FLASH_Type;                                   /*!< Size = 256 (0x100)                                                        */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           GPIOA                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The GPIO controller is used to control the GPIOs of TARGET. (GPIOA)
+  */
+
+typedef struct {                                /*!< (@ 0x40014010) GPIOA Structure                                            */
+  __IOM uint32_t  OEN;                          /*!< (@ 0x00000000) IOA output enable register                                 */
+  __IOM uint32_t  IE;                           /*!< (@ 0x00000004) IOA input enable register                                  */
+  __IOM uint32_t  DAT;                          /*!< (@ 0x00000008) IOA data register                                          */
+  __IOM uint32_t  ATT;                          /*!< (@ 0x0000000C) IOA attribute register                                     */
+  __IOM uint32_t  IOAWKUEN;                     /*!< (@ 0x00000010) IOA wake-up enable register                                */
+  __IM  uint32_t  STS;                          /*!< (@ 0x00000014) IOA input status register                                  */
+  __IOM uint32_t  IOAINTSTS;                    /*!< (@ 0x00000018) IOA interrupt status register.                             */
+  __IM  uint32_t  RESERVED[3];
+  __IOM uint32_t  SEL;                          /*!< (@ 0x00000028) IOA special function select register.                      */
+  __IM  uint32_t  RESERVED1[5];
+  __IOM uint32_t  IOANODEG;                     /*!< (@ 0x00000040) IOA no-deglitch control register.                          */
+} GPIOA_Type;                                   /*!< Size = 68 (0x44)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           GPIO                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The GPIO controller is used to control the GPIOs of TARGET. (GPIO)
+  */
+
+typedef struct {                                /*!< (@ 0x40000020) GPIO Structure                                            */
+  __IOM uint32_t  OEN;                          /*!< (@ 0x00000000) IO output enable register                                  */
+  __IOM uint32_t  IE;                           /*!< (@ 0x00000004) IO input enable register                                   */
+  __IOM uint32_t  DAT;                          /*!< (@ 0x00000008) IO data register                                           */
+  __IOM uint32_t  ATT;                          /*!< (@ 0x0000000C) IO attribute register                                      */
+  __IM  uint32_t  STS;                          /*!< (@ 0x00000010) IO input status register                                   */
+} GPIO_Type;                                    /*!< Size = 20 (0x14)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                          GPIOAF                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The GPIO controller is used to control the GPIOs of TARGET. (GPIOAF)
+  */
+
+typedef struct {                                /*!< (@ 0x400000C0) GPIOAF Structure                                           */
+  __IOM uint32_t  IOB_SEL;                      /*!< (@ 0x00000000) IOB special function select register.                      */
+  __IM  uint32_t  RESERVED[2];
+  __IOM uint32_t  IOE_SEL;                      /*!< (@ 0x0000000C) IOE special function select register.                      */
+  __IM  uint32_t  RESERVED1[4];
+  __IOM uint32_t  IO_MISC;                      /*!< (@ 0x00000020) IO misc. control register.                                 */
+} GPIOAF_Type;                                  /*!< Size = 36 (0x24)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            I2C                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief I2C-Inter Integrated Circuit (I2C)
+  */
+
+typedef struct {                                /*!< (@ 0x40010800) I2C Structure                                              */
+  __IOM uint32_t  DATA;                         /*!< (@ 0x00000000) I2C data register.                                         */
+  __IOM uint32_t  ADDR;                         /*!< (@ 0x00000004) I2C address register.                                      */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000008) I2C control/status register.                               */
+  __IM  uint32_t  STS;                          /*!< (@ 0x0000000C) I2C status register.                                       */
+  __IM  uint32_t  RESERVED[2];
+  __IOM uint32_t  CTRL2;                        /*!< (@ 0x00000018) I2C interrupt enable register.                             */
+} I2C_Type;                                     /*!< Size = 28 (0x1c)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                         ISO7816                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The ISO7816 controller is an enhance UART protocol which is able to do half-duplex communication on the 2 wires bus. (ISO7816)
+  */
+
+typedef struct {                                /*!< (@ 0x40012000) ISO7816 Structure                                         */
+  __IM  uint32_t  RESERVED;
+  __IOM uint32_t  BAUDDIVL;                     /*!< (@ 0x00000004) ISO7816 baud-rate low byte register                        */
+  __IOM uint32_t  BAUDDIVH;                     /*!< (@ 0x00000008) ISO7816 baud-rate high byte register                       */
+  __IOM uint32_t  DATA;                         /*!< (@ 0x0000000C) ISO7816 data register.                                     */
+  __IOM uint32_t  INFO;                         /*!< (@ 0x00000010) ISO7816 information register.                              */
+  __IOM uint32_t  CFG;                          /*!< (@ 0x00000014) ISO7816 control register.                                  */
+  __IOM uint32_t  CLK;                          /*!< (@ 0x00000018) ISO7816 clock divider control register.                    */
+} ISO7816_Type;                                 /*!< Size = 28 (0x1c)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            LCD                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The LCD controller is used to display content on the LCD panel. (LCD)
+  */
+
+typedef struct {                                /*!< (@ 0x40002000) LCD Structure                                              */
+  __IOM uint32_t  FB[40];                       /*!< (@ 0x00000000) LCD Frame buffer x register                                */
+  __IM  uint32_t  RESERVED[24];
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000100) LCD control register.                                      */
+  __IOM uint32_t  CTRL2;                        /*!< (@ 0x00000104) LCD control register2.                                     */
+  __IOM uint32_t  SEGCTRL0;                     /*!< (@ 0x00000108) LCD segment enable control register 0                      */
+  __IOM uint32_t  SEGCTRL1;                     /*!< (@ 0x0000010C) LCD segment enable control register 1                      */
+  __IOM uint32_t  SEGCTRL2;                     /*!< (@ 0x00000110) LCD segment enable control register 2                      */
+} LCD_Type;                                     /*!< Size = 276 (0x114)                                                        */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           MISC1                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The MISC controller is used to control some special function of TARGET, which will be power-off during sleep and deep-sleep mode. (MISC1)
+  */
+
+typedef struct {                                /*!< (@ 0x40013000) MISC1 Structure                                            */
+  __IOM uint32_t  SRAMINT;                      /*!< (@ 0x00000000) SRAM Parity Error Interrupt.                               */
+  __IOM uint32_t  SRAMINIT;                     /*!< (@ 0x00000004) SRAM initialize register.                                  */
+  __IM  uint32_t  PARERR;                       /*!< (@ 0x00000008) SRAM Parity Error address register.                        */
+  __IOM uint32_t  IREN;                         /*!< (@ 0x0000000C) IR enable control register.                                */
+  __IOM uint32_t  DUTYL;                        /*!< (@ 0x00000010) IR Duty low pulse control register.                        */
+  __IOM uint32_t  DUTYH;                        /*!< (@ 0x00000014) IR Duty high pulse control register.                       */
+  __IOM uint32_t  IRQLAT;                       /*!< (@ 0x00000018) Cortex M0 IRQ latency control register.                    */
+  __IM  uint32_t  RESERVED;
+  __IM  uint32_t  HIADDR;                       /*!< (@ 0x00000020) AHB invalid access address.                                */
+  __IM  uint32_t  PIADDR;                       /*!< (@ 0x00000024) APB invalid access address.                                */
+} MISC1_Type;                                   /*!< Size = 40 (0x28)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           MISC2                                           ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief MISC2 controller is in retention domain which will be power-off at deep-sleep mode. (MISC2)
+  */
+
+typedef struct {                                /*!< (@ 0x40013E00) MISC2 Structure                                            */
+  __IOM uint32_t  FLASHWC;                      /*!< (@ 0x00000000) Flash wait cycle register.                                 */
+  __IOM uint32_t  CLKSEL;                       /*!< (@ 0x00000004) Clock selection register.                                  */
+  __IOM uint32_t  CLKDIVH;                      /*!< (@ 0x00000008) AHB clock divider control register.                        */
+  __IOM uint32_t  CLKDIVP;                      /*!< (@ 0x0000000C) APB clock divider control register.                        */
+  __IOM uint32_t  HCLKEN;                       /*!< (@ 0x00000010) AHB clock enable control register.                         */
+  __IOM uint32_t  PCLKEN;                       /*!< (@ 0x00000014) APB clock enable control register.                         */
+} MISC2_Type;                                   /*!< Size = 24 (0x18)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            PMU                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief Power Management Unit. (PMU)
+  */
+
+typedef struct {                                /*!< (@ 0x40014000) PMU Structure                                              */
+  __IOM uint32_t  DSLEEPEN;                     /*!< (@ 0x00000000) PMU deep sleep enable register.                            */
+  __IOM uint32_t  DSLEEPPASS;                   /*!< (@ 0x00000004) PMU deep sleep password register.                          */
+  __IOM uint32_t  CONTROL;                      /*!< (@ 0x00000008) PMU control register.                                      */
+  __IOM uint32_t  STS;                          /*!< (@ 0x0000000C) PMU Status register.                                       */
+  __IM  uint32_t  RESERVED[12];
+  __IOM uint32_t  WDTPASS;                      /*!< (@ 0x00000040) Watch dog timing unlock register.                          */
+  __IOM uint32_t  WDTEN;                        /*!< (@ 0x00000044) Watch dog timer enable register.                           */
+  __IOM uint32_t  WDTCLR;                       /*!< (@ 0x00000048) Watch dog timer clear register.                            */
+  __IM  uint32_t  RESERVED1[237];
+  __IOM uint32_t  RAM[64];                      /*!< (@ 0x00000400) PMU 32 bits Retention RAM x.                               */
+} PMU_Type;                                     /*!< Size = 1280 (0x500)                                                       */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           PWM                                             ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief Timers are 16 bits timers with PWM and capture function. (PWM)
+  */
+
+typedef struct {                                /*!< (@ 0x40012900) PWM Structure                                             */
+  __IOM uint32_t  CTL;                          /*!< (@ 0x00000000) Control register of PWM Timer 0                            */
+  __IM  uint32_t  TAR;                          /*!< (@ 0x00000004) Current count register of PWM Timer x.                     */
+  __IOM uint32_t  CCTL[3];                      /*!< (@ 0x00000008) Compare/capture control register x(x=0~3) for
+                                                                    PWM timer x.                                               */
+  __IOM uint32_t  CCR[3];                       /*!< (@ 0x00000014) Compare/capture data register x for PWM timer
+                                                                    x.                                                         */
+} PWM_Type;                                     /*!< Size = 32 (0x20)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                          PWM_SEL                                          ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief Timers are 16 bits timers with PWM and capture function. (PWM_SEL)
+  */
+
+typedef struct {                                /*!< (@ 0x400129F0) PWM_SEL Structure                                          */
+  __IOM uint32_t  O_SEL;                        /*!< (@ 0x00000000) PWM output selection register.                             */
+  __IOM uint32_t  I_SEL01;                      /*!< (@ 0x00000004) Input of PWM0 and PWM1 selection register.                 */
+  __IOM uint32_t  I_SEL23;                      /*!< (@ 0x00000008) Input of PWM2 and PWM3 selection register.                 */
+} PWM_SEL_Type;                                 /*!< Size = 12 (0xc)                                                           */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            RTC                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The RTC controller is used to control time calculation and RTC auto calibration function. (RTC)
+  */
+
+typedef struct {                                /*!< (@ 0x40014800) RTC Structure                                              */
+  __IOM uint32_t  SEC;                          /*!< (@ 0x00000000) RTC second register                                        */
+  __IOM uint32_t  MIN;                          /*!< (@ 0x00000004) RTC minute register                                        */
+  __IOM uint32_t  HOUR;                         /*!< (@ 0x00000008) RTC hour register                                          */
+  __IOM uint32_t  DAY;                          /*!< (@ 0x0000000C) RTC day register                                           */
+  __IOM uint32_t  WEEK;                         /*!< (@ 0x00000010) RTC week register                                          */
+  __IOM uint32_t  MON;                          /*!< (@ 0x00000014) RTC mon register                                           */
+  __IOM uint32_t  YEAR;                         /*!< (@ 0x00000018) RTC year register                                          */
+  __IOM uint32_t  TIME;                         /*!< (@ 0x0000001C) RTC accurate second/millisecond register                   */
+  __IOM uint32_t  WKUSEC;                       /*!< (@ 0x00000020) RTC wake-up second register.                               */
+  __IOM uint32_t  WKUMIN;                       /*!< (@ 0x00000024) RTC wake-up minute register                                */
+  __IOM uint32_t  WKUHOUR;                      /*!< (@ 0x00000028) RTC wake-up hour register                                  */
+  __IOM uint32_t  WKUCNT;                       /*!< (@ 0x0000002C) RTC wake-up counter register                               */
+  __IOM uint32_t  CAL;                          /*!< (@ 0x00000030) RTC calibration register                                   */
+  __IOM uint32_t  DIV;                          /*!< (@ 0x00000034) RTC calibration register                                   */
+  __IOM uint32_t  CTL;                          /*!< (@ 0x00000038) RTC PLL divider control register.                          */
+  __IOM uint32_t  ITV;                          /*!< (@ 0x0000003C) RTC wake-up interval control                               */
+  __IOM uint32_t  SITV;                         /*!< (@ 0x00000040) RTC wake-up second interval control                        */
+  __IOM uint32_t  PWD;                          /*!< (@ 0x00000044) RTC password control register.                             */
+  __IOM uint32_t  CE;                           /*!< (@ 0x00000048) RTC write enable control register.                         */
+  __IM  uint32_t  LOAD;                         /*!< (@ 0x0000004C) RTC read enable control register                           */
+  __IOM uint32_t  INTSTS;                       /*!< (@ 0x00000050) RTC interrupt status control register                      */
+  __IOM uint32_t  INTEN;                        /*!< (@ 0x00000054) RTC interrupt enable control register                      */
+  __IOM uint32_t  PSCA;                         /*!< (@ 0x00000058) RTC clock pre-scaler control register.                     */
+  __IM  uint32_t  RESERVED[10];
+  __IOM uint32_t  ACTI;                         /*!< (@ 0x00000084) RTC auto-calibration center temperature control
+                                                                    register.                                                  */
+  __IOM uint32_t  ACF200;                       /*!< (@ 0x00000088) RTC auto-calibration 200*frequency control register.       */
+  __IM  uint32_t  RESERVED1;
+  __IOM uint32_t  ACP0;                         /*!< (@ 0x00000090) RTC parameter P0 register.                                 */
+  __IOM uint32_t  ACP1;                         /*!< (@ 0x00000094) RTC parameter P1 register.                                 */
+  __IOM uint32_t  ACP2;                         /*!< (@ 0x00000098) RTC parameter P2 register.                                 */
+  __IM  uint32_t  ACP3;                         /*!< (@ 0x0000009C) RTC parameter P3 register.                                 */
+  __IOM uint32_t  ACP4;                         /*!< (@ 0x000000A0) RTC parameter P4 register.                                 */
+  __IOM uint32_t  ACP5;                         /*!< (@ 0x000000A4) RTC parameter P5 register.                                 */
+  __IOM uint32_t  ACP6;                         /*!< (@ 0x000000A8) RTC parameter P6 register.                                 */
+  __IOM uint32_t  ACP7;                         /*!< (@ 0x000000AC) RTC parameter P7 register.                                 */
+  __IOM uint32_t  ACK[5];                       /*!< (@ 0x000000B0) RTC auto-calibration parameter Kx control register.        */
+  __IM  uint32_t  RESERVED2[2];
+  __IM  uint32_t  WKUCNTR;                      /*!< (@ 0x000000CC) This register is used to represent the current
+                                                                    WKUCNT value.                                              */
+  __IOM uint32_t  ACKTEMP;                      /*!< (@ 0x000000D0) RTC auto-calibration k temperature section control
+                                                                    register.                                                  */
+  __IOM uint32_t  ALARMTIME;                    /*!< (@ 0x000000D4) RTC alarm accurate second/millisecond.                     */
+  __IOM uint32_t  ALARMSEC;                     /*!< (@ 0x000000D8) RTC alarm inaccurate second                                */
+  __IOM uint32_t  ALARMMIN;                     /*!< (@ 0x000000DC) RTC alarm minute                                           */
+  __IOM uint32_t  ALARMHOUR;                    /*!< (@ 0x000000E0) RTC alarm hour                                             */
+  __IOM uint32_t  ALARMCTL;                     /*!< (@ 0x000000E4) RTC alarm control                                          */
+  __IOM uint32_t  ADCUCALK;                     /*!< (@ 0x000000E8) RTC ADC Ucal K coefficients                                */
+  __IOM uint32_t  ADCMACTL;                     /*!< (@ 0x000000EC) RTC ADC control                                            */
+} RTC_Type;                                     /*!< Size = 240 (0xf0)                                                         */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           SPI                                             ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief SPI(Serial Peripheral Interface). (SPI)
+  */
+
+typedef struct {                                /*!< (@ 0x40011000) SPI Structure                                             */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000000) SPI Control Register.                                      */
+  __IOM uint32_t  TXSTS;                        /*!< (@ 0x00000004) SPI Transmit Status Register.                              */
+  __IOM uint32_t  TXDAT;                        /*!< (@ 0x00000008) SPI Transmit FIFO register.                                */
+  __IOM uint32_t  RXSTS;                        /*!< (@ 0x0000000C) SPI Receive Status Register.                               */
+  __IM  uint32_t  RXDAT;                        /*!< (@ 0x00000010) SPI Receive FIFO Register.                                 */
+  __IOM uint32_t  MISC;                         /*!< (@ 0x00000014) SPI Misc. Control Register.                                */
+} SPI_Type;                                     /*!< Size = 24 (0x18)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           TMR                                             ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief General purpose 32 bits timer, which are used to generate regulate interrupt for CM0. (TMR)
+  */
+
+typedef struct {                                /*!< (@ 0x40012800) TMR Structure                                             */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000000) Control register of Timer x                                */
+  __IOM uint32_t  VALUE;                        /*!< (@ 0x00000004) Current count register of Timer x                          */
+  __IOM uint32_t  RELOAD;                       /*!< (@ 0x00000008) Reload register of Timer x.                                */
+  __IOM uint32_t  INTSTS;                       /*!< (@ 0x0000000C) Interrupt status register of Timer x.                      */
+} TMR_Type;                                     /*!< Size = 16 (0x10)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           UART                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief UART(Universal Asynchronous Receiver/Transmitter). (UART)
+  */
+
+typedef struct {                                /*!< (@ 0x40011800) UART Structure                                            */
+  __IOM uint32_t  DATA;                         /*!< (@ 0x00000000) UART data register.                                        */
+  __IOM uint32_t  STATE;                        /*!< (@ 0x00000004) UART status register.                                      */
+  __IOM uint32_t  CTRL;                         /*!< (@ 0x00000008) UART control register.                                     */
+  __IOM uint32_t  INTSTS;                       /*!< (@ 0x0000000C) UART interrupt status register.                            */
+  __IOM uint32_t  BAUDDIV;                      /*!< (@ 0x00000010) UART baud rate divide register.                            */
+  __IOM uint32_t  CTRL2;                        /*!< (@ 0x00000014) UART control register 2.                                   */
+} UART_Type;                                    /*!< Size = 24 (0x18)                                                          */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                           U32K                                            ================ */
+/* =========================================================================================================================== */
+
+
+/**
+  * @brief The UART 32K controller is used to receive data via UART protocol. (U32K)
+  */
+
+typedef struct {                                /*!< (@ 0x40014100) U32K Structure                                            */
+  __IOM uint32_t  CTRL0;                        /*!< (@ 0x00000000) UART 32K x control register 0.                             */
+  __IOM uint32_t  CTRL1;                        /*!< (@ 0x00000004) UART 32K x control register 1.                             */
+  __IOM uint32_t  BAUDDIV;                      /*!< (@ 0x00000008) UART 32K x baud rate control register.                     */
+  __IM  uint32_t  DATA;                         /*!< (@ 0x0000000C) UART 32K x receive data buffer.                            */
+  __IOM uint32_t  STS;                          /*!< (@ 0x00000010) UART 32K x interrupt status register.                      */
+} U32K_Type;                                    /*!< Size = 20 (0x14)                                                          */
+
+
+/** @} */ /* End of group Device_Peripheral_peripherals */
+
+
+/* =========================================================================================================================== */
+/* ================                          Device Specific Peripheral Address Map                           ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_peripheralAddr
+  * @{
+  */
+
+#define ANA_BASE                    0x40014200UL
+#define CRYPT_BASE                  0x40006000UL
+#define DMA_BASE                    0x40010000UL
+#define FLASH_BASE                  0x000FFF00UL
+#define GPIOA_BASE                  0x40014010UL
+#define GPIOB_BASE                  0x40000020UL
+#define GPIOC_BASE                  0x40000040UL
+#define GPIOD_BASE                  0x40000060UL
+#define GPIOE_BASE                  0x40000080UL
+#define GPIOF_BASE                  0x400000A0UL
+#define GPIOAF_BASE                 0x400000C0UL
+#define I2C_BASE                    0x40010800UL
+#define ISO78160_BASE               0x40012000UL
+#define ISO78161_BASE               0x40012040UL
+#define LCD_BASE                    0x40002000UL
+#define MISC1_BASE                  0x40013000UL
+#define MISC2_BASE                  0x40013E00UL
+#define PMU_BASE                    0x40014000UL
+#define PWM0_BASE                   0x40012900UL
+#define PWM1_BASE                   0x40012920UL
+#define PWM2_BASE                   0x40012940UL
+#define PWM3_BASE                   0x40012960UL
+#define PWM_SEL_BASE                0x400129F0UL
+#define RTC_BASE                    0x40014800UL
+#define SPI1_BASE                   0x40011000UL
+#define SPI2_BASE                   0x40015800UL
+#define SPI3_BASE                   0x40016000UL
+#define TMR0_BASE                   0x40012800UL
+#define TMR1_BASE                   0x40012820UL
+#define TMR2_BASE                   0x40012840UL
+#define TMR3_BASE                   0x40012860UL
+#define UART0_BASE                  0x40011800UL
+#define UART1_BASE                  0x40011820UL
+#define UART2_BASE                  0x40011840UL
+#define UART3_BASE                  0x40011860UL
+#define UART4_BASE                  0x40011880UL
+#define UART5_BASE                  0x400118A0UL
+#define U32K0_BASE                  0x40014100UL
+#define U32K1_BASE                  0x40014180UL
+
+/** @} */ /* End of group Device_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================                                  Peripheral declaration                                   ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_declaration
+  * @{
+  */
+
+#define ANA                         ((ANA_Type*)               ANA_BASE)
+#define CRYPT                       ((CRYPT_Type*)             CRYPT_BASE)
+#define DMA                         ((DMA_Type*)               DMA_BASE)
+#define FLASH                       ((FLASH_Type*)             FLASH_BASE)
+#define GPIOA                       ((GPIOA_Type*)             GPIOA_BASE)
+#define GPIOB                       ((GPIO_Type*)              GPIOB_BASE)
+#define GPIOC                       ((GPIO_Type*)              GPIOC_BASE)
+#define GPIOD                       ((GPIO_Type*)              GPIOD_BASE)
+#define GPIOE                       ((GPIO_Type*)              GPIOE_BASE)
+#define GPIOF                       ((GPIO_Type*)              GPIOF_BASE)
+#define GPIOAF                      ((GPIOAF_Type*)            GPIOAF_BASE)
+#define I2C                         ((I2C_Type*)               I2C_BASE)
+#define ISO78160                    ((ISO7816_Type*)           ISO78160_BASE)
+#define ISO78161                    ((ISO7816_Type*)           ISO78161_BASE)
+#define LCD                         ((LCD_Type*)               LCD_BASE)
+#define MISC1                       ((MISC1_Type*)             MISC1_BASE)
+#define MISC2                       ((MISC2_Type*)             MISC2_BASE)
+#define PMU                         ((PMU_Type*)               PMU_BASE)
+#define PWM0                        ((PWM_Type*)               PWM0_BASE)
+#define PWM1                        ((PWM_Type*)               PWM1_BASE)
+#define PWM2                        ((PWM_Type*)               PWM2_BASE)
+#define PWM3                        ((PWM_Type*)               PWM3_BASE)
+#define PWM_SEL                     ((PWM_SEL_Type*)           PWM_SEL_BASE)
+#define RTC                         ((RTC_Type*)               RTC_BASE)
+#define SPI1                        ((SPI_Type*)               SPI1_BASE)
+#define SPI2                        ((SPI_Type*)               SPI2_BASE)
+#define SPI3                        ((SPI_Type*)               SPI3_BASE)
+#define TMR0                        ((TMR_Type*)               TMR0_BASE)
+#define TMR1                        ((TMR_Type*)               TMR1_BASE)
+#define TMR2                        ((TMR_Type*)               TMR2_BASE)
+#define TMR3                        ((TMR_Type*)               TMR3_BASE)
+#define UART0                       ((UART_Type*)              UART0_BASE)
+#define UART1                       ((UART_Type*)              UART1_BASE)
+#define UART2                       ((UART_Type*)              UART2_BASE)
+#define UART3                       ((UART_Type*)              UART3_BASE)
+#define UART4                       ((UART_Type*)              UART4_BASE)
+#define UART5                       ((UART_Type*)              UART5_BASE)
+#define U32K0                       ((U32K_Type*)              U32K0_BASE)
+#define U32K1                       ((U32K_Type*)              U32K1_BASE)
+
+/** @} */ /* End of group Device_Peripheral_declaration */
+
+
+/* =========================================================================================================================== */
+/* ================                                Pos/Mask Peripheral Section                                ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup PosMask_peripherals
+  * @{
+  */
+
+
+
+/* =========================================================================================================================== */
+/* ================                                            ANA                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  REG0  ========================================================== */
+#define ANA_REG0_ADCFRQSEL_Pos            (0UL)                     /*!< ANA REG0: ADCFRQSEL (Bit 0)                           */
+#define ANA_REG0_ADCFRQSEL_Msk            (0x1UL)                   /*!< ANA REG0: ADCFRQSEL (Bitfield-Mask: 0x01)             */
+#define ANA_REG0_ADCFRQSEL                ANA_REG0_ADCFRQSEL_Msk
+/* =========================================================  REG1  ========================================================== */
+#define ANA_REG1_ADCMODESEL_Pos           (7UL)                     /*!< ANA REG1: ADCMODESEL (Bit 7)                          */
+#define ANA_REG1_ADCMODESEL_Msk           (0x80UL)                  /*!< ANA REG1: ADCMODESEL (Bitfield-Mask: 0x01)            */
+#define ANA_REG1_ADCMODESEL               ANA_REG1_ADCMODESEL_Msk
+/* =========================================================  REG2  ========================================================== */
+#define ANA_REG2_CMP2REFSEL_Pos           (5UL)                     /*!< ANA REG2: CMP2REFSEL (Bit 5)                          */
+#define ANA_REG2_CMP2REFSEL_Msk           (0x20UL)                  /*!< ANA REG2: CMP2REFSEL (Bitfield-Mask: 0x01)            */
+#define ANA_REG2_CMP2REFSEL               ANA_REG2_CMP2REFSEL_Msk
+#define ANA_REG2_CMP1REFSEL_Pos           (4UL)                     /*!< ANA REG2: CMP1REFSEL (Bit 4)                          */
+#define ANA_REG2_CMP1REFSEL_Msk           (0x10UL)                  /*!< ANA REG2: CMP1REFSEL (Bitfield-Mask: 0x01)            */
+#define ANA_REG2_CMP1REFSEL               ANA_REG2_CMP1REFSEL_Msk
+#define ANA_REG2_CMP2SEL_Pos              (2UL)                     /*!< ANA REG2: CMP2SEL (Bit 2)                             */
+#define ANA_REG2_CMP2SEL_Msk              (0xcUL)                   /*!< ANA REG2: CMP2SEL (Bitfield-Mask: 0x03)               */
+#define ANA_REG2_CMP2SEL                  ANA_REG2_CMP2SEL_Msk
+#define ANA_REG2_CMP1SEL_Pos              (0UL)                     /*!< ANA REG2: CMP1SEL (Bit 0)                             */
+#define ANA_REG2_CMP1SEL_Msk              (0x3UL)                   /*!< ANA REG2: CMP1SEL (Bitfield-Mask: 0x03)               */
+#define ANA_REG2_CMP1SEL                  ANA_REG2_CMP1SEL_Msk
+/* =========================================================  REG3  ========================================================== */
+#define ANA_REG3_XOHPDN_Pos               (7UL)                     /*!< ANA REG3: XOHPDN (Bit 7)                              */
+#define ANA_REG3_XOHPDN_Msk               (0x80UL)                  /*!< ANA REG3: XOHPDN (Bitfield-Mask: 0x01)                */
+#define ANA_REG3_XOHPDN                   ANA_REG3_XOHPDN_Msk
+#define ANA_REG3_PLLHPDN_Pos              (6UL)                     /*!< ANA REG3: PLLHPDN (Bit 6)                             */
+#define ANA_REG3_PLLHPDN_Msk              (0x40UL)                  /*!< ANA REG3: PLLHPDN (Bitfield-Mask: 0x01)               */
+#define ANA_REG3_PLLHPDN                  ANA_REG3_PLLHPDN_Msk
+#define ANA_REG3_PLLLPDN_Pos              (5UL)                     /*!< ANA REG3: PLLLPDN (Bit 5)                             */
+#define ANA_REG3_PLLLPDN_Msk              (0x20UL)                  /*!< ANA REG3: PLLLPDN (Bitfield-Mask: 0x01)               */
+#define ANA_REG3_PLLLPDN                  ANA_REG3_PLLLPDN_Msk
+#define ANA_REG3_RCHPD_Pos                (4UL)                     /*!< ANA REG3: RCHPD (Bit 4)                               */
+#define ANA_REG3_RCHPD_Msk                (0x10UL)                  /*!< ANA REG3: RCHPD (Bitfield-Mask: 0x01)                 */
+#define ANA_REG3_RCHPD                    ANA_REG3_RCHPD_Msk
+#define ANA_REG3_BGPPD_Pos                (3UL)                     /*!< ANA REG3: BGPPD (Bit 3)                               */
+#define ANA_REG3_BGPPD_Msk                (0x8UL)                   /*!< ANA REG3: BGPPD (Bitfield-Mask: 0x01)                 */
+#define ANA_REG3_BGPPD                    ANA_REG3_BGPPD_Msk
+#define ANA_REG3_CMP2PDN_Pos              (2UL)                     /*!< ANA REG3: CMP2PDN (Bit 2)                             */
+#define ANA_REG3_CMP2PDN_Msk              (0x4UL)                   /*!< ANA REG3: CMP2PDN (Bitfield-Mask: 0x01)               */
+#define ANA_REG3_CMP2PDN                  ANA_REG3_CMP2PDN_Msk
+#define ANA_REG3_CMP1PDN_Pos              (1UL)                     /*!< ANA REG3: CMP1PDN (Bit 1)                             */
+#define ANA_REG3_CMP1PDN_Msk              (0x2UL)                   /*!< ANA REG3: CMP1PDN (Bitfield-Mask: 0x01)               */
+#define ANA_REG3_CMP1PDN                  ANA_REG3_CMP1PDN_Msk
+/* =========================================================  REG4  ========================================================== */
+/* =========================================================  REG5  ========================================================== */
+#define ANA_REG5_AVCCLVDETPD_Pos          (6UL)                     /*!< ANA REG5: AVCCLVDETPD (Bit 6)                         */
+#define ANA_REG5_AVCCLVDETPD_Msk          (0x40UL)                  /*!< ANA REG5: AVCCLVDETPD (Bitfield-Mask: 0x01)           */
+#define ANA_REG5_AVCCLVDETPD              ANA_REG5_AVCCLVDETPD_Msk
+#define ANA_REG5_CMP2IT_Pos               (2UL)                     /*!< ANA REG5: CMP2IT (Bit 2)                              */
+#define ANA_REG5_CMP2IT_Msk               (0xcUL)                   /*!< ANA REG5: CMP2IT (Bitfield-Mask: 0x03)                */
+#define ANA_REG5_CMP2IT                   ANA_REG5_CMP2IT_Msk
+#define ANA_REG5_CMP1IT_Pos               (0UL)                     /*!< ANA REG5: CMP1IT (Bit 0)                              */
+#define ANA_REG5_CMP1IT_Msk               (0x3UL)                   /*!< ANA REG5: CMP1IT (Bitfield-Mask: 0x03)                */
+#define ANA_REG5_CMP1IT                   ANA_REG5_CMP1IT_Msk
+/* =========================================================  REG6  ========================================================== */
+#define ANA_REG6_BATRTCDISC_Pos           (7UL)                     /*!< ANA REG6: BATRTCDISC (Bit 7)                          */
+#define ANA_REG6_BATRTCDISC_Msk           (0x80UL)                  /*!< ANA REG6: BATRTCDISC (Bitfield-Mask: 0x01)            */
+#define ANA_REG6_BATRTCDISC               ANA_REG6_BATRTCDISC_Msk
+#define ANA_REG6_BAT1DISC_Pos             (6UL)                     /*!< ANA REG6: BAT1DISC (Bit 6)                            */
+#define ANA_REG6_BAT1DISC_Msk             (0x40UL)                  /*!< ANA REG6: BAT1DISC (Bitfield-Mask: 0x01)              */
+#define ANA_REG6_BAT1DISC                 ANA_REG6_BAT1DISC_Msk
+#define ANA_REG6_LCDBMODE_Pos             (0UL)                     /*!< ANA REG6: LCDBMODE (Bit 0)                            */
+#define ANA_REG6_LCDBMODE_Msk             (0x1UL)                   /*!< ANA REG6: LCDBMODE (Bitfield-Mask: 0x01)              */
+#define ANA_REG6_LCDBMODE                 ANA_REG6_LCDBMODE_Msk
+/* =========================================================  REG7  ========================================================== */
+/* =========================================================  REG8  ========================================================== */
+#define ANA_REG8_AVCCLDOPD_Pos            (7UL)                     /*!< ANA REG8: AVCCLDOPD (Bit 7)                           */
+#define ANA_REG8_AVCCLDOPD_Msk            (0x80UL)                  /*!< ANA REG8: AVCCLDOPD (Bitfield-Mask: 0x01)             */
+#define ANA_REG8_AVCCLDOPD                ANA_REG8_AVCCLDOPD_Msk
+#define ANA_REG8_VDDPVDSEL_Pos            (4UL)                     /*!< ANA REG8: VDDPVDSEL (Bit 4)                           */
+#define ANA_REG8_VDDPVDSEL_Msk            (0x70UL)                  /*!< ANA REG8: VDDPVDSEL (Bitfield-Mask: 0x07)             */
+#define ANA_REG8_VDDPVDSEL                ANA_REG8_VDDPVDSEL_Msk
+#define ANA_REG8_DVCCSEL_Pos              (0UL)                     /*!< ANA REG8: DVCCSEL (Bit 0)                             */
+#define ANA_REG8_DVCCSEL_Msk              (0x3UL)                   /*!< ANA REG8: DVCCSEL (Bitfield-Mask: 0x03)               */
+#define ANA_REG8_DVCCSEL                  ANA_REG8_DVCCSEL_Msk
+/* =========================================================  REG9  ========================================================== */
+#define ANA_REG9_VDDDETPD_Pos             (7UL)                     /*!< ANA REG9: VDDDETPD (Bit 7)                            */
+#define ANA_REG9_VDDDETPD_Msk             (0x80UL)                  /*!< ANA REG9: VDDDETPD (Bitfield-Mask: 0x01)              */
+#define ANA_REG9_VDDDETPD                 ANA_REG9_VDDDETPD_Msk
+#define ANA_REG9_PLLHSEL_Pos              (3UL)                     /*!< ANA REG9: PLLHSEL (Bit 3)                             */
+#define ANA_REG9_PLLHSEL_Msk              (0x78UL)                  /*!< ANA REG9: PLLHSEL (Bitfield-Mask: 0x0f)               */
+#define ANA_REG9_PLLHSEL                  ANA_REG9_PLLHSEL_Msk
+#define ANA_REG9_PLLLSEL_Pos              (0UL)                     /*!< ANA REG9: PLLLSEL (Bit 0)                             */
+#define ANA_REG9_PLLLSEL_Msk              (0x7UL)                   /*!< ANA REG9: PLLLSEL (Bitfield-Mask: 0x07)               */
+#define ANA_REG9_PLLLSEL                  ANA_REG9_PLLLSEL_Msk
+/* =========================================================  REGA  ========================================================== */
+#define ANA_REGA_VDCINDETPD_Pos           (7UL)                     /*!< ANA REGA: VDCINDETPD (Bit 7)                          */
+#define ANA_REGA_VDCINDETPD_Msk           (0x80UL)                  /*!< ANA REGA: VDCINDETPD (Bitfield-Mask: 0x01)            */
+#define ANA_REGA_VDCINDETPD               ANA_REGA_VDCINDETPD_Msk
+/* =========================================================  REGB  ========================================================== */
+#define ANA_REGB_RCLTRIM_Pos              (0UL)                     /*!< ANA REGB: RCLTRIM (Bit 0)                             */
+#define ANA_REGB_RCLTRIM_Msk              (0x1fUL)                  /*!< ANA REGB: RCLTRIM (Bitfield-Mask: 0x1f)               */
+#define ANA_REGB_RCLTRIM                  ANA_REGB_RCLTRIM_Msk
+/* =========================================================  REGC  ========================================================== */
+#define ANA_REGC_RCHTRIM_Pos              (0UL)                     /*!< ANA REGC: RCHTRIM (Bit 0)                             */
+#define ANA_REGC_RCHTRIM_Msk              (0x3fUL)                  /*!< ANA REGC: RCHTRIM (Bitfield-Mask: 0x3f)               */
+#define ANA_REGC_RCHTRIM                  ANA_REGC_RCHTRIM_Msk
+/* =========================================================  REGD  ========================================================== */
+/* =========================================================  REGE  ========================================================== */
+#define ANA_REGE_BKPWREN_Pos              (7UL)                     /*!< ANA REGE: BKPWREN (Bit 7)                             */
+#define ANA_REGE_BKPWREN_Msk              (0x80UL)                  /*!< ANA REGE: BKPWREN (Bitfield-Mask: 0x01)               */
+#define ANA_REGE_BKPWREN                  ANA_REGE_BKPWREN_Msk
+/* =========================================================  REGF  ========================================================== */
+#define ANA_REGF_ADTREF3SEL_Pos           (7UL)                     /*!< ANA REGF: ADTREF3SEL (Bit 7)                          */
+#define ANA_REGF_ADTREF3SEL_Msk           (0x80UL)                  /*!< ANA REGF: ADTREF3SEL (Bitfield-Mask: 0x01)            */
+#define ANA_REGF_ADTREF3SEL               ANA_REGF_ADTREF3SEL_Msk
+#define ANA_REGF_ADTREF2SEL_Pos           (6UL)                     /*!< ANA REGF: ADTREF2SEL (Bit 6)                          */
+#define ANA_REGF_ADTREF2SEL_Msk           (0x40UL)                  /*!< ANA REGF: ADTREF2SEL (Bitfield-Mask: 0x01)            */
+#define ANA_REGF_ADTREF2SEL               ANA_REGF_ADTREF2SEL_Msk
+#define ANA_REGF_ADTREF1SEL_Pos           (5UL)                     /*!< ANA REGF: ADTREF1SEL (Bit 5)                          */
+#define ANA_REGF_ADTREF1SEL_Msk           (0x20UL)                  /*!< ANA REGF: ADTREF1SEL (Bitfield-Mask: 0x01)            */
+#define ANA_REGF_ADTREF1SEL               ANA_REGF_ADTREF1SEL_Msk
+#define ANA_REGF_ADTSEL_Pos               (4UL)                     /*!< ANA REGF: ADTSEL (Bit 4)                              */
+#define ANA_REGF_ADTSEL_Msk               (0x10UL)                  /*!< ANA REGF: ADTSEL (Bitfield-Mask: 0x01)                */
+#define ANA_REGF_ADTSEL                   ANA_REGF_ADTSEL_Msk
+#define ANA_REGF_ADTPDN_Pos               (3UL)                     /*!< ANA REGF: ADTPDN (Bit 3)                              */
+#define ANA_REGF_ADTPDN_Msk               (0x8UL)                   /*!< ANA REGF: ADTPDN (Bitfield-Mask: 0x01)                */
+#define ANA_REGF_ADTPDN                   ANA_REGF_ADTPDN_Msk
+#define ANA_REGF_AVCCOEN_Pos              (2UL)                     /*!< ANA REGF: AVCCOEN (Bit 2)                             */
+#define ANA_REGF_AVCCOEN_Msk              (0x4UL)                   /*!< ANA REGF: AVCCOEN (Bitfield-Mask: 0x01)               */
+#define ANA_REGF_AVCCOEN                  ANA_REGF_AVCCOEN_Msk
+#define ANA_REGF_BATRTCDETEN_Pos          (1UL)                     /*!< ANA REGF: BATRTCDETEN (Bit 1)                         */
+#define ANA_REGF_BATRTCDETEN_Msk          (0x2UL)                   /*!< ANA REGF: BATRTCDETEN (Bitfield-Mask: 0x01)           */
+#define ANA_REGF_BATRTCDETEN              ANA_REGF_BATRTCDETEN_Msk
+#define ANA_REGF_BAT1DETEN_Pos            (0UL)                     /*!< ANA REGF: BAT1DETEN (Bit 0)                           */
+#define ANA_REGF_BAT1DETEN_Msk            (0x1UL)                   /*!< ANA REGF: BAT1DETEN (Bitfield-Mask: 0x01)             */
+#define ANA_REGF_BAT1DETEN                ANA_REGF_BAT1DETEN_Msk
+/* =========================================================  REG10  ========================================================= */
+/* =========================================================  REG11  ========================================================= */
+#define ANA_REG11_VINBUFPD_Pos            (7UL)                     /*!< ANA REG11: VINBUFPD (Bit 7)                           */
+#define ANA_REG11_VINBUFPD_Msk            (0x80UL)                  /*!< ANA REG11: VINBUFPD (Bitfield-Mask: 0x01)             */
+#define ANA_REG11_VINBUFPD                ANA_REG11_VINBUFPD_Msk
+#define ANA_REG11_REFBUFPD_Pos            (6UL)                     /*!< ANA REG11: REFBUFPD (Bit 6)                           */
+#define ANA_REG11_REFBUFPD_Msk            (0x40UL)                  /*!< ANA REG11: REFBUFPD (Bitfield-Mask: 0x01)             */
+#define ANA_REG11_REFBUFPD                ANA_REG11_REFBUFPD_Msk
+/* =========================================================  CTRL  ========================================================== */
+#define ANA_CTRL_PDNS2_Pos                (26UL)                    /*!< ANA CTRL: PDNS2 (Bit 26)                              */
+#define ANA_CTRL_PDNS2_Msk                (0x4000000UL)             /*!< ANA CTRL: PDNS2 (Bitfield-Mask: 0x01)                 */
+#define ANA_CTRL_PDNS2                    ANA_CTRL_PDNS2_Msk
+#define ANA_CTRL_CMP2DEB_Pos              (22UL)                    /*!< ANA CTRL: CMP2DEB (Bit 22)                            */
+#define ANA_CTRL_CMP2DEB_Msk              (0xc00000UL)              /*!< ANA CTRL: CMP2DEB (Bitfield-Mask: 0x03)               */
+#define ANA_CTRL_CMP2DEB                  ANA_CTRL_CMP2DEB_Msk
+#define ANA_CTRL_CMP1DEB_Pos              (20UL)                    /*!< ANA CTRL: CMP1DEB (Bit 20)                            */
+#define ANA_CTRL_CMP1DEB_Msk              (0x300000UL)              /*!< ANA CTRL: CMP1DEB (Bitfield-Mask: 0x03)               */
+#define ANA_CTRL_CMP1DEB                  ANA_CTRL_CMP1DEB_Msk
+#define ANA_CTRL_RCHTGT_Pos               (8UL)                     /*!< ANA CTRL: RCHTGT (Bit 8)                              */
+#define ANA_CTRL_RCHTGT_Msk               (0xff00UL)                /*!< ANA CTRL: RCHTGT (Bitfield-Mask: 0xff)                */
+#define ANA_CTRL_RCHTGT                   ANA_CTRL_RCHTGT_Msk
+#define ANA_CTRL_PDNS_Pos                 (6UL)                     /*!< ANA CTRL: PDNS (Bit 6)                                */
+#define ANA_CTRL_PDNS_Msk                 (0x40UL)                  /*!< ANA CTRL: PDNS (Bitfield-Mask: 0x01)                  */
+#define ANA_CTRL_PDNS                     ANA_CTRL_PDNS_Msk
+#define ANA_CTRL_CMP2SEL_Pos              (2UL)                     /*!< ANA CTRL: CMP2SEL (Bit 2)                             */
+#define ANA_CTRL_CMP2SEL_Msk              (0xcUL)                   /*!< ANA CTRL: CMP2SEL (Bitfield-Mask: 0x03)               */
+#define ANA_CTRL_CMP2SEL                  ANA_CTRL_CMP2SEL_Msk
+#define ANA_CTRL_CMP1SEL_Pos              (0UL)                     /*!< ANA CTRL: CMP1SEL (Bit 0)                             */
+#define ANA_CTRL_CMP1SEL_Msk              (0x3UL)                   /*!< ANA CTRL: CMP1SEL (Bitfield-Mask: 0x03)               */
+#define ANA_CTRL_CMP1SEL                  ANA_CTRL_CMP1SEL_Msk
+/* ========================================================  CMPOUT  ========================================================= */
+#define ANA_CMPOUT_TADCO_Pos              (14UL)                    /*!< ANA CMPOUT: TADCO (Bit 14)                            */
+#define ANA_CMPOUT_TADCO_Msk              (0xc000UL)                /*!< ANA CMPOUT: TADCO (Bitfield-Mask: 0x03)               */
+#define ANA_CMPOUT_TADCO                  ANA_CMPOUT_TADCO_Msk
+#define ANA_CMPOUT_AVCCLV_Pos             (10UL)                    /*!< ANA CMPOUT: AVCCLV (Bit 10)                           */
+#define ANA_CMPOUT_AVCCLV_Msk             (0x400UL)                 /*!< ANA CMPOUT: AVCCLV (Bitfield-Mask: 0x01)              */
+#define ANA_CMPOUT_AVCCLV                 ANA_CMPOUT_AVCCLV_Msk
+#define ANA_CMPOUT_VDCINDROP_Pos          (8UL)                     /*!< ANA CMPOUT: VDCINDROP (Bit 8)                         */
+#define ANA_CMPOUT_VDCINDROP_Msk          (0x100UL)                 /*!< ANA CMPOUT: VDCINDROP (Bitfield-Mask: 0x01)           */
+#define ANA_CMPOUT_VDCINDROP              ANA_CMPOUT_VDCINDROP_Msk
+#define ANA_CMPOUT_VDDALARM_Pos           (7UL)                     /*!< ANA CMPOUT: VDDALARM (Bit 7)                          */
+#define ANA_CMPOUT_VDDALARM_Msk           (0x80UL)                  /*!< ANA CMPOUT: VDDALARM (Bitfield-Mask: 0x01)            */
+#define ANA_CMPOUT_VDDALARM               ANA_CMPOUT_VDDALARM_Msk
+#define ANA_CMPOUT_CMP2_Pos               (3UL)                     /*!< ANA CMPOUT: CMP2 (Bit 3)                              */
+#define ANA_CMPOUT_CMP2_Msk               (0x8UL)                   /*!< ANA CMPOUT: CMP2 (Bitfield-Mask: 0x01)                */
+#define ANA_CMPOUT_CMP2                   ANA_CMPOUT_CMP2_Msk
+#define ANA_CMPOUT_CMP1_Pos               (2UL)                     /*!< ANA CMPOUT: CMP1 (Bit 2)                              */
+#define ANA_CMPOUT_CMP1_Msk               (0x4UL)                   /*!< ANA CMPOUT: CMP1 (Bitfield-Mask: 0x01)                */
+#define ANA_CMPOUT_CMP1                   ANA_CMPOUT_CMP1_Msk
+#define ANA_CMPOUT_LOCKL_Pos              (1UL)                     /*!< ANA CMPOUT: LOCKL (Bit 1)                             */
+#define ANA_CMPOUT_LOCKL_Msk              (0x2UL)                   /*!< ANA CMPOUT: LOCKL (Bitfield-Mask: 0x01)               */
+#define ANA_CMPOUT_LOCKL                  ANA_CMPOUT_LOCKL_Msk
+#define ANA_CMPOUT_LOCKH_Pos              (0UL)                     /*!< ANA CMPOUT: LOCKH (Bit 0)                             */
+#define ANA_CMPOUT_LOCKH_Msk              (0x1UL)                   /*!< ANA CMPOUT: LOCKH (Bitfield-Mask: 0x01)               */
+#define ANA_CMPOUT_LOCKH                  ANA_CMPOUT_LOCKH_Msk
+/* =======================================================  ADCSTATE  ======================================================== */
+#define ANA_ADCSTATE_CAL_EN_Pos           (5UL)                     /*!< ANA ADCSTATE: CAL_EN (Bit 5)                          */
+#define ANA_ADCSTATE_CAL_EN_Msk           (0x20UL)                  /*!< ANA ADCSTATE: CAL_EN (Bitfield-Mask: 0x01)            */
+#define ANA_ADCSTATE_CAL_EN               ANA_ADCSTATE_CAL_EN_Msk
+#define ANA_ADCSTATE_RESET_Pos            (4UL)                     /*!< ANA ADCSTATE: RESET (Bit 4)                           */
+#define ANA_ADCSTATE_RESET_Msk            (0x10UL)                  /*!< ANA ADCSTATE: RESET (Bitfield-Mask: 0x01)             */
+#define ANA_ADCSTATE_RESET                ANA_ADCSTATE_RESET_Msk
+#define ANA_ADCSTATE_ADC_EN_Pos           (3UL)                     /*!< ANA ADCSTATE: ADC_EN (Bit 3)                          */
+#define ANA_ADCSTATE_ADC_EN_Msk           (0x8UL)                   /*!< ANA ADCSTATE: ADC_EN (Bitfield-Mask: 0x01)            */
+#define ANA_ADCSTATE_ADC_EN               ANA_ADCSTATE_ADC_EN_Msk
+#define ANA_ADCSTATE_ADCSTATE_Pos         (0UL)                     /*!< ANA ADCSTATE: ADCSTATE (Bit 0)                        */
+#define ANA_ADCSTATE_ADCSTATE_Msk         (0x7UL)                   /*!< ANA ADCSTATE: ADCSTATE (Bitfield-Mask: 0x07)          */
+#define ANA_ADCSTATE_ADCSTATE             ANA_ADCSTATE_ADCSTATE_Msk
+/* ========================================================  INTSTS  ========================================================= */
+#define ANA_INTSTS_INTSTS21_Pos           (21UL)                    /*!< ANA INTSTS: INTSTS21 (Bit 21)                         */
+#define ANA_INTSTS_INTSTS21_Msk           (0x200000UL)              /*!< ANA INTSTS: INTSTS21 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS21               ANA_INTSTS_INTSTS21_Msk
+#define ANA_INTSTS_INTSTS20_Pos           (20UL)                    /*!< ANA INTSTS: INTSTS20 (Bit 20)                         */
+#define ANA_INTSTS_INTSTS20_Msk           (0x100000UL)              /*!< ANA INTSTS: INTSTS20 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS20               ANA_INTSTS_INTSTS20_Msk
+#define ANA_INTSTS_INTSTS19_Pos           (19UL)                    /*!< ANA INTSTS: INTSTS19 (Bit 19)                         */
+#define ANA_INTSTS_INTSTS19_Msk           (0x80000UL)               /*!< ANA INTSTS: INTSTS19 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS19               ANA_INTSTS_INTSTS19_Msk
+#define ANA_INTSTS_INTSTS18_Pos           (18UL)                    /*!< ANA INTSTS: INTSTS18 (Bit 18)                         */
+#define ANA_INTSTS_INTSTS18_Msk           (0x40000UL)               /*!< ANA INTSTS: INTSTS18 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS18               ANA_INTSTS_INTSTS18_Msk
+#define ANA_INTSTS_INTSTS17_Pos           (17UL)                    /*!< ANA INTSTS: INTSTS17 (Bit 17)                         */
+#define ANA_INTSTS_INTSTS17_Msk           (0x20000UL)               /*!< ANA INTSTS: INTSTS17 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS17               ANA_INTSTS_INTSTS17_Msk
+#define ANA_INTSTS_INTSTS16_Pos           (16UL)                    /*!< ANA INTSTS: INTSTS16 (Bit 16)                         */
+#define ANA_INTSTS_INTSTS16_Msk           (0x10000UL)               /*!< ANA INTSTS: INTSTS16 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS16               ANA_INTSTS_INTSTS16_Msk
+#define ANA_INTSTS_INTSTS15_Pos           (15UL)                    /*!< ANA INTSTS: INTSTS15 (Bit 15)                         */
+#define ANA_INTSTS_INTSTS15_Msk           (0x8000UL)                /*!< ANA INTSTS: INTSTS15 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS15               ANA_INTSTS_INTSTS15_Msk
+#define ANA_INTSTS_INTSTS14_Pos           (14UL)                    /*!< ANA INTSTS: INTSTS14 (Bit 14)                         */
+#define ANA_INTSTS_INTSTS14_Msk           (0x4000UL)                /*!< ANA INTSTS: INTSTS14 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS14               ANA_INTSTS_INTSTS14_Msk
+#define ANA_INTSTS_INTSTS13_Pos           (13UL)                    /*!< ANA INTSTS: INTSTS13 (Bit 13)                         */
+#define ANA_INTSTS_INTSTS13_Msk           (0x2000UL)                /*!< ANA INTSTS: INTSTS13 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS13               ANA_INTSTS_INTSTS13_Msk
+#define ANA_INTSTS_INTSTS12_Pos           (12UL)                    /*!< ANA INTSTS: INTSTS12 (Bit 12)                         */
+#define ANA_INTSTS_INTSTS12_Msk           (0x1000UL)                /*!< ANA INTSTS: INTSTS12 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS12               ANA_INTSTS_INTSTS12_Msk
+#define ANA_INTSTS_INTSTS11_Pos           (11UL)                    /*!< ANA INTSTS: INTSTS11 (Bit 11)                         */
+#define ANA_INTSTS_INTSTS11_Msk           (0x800UL)                 /*!< ANA INTSTS: INTSTS11 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS11               ANA_INTSTS_INTSTS11_Msk
+#define ANA_INTSTS_INTSTS10_Pos           (10UL)                    /*!< ANA INTSTS: INTSTS10 (Bit 10)                         */
+#define ANA_INTSTS_INTSTS10_Msk           (0x400UL)                 /*!< ANA INTSTS: INTSTS10 (Bitfield-Mask: 0x01)            */
+#define ANA_INTSTS_INTSTS10               ANA_INTSTS_INTSTS10_Msk
+#define ANA_INTSTS_INTSTS8_Pos            (8UL)                     /*!< ANA INTSTS: INTSTS8 (Bit 8)                           */
+#define ANA_INTSTS_INTSTS8_Msk            (0x100UL)                 /*!< ANA INTSTS: INTSTS8 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS8                ANA_INTSTS_INTSTS8_Msk
+#define ANA_INTSTS_INTSTS7_Pos            (7UL)                     /*!< ANA INTSTS: INTSTS7 (Bit 7)                           */
+#define ANA_INTSTS_INTSTS7_Msk            (0x80UL)                  /*!< ANA INTSTS: INTSTS7 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS7                ANA_INTSTS_INTSTS7_Msk
+#define ANA_INTSTS_INTSTS3_Pos            (3UL)                     /*!< ANA INTSTS: INTSTS3 (Bit 3)                           */
+#define ANA_INTSTS_INTSTS3_Msk            (0x8UL)                   /*!< ANA INTSTS: INTSTS3 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS3                ANA_INTSTS_INTSTS3_Msk
+#define ANA_INTSTS_INTSTS2_Pos            (2UL)                     /*!< ANA INTSTS: INTSTS2 (Bit 2)                           */
+#define ANA_INTSTS_INTSTS2_Msk            (0x4UL)                   /*!< ANA INTSTS: INTSTS2 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS2                ANA_INTSTS_INTSTS2_Msk
+#define ANA_INTSTS_INTSTS1_Pos            (1UL)                     /*!< ANA INTSTS: INTSTS1 (Bit 1)                           */
+#define ANA_INTSTS_INTSTS1_Msk            (0x2UL)                   /*!< ANA INTSTS: INTSTS1 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS1                ANA_INTSTS_INTSTS1_Msk
+#define ANA_INTSTS_INTSTS0_Pos            (0UL)                     /*!< ANA INTSTS: INTSTS0 (Bit 0)                           */
+#define ANA_INTSTS_INTSTS0_Msk            (0x1UL)                   /*!< ANA INTSTS: INTSTS0 (Bitfield-Mask: 0x01)             */
+#define ANA_INTSTS_INTSTS0                ANA_INTSTS_INTSTS0_Msk
+/* =========================================================  INTEN  ========================================================= */
+#define ANA_INTEN_INTEN21_Pos             (21UL)                    /*!< ANA INTEN: INTEN21 (Bit 21)                           */
+#define ANA_INTEN_INTEN21_Msk             (0x200000UL)              /*!< ANA INTEN: INTEN21 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN21                 ANA_INTEN_INTEN21_Msk
+#define ANA_INTEN_INTEN20_Pos             (20UL)                    /*!< ANA INTEN: INTEN20 (Bit 20)                           */
+#define ANA_INTEN_INTEN20_Msk             (0x100000UL)              /*!< ANA INTEN: INTEN20 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN20                 ANA_INTEN_INTEN20_Msk
+#define ANA_INTEN_INTEN19_Pos             (19UL)                    /*!< ANA INTEN: INTEN19 (Bit 19)                           */
+#define ANA_INTEN_INTEN19_Msk             (0x80000UL)               /*!< ANA INTEN: INTEN19 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN19                 ANA_INTEN_INTEN19_Msk
+#define ANA_INTEN_INTEN18_Pos             (18UL)                    /*!< ANA INTEN: INTEN18 (Bit 18)                           */
+#define ANA_INTEN_INTEN18_Msk             (0x40000UL)               /*!< ANA INTEN: INTEN18 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN18                 ANA_INTEN_INTEN18_Msk
+#define ANA_INTEN_INTEN17_Pos             (17UL)                    /*!< ANA INTEN: INTEN17 (Bit 17)                           */
+#define ANA_INTEN_INTEN17_Msk             (0x20000UL)               /*!< ANA INTEN: INTEN17 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN17                 ANA_INTEN_INTEN17_Msk
+#define ANA_INTEN_INTEN16_Pos             (16UL)                    /*!< ANA INTEN: INTEN16 (Bit 16)                           */
+#define ANA_INTEN_INTEN16_Msk             (0x10000UL)               /*!< ANA INTEN: INTEN16 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN16                 ANA_INTEN_INTEN16_Msk
+#define ANA_INTEN_INTEN15_Pos             (15UL)                    /*!< ANA INTEN: INTEN15 (Bit 15)                           */
+#define ANA_INTEN_INTEN15_Msk             (0x8000UL)                /*!< ANA INTEN: INTEN15 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN15                 ANA_INTEN_INTEN15_Msk
+#define ANA_INTEN_INTEN14_Pos             (14UL)                    /*!< ANA INTEN: INTEN14 (Bit 14)                           */
+#define ANA_INTEN_INTEN14_Msk             (0x4000UL)                /*!< ANA INTEN: INTEN14 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN14                 ANA_INTEN_INTEN14_Msk
+#define ANA_INTEN_INTEN13_Pos             (13UL)                    /*!< ANA INTEN: INTEN13 (Bit 13)                           */
+#define ANA_INTEN_INTEN13_Msk             (0x2000UL)                /*!< ANA INTEN: INTEN13 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN13                 ANA_INTEN_INTEN13_Msk
+#define ANA_INTEN_INTEN12_Pos             (12UL)                    /*!< ANA INTEN: INTEN12 (Bit 12)                           */
+#define ANA_INTEN_INTEN12_Msk             (0x1000UL)                /*!< ANA INTEN: INTEN12 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN12                 ANA_INTEN_INTEN12_Msk
+#define ANA_INTEN_INTEN11_Pos             (11UL)                    /*!< ANA INTEN: INTEN11 (Bit 11)                           */
+#define ANA_INTEN_INTEN11_Msk             (0x800UL)                 /*!< ANA INTEN: INTEN11 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN11                 ANA_INTEN_INTEN11_Msk
+#define ANA_INTEN_INTEN10_Pos             (10UL)                    /*!< ANA INTEN: INTEN10 (Bit 10)                           */
+#define ANA_INTEN_INTEN10_Msk             (0x400UL)                 /*!< ANA INTEN: INTEN10 (Bitfield-Mask: 0x01)              */
+#define ANA_INTEN_INTEN10                 ANA_INTEN_INTEN10_Msk
+#define ANA_INTEN_INTEN8_Pos              (8UL)                     /*!< ANA INTEN: INTEN8 (Bit 8)                             */
+#define ANA_INTEN_INTEN8_Msk              (0x100UL)                 /*!< ANA INTEN: INTEN8 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN8                  ANA_INTEN_INTEN8_Msk
+#define ANA_INTEN_INTEN7_Pos              (7UL)                     /*!< ANA INTEN: INTEN7 (Bit 7)                             */
+#define ANA_INTEN_INTEN7_Msk              (0x80UL)                  /*!< ANA INTEN: INTEN7 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN7                  ANA_INTEN_INTEN7_Msk
+#define ANA_INTEN_INTEN3_Pos              (3UL)                     /*!< ANA INTEN: INTEN3 (Bit 3)                             */
+#define ANA_INTEN_INTEN3_Msk              (0x8UL)                   /*!< ANA INTEN: INTEN3 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN3                  ANA_INTEN_INTEN3_Msk
+#define ANA_INTEN_INTEN2_Pos              (2UL)                     /*!< ANA INTEN: INTEN2 (Bit 2)                             */
+#define ANA_INTEN_INTEN2_Msk              (0x4UL)                   /*!< ANA INTEN: INTEN2 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN2                  ANA_INTEN_INTEN2_Msk
+#define ANA_INTEN_INTEN1_Pos              (1UL)                     /*!< ANA INTEN: INTEN1 (Bit 1)                             */
+#define ANA_INTEN_INTEN1_Msk              (0x2UL)                   /*!< ANA INTEN: INTEN1 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN1                  ANA_INTEN_INTEN1_Msk
+#define ANA_INTEN_INTEN0_Pos              (0UL)                     /*!< ANA INTEN: INTEN0 (Bit 0)                             */
+#define ANA_INTEN_INTEN0_Msk              (0x1UL)                   /*!< ANA INTEN: INTEN0 (Bitfield-Mask: 0x01)               */
+#define ANA_INTEN_INTEN0                  ANA_INTEN_INTEN0_Msk
+/* =======================================================  ADCCTRL0  ======================================================== */
+#define ANA_ADCCTRL0_MTRIG_Pos            (31UL)                    /*!< ANA ADCCTRL0: MTRIG (Bit 31)                          */
+#define ANA_ADCCTRL0_MTRIG_Msk            (0x80000000UL)            /*!< ANA ADCCTRL0: MTRIG (Bitfield-Mask: 0x01)             */
+#define ANA_ADCCTRL0_MTRIG                ANA_ADCCTRL0_MTRIG_Msk
+#define ANA_ADCCTRL0_STOP_Pos             (19UL)                    /*!< ANA ADCCTRL0: STOP (Bit 19)                           */
+#define ANA_ADCCTRL0_STOP_Msk             (0x80000UL)               /*!< ANA ADCCTRL0: STOP (Bitfield-Mask: 0x01)              */
+#define ANA_ADCCTRL0_STOP                 ANA_ADCCTRL0_STOP_Msk
+#define ANA_ADCCTRL0_AEN_Pos              (16UL)                    /*!< ANA ADCCTRL0: AEN (Bit 16)                            */
+#define ANA_ADCCTRL0_AEN_Msk              (0x70000UL)               /*!< ANA ADCCTRL0: AEN (Bitfield-Mask: 0x07)               */
+#define ANA_ADCCTRL0_AEN                  ANA_ADCCTRL0_AEN_Msk
+#define ANA_ADCCTRL0_CLKSRCSEL_Pos        (12UL)                    /*!< ANA ADCCTRL0: CLKSRCSEL (Bit 12)                      */
+#define ANA_ADCCTRL0_CLKSRCSEL_Msk        (0x1000UL)                /*!< ANA ADCCTRL0: CLKSRCSEL (Bitfield-Mask: 0x01)         */
+#define ANA_ADCCTRL0_CLKSRCSEL            ANA_ADCCTRL0_CLKSRCSEL_Msk
+/* ========================================================  CMPCTL  ========================================================= */
+#define ANA_CMPCTL_PWR_DEB_SEL_Pos        (24UL)                    /*!< ANA CMPCTL: PWR_DEB_SEL (Bit 24)                      */
+#define ANA_CMPCTL_PWR_DEB_SEL_Msk        (0xff000000UL)            /*!< ANA CMPCTL: PWR_DEB_SEL (Bitfield-Mask: 0xff)         */
+#define ANA_CMPCTL_PWR_DEB_SEL            ANA_CMPCTL_PWR_DEB_SEL_Msk
+#define ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL_Pos (22UL)                  /*!< ANA CMPCTL: VDDALARM_CHK_FRQ_SEL (Bit 22)             */
+#define ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL_Msk (0xc00000UL)            /*!< ANA CMPCTL: VDDALARM_CHK_FRQ_SEL (Bitfield-Mask: 0x03) */
+#define ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL     ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL_Msk
+#define ANA_CMPCTL_CMP2_IO_NODEB_Pos      (21UL)                    /*!< ANA CMPCTL: CMP2_IO_NODEB (Bit 21)                    */
+#define ANA_CMPCTL_CMP2_IO_NODEB_Msk      (0x200000UL)              /*!< ANA CMPCTL: CMP2_IO_NODEB (Bitfield-Mask: 0x01)       */
+#define ANA_CMPCTL_CMP2_IO_NODEB          ANA_CMPCTL_CMP2_IO_NODEB_Msk
+#define ANA_CMPCTL_CMP2_INT_MASK_EN_Pos   (20UL)                    /*!< ANA CMPCTL: CMP2_INT_MASK_EN (Bit 20)                 */
+#define ANA_CMPCTL_CMP2_INT_MASK_EN_Msk   (0x100000UL)              /*!< ANA CMPCTL: CMP2_INT_MASK_EN (Bitfield-Mask: 0x01)    */
+#define ANA_CMPCTL_CMP2_INT_MASK_EN       ANA_CMPCTL_CMP2_INT_MASK_EN_Msk
+#define ANA_CMPCTL_CMP1_IO_NODEB_Pos      (17UL)                    /*!< ANA CMPCTL: CMP1_IO_NODEB (Bit 17)                    */
+#define ANA_CMPCTL_CMP1_IO_NODEB_Msk      (0x20000UL)               /*!< ANA CMPCTL: CMP1_IO_NODEB (Bitfield-Mask: 0x01)       */
+#define ANA_CMPCTL_CMP1_IO_NODEB          ANA_CMPCTL_CMP1_IO_NODEB_Msk
+#define ANA_CMPCTL_CMP1_INT_MASK_EN_Pos   (16UL)                    /*!< ANA CMPCTL: CMP1_INT_MASK_EN (Bit 16)                 */
+#define ANA_CMPCTL_CMP1_INT_MASK_EN_Msk   (0x10000UL)               /*!< ANA CMPCTL: CMP1_INT_MASK_EN (Bitfield-Mask: 0x01)    */
+#define ANA_CMPCTL_CMP1_INT_MASK_EN       ANA_CMPCTL_CMP1_INT_MASK_EN_Msk
+#define ANA_CMPCTL_CMP2_CHK_NUM_Pos       (12UL)                    /*!< ANA CMPCTL: CMP2_CHK_NUM (Bit 12)                     */
+#define ANA_CMPCTL_CMP2_CHK_NUM_Msk       (0xf000UL)                /*!< ANA CMPCTL: CMP2_CHK_NUM (Bitfield-Mask: 0x0f)        */
+#define ANA_CMPCTL_CMP2_CHK_NUM           ANA_CMPCTL_CMP2_CHK_NUM_Msk
+#define ANA_CMPCTL_CMP2_THR_EN_Pos        (11UL)                    /*!< ANA CMPCTL: CMP2_THR_EN (Bit 11)                      */
+#define ANA_CMPCTL_CMP2_THR_EN_Msk        (0x800UL)                 /*!< ANA CMPCTL: CMP2_THR_EN (Bitfield-Mask: 0x01)         */
+#define ANA_CMPCTL_CMP2_THR_EN            ANA_CMPCTL_CMP2_THR_EN_Msk
+#define ANA_CMPCTL_CMP2_CHK_FRQ_Pos       (8UL)                     /*!< ANA CMPCTL: CMP2_CHK_FRQ (Bit 8)                      */
+#define ANA_CMPCTL_CMP2_CHK_FRQ_Msk       (0x700UL)                 /*!< ANA CMPCTL: CMP2_CHK_FRQ (Bitfield-Mask: 0x07)        */
+#define ANA_CMPCTL_CMP2_CHK_FRQ           ANA_CMPCTL_CMP2_CHK_FRQ_Msk
+#define ANA_CMPCTL_CMP1_CHK_NUM_Pos       (4UL)                     /*!< ANA CMPCTL: CMP1_CHK_NUM (Bit 4)                      */
+#define ANA_CMPCTL_CMP1_CHK_NUM_Msk       (0xf0UL)                  /*!< ANA CMPCTL: CMP1_CHK_NUM (Bitfield-Mask: 0x0f)        */
+#define ANA_CMPCTL_CMP1_CHK_NUM           ANA_CMPCTL_CMP1_CHK_NUM_Msk
+#define ANA_CMPCTL_CMP1_THR_EN_Pos        (3UL)                     /*!< ANA CMPCTL: CMP1_THR_EN (Bit 3)                       */
+#define ANA_CMPCTL_CMP1_THR_EN_Msk        (0x8UL)                   /*!< ANA CMPCTL: CMP1_THR_EN (Bitfield-Mask: 0x01)         */
+#define ANA_CMPCTL_CMP1_THR_EN            ANA_CMPCTL_CMP1_THR_EN_Msk
+#define ANA_CMPCTL_CMP1_CHK_FRQ_Pos       (0UL)                     /*!< ANA CMPCTL: CMP1_CHK_FRQ (Bit 0)                      */
+#define ANA_CMPCTL_CMP1_CHK_FRQ_Msk       (0x7UL)                   /*!< ANA CMPCTL: CMP1_CHK_FRQ (Bitfield-Mask: 0x07)        */
+#define ANA_CMPCTL_CMP1_CHK_FRQ           ANA_CMPCTL_CMP1_CHK_FRQ_Msk
+/* ========================================================  ADCDATA  ======================================================== */
+#define ANA_ADCDATA_ADCDATA_Pos           (0UL)                     /*!< ANA ADCDATA: ADCDATA (Bit 0)                          */
+#define ANA_ADCDATA_ADCDATA_Msk           (0xffffUL)                /*!< ANA ADCDATA: ADCDATA (Bitfield-Mask: 0xffff)          */
+#define ANA_ADCDATA_ADCDATA               ANA_ADCDATA_ADCDATA_Msk
+/* ========================================================  CMPCNT  ========================================================= */
+#define ANA_CMPCNT_CNT_Pos                (0UL)                     /*!< ANA CMPCNT: CNT (Bit 0)                               */
+#define ANA_CMPCNT_CNT_Msk                (0xffffffffUL)            /*!< ANA CMPCNT: CNT (Bitfield-Mask: 0xffffffff)           */
+#define ANA_CMPCNT_CNT                    ANA_CMPCNT_CNT_Msk
+/* =========================================================  MISC  ========================================================== */
+#define ANA_MISC_TADCTH_Pos               (4UL)                     /*!< ANA MISC: TADCTH (Bit 4)                              */
+#define ANA_MISC_TADCTH_Msk               (0x30UL)                  /*!< ANA MISC: TADCTH (Bitfield-Mask: 0x03)                */
+#define ANA_MISC_TADCTH                   ANA_MISC_TADCTH_Msk
+/* ========================================================  ADCDOS  ========================================================= */
+#define ANA_ADCDOS_DOS_Pos                (0UL)                     /*!< ANA ADCDOS: DOS (Bit 0)                               */
+#define ANA_ADCDOS_DOS_Msk                (0xffUL)                  /*!< ANA ADCDOS: DOS (Bitfield-Mask: 0xff)                 */
+#define ANA_ADCDOS_DOS                    ANA_ADCDOS_DOS_Msk
+/* ======================================================  ADCDATADMA  ======================================================= */
+#define ANA_ADCDATADMA_ADCDATA_DMA_Pos    (0UL)                     /*!< ANA ADCDATADMA: ADCDATA_DMA (Bit 0)                   */
+#define ANA_ADCDATADMA_ADCDATA_DMA_Msk    (0xffffUL)                /*!< ANA ADCDATADMA: ADCDATA_DMA (Bitfield-Mask: 0xffff)   */
+#define ANA_ADCDATADMA_ADCDATA_DMA        ANA_ADCDATADMA_ADCDATA_DMA_Msk
+/* ========================================================  CMPTHR  ========================================================= */
+#define ANA_CMPTHR_CMP2_THR_Pos           (16UL)                    /*!< ANA CMPTHR: CMP2_THR (Bit 16)                         */
+#define ANA_CMPTHR_CMP2_THR_Msk           (0xffff0000UL)            /*!< ANA CMPTHR: CMP2_THR (Bitfield-Mask: 0xffff)          */
+#define ANA_CMPTHR_CMP2_THR               ANA_CMPTHR_CMP2_THR_Msk
+#define ANA_CMPTHR_CMP1_THR_Pos           (0UL)                     /*!< ANA CMPTHR: CMP1_THR (Bit 0)                          */
+#define ANA_CMPTHR_CMP1_THR_Msk           (0xffffUL)                /*!< ANA CMPTHR: CMP1_THR (Bitfield-Mask: 0xffff)          */
+#define ANA_CMPTHR_CMP1_THR               ANA_CMPTHR_CMP1_THR_Msk
+/* =======================================================  ADCCTRL1  ======================================================== */
+#define ANA_ADCCTRL1_RESDIV_CHx_Pos       (16UL)                    /*!< ANA ADCCTRL1: RESDIV_CHx (Bit 16)                     */
+#define ANA_ADCCTRL1_RESDIV_CHx_Msk       (0xffff0000UL)            /*!< ANA ADCCTRL1: RESDIV_CHx (Bitfield-Mask: 0xffff)      */
+#define ANA_ADCCTRL1_RESDIV_CHx           ANA_ADCCTRL1_RESDIV_CHx_Msk
+#define ANA_ADCCTRL1_UPPER_THD3_EN_Pos    (15UL)                    /*!< ANA ADCCTRL1: UPPER_THD3_EN (Bit 15)                  */
+#define ANA_ADCCTRL1_UPPER_THD3_EN_Msk    (0x8000UL)                /*!< ANA ADCCTRL1: UPPER_THD3_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_UPPER_THD3_EN        ANA_ADCCTRL1_UPPER_THD3_EN_Msk
+#define ANA_ADCCTRL1_LOWER_THD3_EN_Pos    (14UL)                    /*!< ANA ADCCTRL1: LOWER_THD3_EN (Bit 14)                  */
+#define ANA_ADCCTRL1_LOWER_THD3_EN_Msk    (0x4000UL)                /*!< ANA ADCCTRL1: LOWER_THD3_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_LOWER_THD3_EN        ANA_ADCCTRL1_LOWER_THD3_EN_Msk
+#define ANA_ADCCTRL1_UPPER_THD2_EN_Pos    (13UL)                    /*!< ANA ADCCTRL1: UPPER_THD2_EN (Bit 13)                  */
+#define ANA_ADCCTRL1_UPPER_THD2_EN_Msk    (0x2000UL)                /*!< ANA ADCCTRL1: UPPER_THD2_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_UPPER_THD2_EN        ANA_ADCCTRL1_UPPER_THD2_EN_Msk
+#define ANA_ADCCTRL1_LOWER_THD2_EN_Pos    (12UL)                    /*!< ANA ADCCTRL1: LOWER_THD2_EN (Bit 12)                  */
+#define ANA_ADCCTRL1_LOWER_THD2_EN_Msk    (0x1000UL)                /*!< ANA ADCCTRL1: LOWER_THD2_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_LOWER_THD2_EN        ANA_ADCCTRL1_LOWER_THD2_EN_Msk
+#define ANA_ADCCTRL1_UPPER_THD1_EN_Pos    (11UL)                    /*!< ANA ADCCTRL1: UPPER_THD1_EN (Bit 11)                  */
+#define ANA_ADCCTRL1_UPPER_THD1_EN_Msk    (0x800UL)                 /*!< ANA ADCCTRL1: UPPER_THD1_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_UPPER_THD1_EN        ANA_ADCCTRL1_UPPER_THD1_EN_Msk
+#define ANA_ADCCTRL1_LOWER_THD1_EN_Pos    (10UL)                    /*!< ANA ADCCTRL1: LOWER_THD1_EN (Bit 10)                  */
+#define ANA_ADCCTRL1_LOWER_THD1_EN_Msk    (0x400UL)                 /*!< ANA ADCCTRL1: LOWER_THD1_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_LOWER_THD1_EN        ANA_ADCCTRL1_LOWER_THD1_EN_Msk
+#define ANA_ADCCTRL1_UPPER_THD0_EN_Pos    (9UL)                     /*!< ANA ADCCTRL1: UPPER_THD0_EN (Bit 9)                   */
+#define ANA_ADCCTRL1_UPPER_THD0_EN_Msk    (0x200UL)                 /*!< ANA ADCCTRL1: UPPER_THD0_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_UPPER_THD0_EN        ANA_ADCCTRL1_UPPER_THD0_EN_Msk
+#define ANA_ADCCTRL1_LOWER_THD0_EN_Pos    (8UL)                     /*!< ANA ADCCTRL1: LOWER_THD0_EN (Bit 8)                   */
+#define ANA_ADCCTRL1_LOWER_THD0_EN_Msk    (0x100UL)                 /*!< ANA ADCCTRL1: LOWER_THD0_EN (Bitfield-Mask: 0x01)     */
+#define ANA_ADCCTRL1_LOWER_THD0_EN        ANA_ADCCTRL1_LOWER_THD0_EN_Msk
+/* =======================================================  ADCCTRL2  ======================================================== */
+#define ANA_ADCCTRL2_SCAN_CHx_Pos         (16UL)                    /*!< ANA ADCCTRL2: SCAN_CHx (Bit 16)                       */
+#define ANA_ADCCTRL2_SCAN_CHx_Msk         (0xffff0000UL)            /*!< ANA ADCCTRL2: SCAN_CHx (Bitfield-Mask: 0xffff)        */
+#define ANA_ADCCTRL2_SCAN_CHx             ANA_ADCCTRL2_SCAN_CHx_Msk
+#define ANA_ADCCTRL2_CONV_ERR_Pos         (11UL)                    /*!< ANA ADCCTRL2: CONV_ERR (Bit 11)                       */
+#define ANA_ADCCTRL2_CONV_ERR_Msk         (0x800UL)                 /*!< ANA ADCCTRL2: CONV_ERR (Bitfield-Mask: 0x01)          */
+#define ANA_ADCCTRL2_CONV_ERR             ANA_ADCCTRL2_CONV_ERR_Msk
+#define ANA_ADCCTRL2_CAL_ERR_Pos          (10UL)                    /*!< ANA ADCCTRL2: CAL_ERR (Bit 10)                        */
+#define ANA_ADCCTRL2_CAL_ERR_Msk          (0x400UL)                 /*!< ANA ADCCTRL2: CAL_ERR (Bitfield-Mask: 0x01)           */
+#define ANA_ADCCTRL2_CAL_ERR              ANA_ADCCTRL2_CAL_ERR_Msk
+#define ANA_ADCCTRL2_CONV_ERR_CLR_Pos     (9UL)                     /*!< ANA ADCCTRL2: CONV_ERR_CLR (Bit 9)                    */
+#define ANA_ADCCTRL2_CONV_ERR_CLR_Msk     (0x200UL)                 /*!< ANA ADCCTRL2: CONV_ERR_CLR (Bitfield-Mask: 0x01)      */
+#define ANA_ADCCTRL2_CONV_ERR_CLR         ANA_ADCCTRL2_CONV_ERR_CLR_Msk
+#define ANA_ADCCTRL2_CAL_ERR_CLR_Pos      (8UL)                     /*!< ANA ADCCTRL2: CAL_ERR_CLR (Bit 8)                     */
+#define ANA_ADCCTRL2_CAL_ERR_CLR_Msk      (0x100UL)                 /*!< ANA ADCCTRL2: CAL_ERR_CLR (Bitfield-Mask: 0x01)       */
+#define ANA_ADCCTRL2_CAL_ERR_CLR          ANA_ADCCTRL2_CAL_ERR_CLR_Msk
+#define ANA_ADCCTRL2_RTC_CAL_DONE_Pos     (7UL)                     /*!< ANA ADCCTRL2: RTC_CAL_DONE (Bit 7)                    */
+#define ANA_ADCCTRL2_RTC_CAL_DONE_Msk     (0x80UL)                  /*!< ANA ADCCTRL2: RTC_CAL_DONE (Bitfield-Mask: 0x01)      */
+#define ANA_ADCCTRL2_RTC_CAL_DONE         ANA_ADCCTRL2_RTC_CAL_DONE_Msk
+#define ANA_ADCCTRL2_ADC_EN_TRG_CAL_Pos   (6UL)                     /*!< ANA ADCCTRL2: ADC_EN_TRG_CAL (Bit 6)                  */
+#define ANA_ADCCTRL2_ADC_EN_TRG_CAL_Msk   (0x40UL)                  /*!< ANA ADCCTRL2: ADC_EN_TRG_CAL (Bitfield-Mask: 0x01)    */
+#define ANA_ADCCTRL2_ADC_EN_TRG_CAL       ANA_ADCCTRL2_ADC_EN_TRG_CAL_Msk
+#define ANA_ADCCTRL2_BUSY_Pos             (5UL)                     /*!< ANA ADCCTRL2: BUSY (Bit 5)                            */
+#define ANA_ADCCTRL2_BUSY_Msk             (0x20UL)                  /*!< ANA ADCCTRL2: BUSY (Bitfield-Mask: 0x01)              */
+#define ANA_ADCCTRL2_BUSY                 ANA_ADCCTRL2_BUSY_Msk
+#define ANA_ADCCTRL2_ADCCR_Pos            (3UL)                     /*!< ANA ADCCTRL2: ADCCR (Bit 3)                           */
+#define ANA_ADCCTRL2_ADCCR_Msk            (0x8UL)                   /*!< ANA ADCCTRL2: ADCCR (Bitfield-Mask: 0x01)             */
+#define ANA_ADCCTRL2_ADCCR                ANA_ADCCTRL2_ADCCR_Msk
+#define ANA_ADCCTRL2_RESET_Pos            (1UL)                     /*!< ANA ADCCTRL2: RESET (Bit 1)                           */
+#define ANA_ADCCTRL2_RESET_Msk            (0x2UL)                   /*!< ANA ADCCTRL2: RESET (Bitfield-Mask: 0x01)             */
+#define ANA_ADCCTRL2_RESET                ANA_ADCCTRL2_RESET_Msk
+#define ANA_ADCCTRL2_ADC_EN_Pos           (0UL)                     /*!< ANA ADCCTRL2: ADC_EN (Bit 0)                          */
+#define ANA_ADCCTRL2_ADC_EN_Msk           (0x1UL)                   /*!< ANA ADCCTRL2: ADC_EN (Bitfield-Mask: 0x01)            */
+#define ANA_ADCCTRL2_ADC_EN               ANA_ADCCTRL2_ADC_EN_Msk
+/* =====================================================  ADCDATATHD1_0  ===================================================== */
+#define ANA_ADCDATATHD1_0_UPPER_THD1_Pos  (24UL)                    /*!< ANA ADCDATATHD1_0: UPPER_THD1 (Bit 24)                */
+#define ANA_ADCDATATHD1_0_UPPER_THD1_Msk  (0xff000000UL)            /*!< ANA ADCDATATHD1_0: UPPER_THD1 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD1_0_UPPER_THD1      ANA_ADCDATATHD1_0_UPPER_THD1_Msk
+#define ANA_ADCDATATHD1_0_LOWER_THD1_Pos  (16UL)                    /*!< ANA ADCDATATHD1_0: LOWER_THD1 (Bit 16)                */
+#define ANA_ADCDATATHD1_0_LOWER_THD1_Msk  (0xff0000UL)              /*!< ANA ADCDATATHD1_0: LOWER_THD1 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD1_0_LOWER_THD1      ANA_ADCDATATHD1_0_LOWER_THD1_Msk
+#define ANA_ADCDATATHD1_0_UPPER_THD0_Pos  (8UL)                     /*!< ANA ADCDATATHD1_0: UPPER_THD0 (Bit 8)                 */
+#define ANA_ADCDATATHD1_0_UPPER_THD0_Msk  (0xff00UL)                /*!< ANA ADCDATATHD1_0: UPPER_THD0 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD1_0_UPPER_THD0      ANA_ADCDATATHD1_0_UPPER_THD0_Msk
+#define ANA_ADCDATATHD1_0_LOWER_THD0_Pos  (0UL)                     /*!< ANA ADCDATATHD1_0: LOWER_THD0 (Bit 0)                 */
+#define ANA_ADCDATATHD1_0_LOWER_THD0_Msk  (0xffUL)                  /*!< ANA ADCDATATHD1_0: LOWER_THD0 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD1_0_LOWER_THD0      ANA_ADCDATATHD1_0_LOWER_THD0_Msk
+/* =====================================================  ADCDATATHD3_2  ===================================================== */
+#define ANA_ADCDATATHD3_2_UPPER_THD3_Pos  (24UL)                    /*!< ANA ADCDATATHD3_2: UPPER_THD3 (Bit 24)                */
+#define ANA_ADCDATATHD3_2_UPPER_THD3_Msk  (0xff000000UL)            /*!< ANA ADCDATATHD3_2: UPPER_THD3 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD3_2_UPPER_THD3      ANA_ADCDATATHD3_2_UPPER_THD3_Msk
+#define ANA_ADCDATATHD3_2_LOWER_THD3_Pos  (16UL)                    /*!< ANA ADCDATATHD3_2: LOWER_THD3 (Bit 16)                */
+#define ANA_ADCDATATHD3_2_LOWER_THD3_Msk  (0xff0000UL)              /*!< ANA ADCDATATHD3_2: LOWER_THD3 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD3_2_LOWER_THD3      ANA_ADCDATATHD3_2_LOWER_THD3_Msk
+#define ANA_ADCDATATHD3_2_UPPER_THD2_Pos  (8UL)                     /*!< ANA ADCDATATHD3_2: UPPER_THD2 (Bit 8)                 */
+#define ANA_ADCDATATHD3_2_UPPER_THD2_Msk  (0xff00UL)                /*!< ANA ADCDATATHD3_2: UPPER_THD2 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD3_2_UPPER_THD2      ANA_ADCDATATHD3_2_UPPER_THD2_Msk
+#define ANA_ADCDATATHD3_2_LOWER_THD2_Pos  (0UL)                     /*!< ANA ADCDATATHD3_2: LOWER_THD2 (Bit 0)                 */
+#define ANA_ADCDATATHD3_2_LOWER_THD2_Msk  (0xffUL)                  /*!< ANA ADCDATATHD3_2: LOWER_THD2 (Bitfield-Mask: 0xff)   */
+#define ANA_ADCDATATHD3_2_LOWER_THD2      ANA_ADCDATATHD3_2_LOWER_THD2_Msk
+/* =====================================================  ADCDATATHD_CH  ===================================================== */
+#define ANA_ADCDATATHD_CH_UPPER_THD3_TRGED_Pos (31UL)               /*!< ANA ADCDATATHD_CH: UPPER_THD3_TRGED (Bit 31)          */
+#define ANA_ADCDATATHD_CH_UPPER_THD3_TRGED_Msk (0x80000000UL)       /*!< ANA ADCDATATHD_CH: UPPER_THD3_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_UPPER_THD3_TRGED     ANA_ADCDATATHD_CH_UPPER_THD3_TRGED_Msk
+#define ANA_ADCDATATHD_CH_LOWER_THD3_TRGED_Pos (30UL)               /*!< ANA ADCDATATHD_CH: LOWER_THD3_TRGED (Bit 30)          */
+#define ANA_ADCDATATHD_CH_LOWER_THD3_TRGED_Msk (0x40000000UL)       /*!< ANA ADCDATATHD_CH: LOWER_THD3_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_LOWER_THD3_TRGED     ANA_ADCDATATHD_CH_LOWER_THD3_TRGED_Msk
+#define ANA_ADCDATATHD_CH_UPPER_THD2_TRGED_Pos (29UL)               /*!< ANA ADCDATATHD_CH: UPPER_THD2_TRGED (Bit 29)          */
+#define ANA_ADCDATATHD_CH_UPPER_THD2_TRGED_Msk (0x20000000UL)       /*!< ANA ADCDATATHD_CH: UPPER_THD2_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_UPPER_THD2_TRGED     ANA_ADCDATATHD_CH_UPPER_THD2_TRGED_Msk
+#define ANA_ADCDATATHD_CH_LOWER_THD2_TRGED_Pos (28UL)               /*!< ANA ADCDATATHD_CH: LOWER_THD2_TRGED (Bit 28)          */
+#define ANA_ADCDATATHD_CH_LOWER_THD2_TRGED_Msk (0x10000000UL)       /*!< ANA ADCDATATHD_CH: LOWER_THD2_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_LOWER_THD2_TRGED     ANA_ADCDATATHD_CH_LOWER_THD2_TRGED_Msk
+#define ANA_ADCDATATHD_CH_UPPER_THD1_TRGED_Pos (27UL)               /*!< ANA ADCDATATHD_CH: UPPER_THD1_TRGED (Bit 27)          */
+#define ANA_ADCDATATHD_CH_UPPER_THD1_TRGED_Msk (0x8000000UL)        /*!< ANA ADCDATATHD_CH: UPPER_THD1_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_UPPER_THD1_TRGED     ANA_ADCDATATHD_CH_UPPER_THD1_TRGED_Msk
+#define ANA_ADCDATATHD_CH_LOWER_THD1_TRGED_Pos (26UL)               /*!< ANA ADCDATATHD_CH: LOWER_THD1_TRGED (Bit 26)          */
+#define ANA_ADCDATATHD_CH_LOWER_THD1_TRGED_Msk (0x4000000UL)        /*!< ANA ADCDATATHD_CH: LOWER_THD1_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_LOWER_THD1_TRGED     ANA_ADCDATATHD_CH_LOWER_THD1_TRGED_Msk
+#define ANA_ADCDATATHD_CH_UPPER_THD0_TRGED_Pos (25UL)               /*!< ANA ADCDATATHD_CH: UPPER_THD0_TRGED (Bit 25)          */
+#define ANA_ADCDATATHD_CH_UPPER_THD0_TRGED_Msk (0x2000000UL)        /*!< ANA ADCDATATHD_CH: UPPER_THD0_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_UPPER_THD0_TRGED     ANA_ADCDATATHD_CH_UPPER_THD0_TRGED_Msk
+#define ANA_ADCDATATHD_CH_LOWER_THD0_TRGED_Pos (24UL)               /*!< ANA ADCDATATHD_CH: LOWER_THD0_TRGED (Bit 24)          */
+#define ANA_ADCDATATHD_CH_LOWER_THD0_TRGED_Msk (0x1000000UL)        /*!< ANA ADCDATATHD_CH: LOWER_THD0_TRGED (Bitfield-Mask: 0x01) */
+#define ANA_ADCDATATHD_CH_LOWER_THD0_TRGED     ANA_ADCDATATHD_CH_LOWER_THD0_TRGED_Msk
+#define ANA_ADCDATATHD_CH_THD3_SEL_Pos    (22UL)                    /*!< ANA ADCDATATHD_CH: THD3_SEL (Bit 22)                  */
+#define ANA_ADCDATATHD_CH_THD3_SEL_Msk    (0xc00000UL)              /*!< ANA ADCDATATHD_CH: THD3_SEL (Bitfield-Mask: 0x03)     */
+#define ANA_ADCDATATHD_CH_THD3_SEL        ANA_ADCDATATHD_CH_THD3_SEL_Msk
+#define ANA_ADCDATATHD_CH_THD2_SEL_Pos    (20UL)                    /*!< ANA ADCDATATHD_CH: THD2_SEL (Bit 20)                  */
+#define ANA_ADCDATATHD_CH_THD2_SEL_Msk    (0x300000UL)              /*!< ANA ADCDATATHD_CH: THD2_SEL (Bitfield-Mask: 0x03)     */
+#define ANA_ADCDATATHD_CH_THD2_SEL        ANA_ADCDATATHD_CH_THD2_SEL_Msk
+#define ANA_ADCDATATHD_CH_THD1_SEL_Pos    (18UL)                    /*!< ANA ADCDATATHD_CH: THD1_SEL (Bit 18)                  */
+#define ANA_ADCDATATHD_CH_THD1_SEL_Msk    (0xc0000UL)               /*!< ANA ADCDATATHD_CH: THD1_SEL (Bitfield-Mask: 0x03)     */
+#define ANA_ADCDATATHD_CH_THD1_SEL        ANA_ADCDATATHD_CH_THD1_SEL_Msk
+#define ANA_ADCDATATHD_CH_THD0_SEL_Pos    (16UL)                    /*!< ANA ADCDATATHD_CH: THD0_SEL (Bit 16)                  */
+#define ANA_ADCDATATHD_CH_THD0_SEL_Msk    (0x30000UL)               /*!< ANA ADCDATATHD_CH: THD0_SEL (Bitfield-Mask: 0x03)     */
+#define ANA_ADCDATATHD_CH_THD0_SEL        ANA_ADCDATATHD_CH_THD0_SEL_Msk
+#define ANA_ADCDATATHD_CH_THD3_CH_Pos     (12UL)                    /*!< ANA ADCDATATHD_CH: THD3_CH (Bit 12)                   */
+#define ANA_ADCDATATHD_CH_THD3_CH_Msk     (0xf000UL)                /*!< ANA ADCDATATHD_CH: THD3_CH (Bitfield-Mask: 0x0f)      */
+#define ANA_ADCDATATHD_CH_THD3_CH         ANA_ADCDATATHD_CH_THD3_CH_Msk
+#define ANA_ADCDATATHD_CH_THD2_CH_Pos     (8UL)                     /*!< ANA ADCDATATHD_CH: THD2_CH (Bit 8)                    */
+#define ANA_ADCDATATHD_CH_THD2_CH_Msk     (0xf00UL)                 /*!< ANA ADCDATATHD_CH: THD2_CH (Bitfield-Mask: 0x0f)      */
+#define ANA_ADCDATATHD_CH_THD2_CH         ANA_ADCDATATHD_CH_THD2_CH_Msk
+#define ANA_ADCDATATHD_CH_THD1_CH_Pos     (4UL)                     /*!< ANA ADCDATATHD_CH: THD1_CH (Bit 4)                    */
+#define ANA_ADCDATATHD_CH_THD1_CH_Msk     (0xf0UL)                  /*!< ANA ADCDATATHD_CH: THD1_CH (Bitfield-Mask: 0x0f)      */
+#define ANA_ADCDATATHD_CH_THD1_CH         ANA_ADCDATATHD_CH_THD1_CH_Msk
+#define ANA_ADCDATATHD_CH_THD0_CH_Pos     (0UL)                     /*!< ANA ADCDATATHD_CH: THD0_CH (Bit 0)                    */
+#define ANA_ADCDATATHD_CH_THD0_CH_Msk     (0xfUL)                   /*!< ANA ADCDATATHD_CH: THD0_CH (Bitfield-Mask: 0x0f)      */
+#define ANA_ADCDATATHD_CH_THD0_CH         ANA_ADCDATATHD_CH_THD0_CH_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           CRYPT                                           ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  CTRL  ========================================================== */
+#define CRYPT_CTRL_NOSTOP_Pos             (15UL)                    /*!< CRYPT CTRL: NOSTOP (Bit 15)                           */
+#define CRYPT_CTRL_NOSTOP_Msk             (0x8000UL)                /*!< CRYPT CTRL: NOSTOP (Bitfield-Mask: 0x01)              */
+#define CRYPT_CTRL_NOSTOP                 CRYPT_CTRL_NOSTOP_Msk
+#define CRYPT_CTRL_LENGTH_Pos             (8UL)                     /*!< CRYPT CTRL: LENGTH (Bit 8)                            */
+#define CRYPT_CTRL_LENGTH_Msk             (0xf00UL)                 /*!< CRYPT CTRL: LENGTH (Bitfield-Mask: 0x0f)              */
+#define CRYPT_CTRL_LENGTH                 CRYPT_CTRL_LENGTH_Msk
+#define CRYPT_CTRL_MODE_Pos               (4UL)                     /*!< CRYPT CTRL: MODE (Bit 4)                              */
+#define CRYPT_CTRL_MODE_Msk               (0x70UL)                  /*!< CRYPT CTRL: MODE (Bitfield-Mask: 0x07)                */
+#define CRYPT_CTRL_MODE                   CRYPT_CTRL_MODE_Msk
+#define CRYPT_CTRL_ACT_Pos                (0UL)                     /*!< CRYPT CTRL: ACT (Bit 0)                               */
+#define CRYPT_CTRL_ACT_Msk                (0x1UL)                   /*!< CRYPT CTRL: ACT (Bitfield-Mask: 0x01)                 */
+#define CRYPT_CTRL_ACT                    CRYPT_CTRL_ACT_Msk
+/* =========================================================  PTRA  ========================================================== */
+#define CRYPT_PTRA_PTRA_Pos               (0UL)                     /*!< CRYPT PTRA: PTRA (Bit 0)                              */
+#define CRYPT_PTRA_PTRA_Msk               (0xffffUL)                /*!< CRYPT PTRA: PTRA (Bitfield-Mask: 0xffff)              */
+#define CRYPT_PTRA_PTRA                   CRYPT_PTRA_PTRA_Msk
+/* =========================================================  PTRB  ========================================================== */
+#define CRYPT_PTRB_PTRB_Pos               (0UL)                     /*!< CRYPT PTRB: PTRB (Bit 0)                              */
+#define CRYPT_PTRB_PTRB_Msk               (0xffffUL)                /*!< CRYPT PTRB: PTRB (Bitfield-Mask: 0xffff)              */
+#define CRYPT_PTRB_PTRB                   CRYPT_PTRB_PTRB_Msk
+/* =========================================================  PTRO  ========================================================== */
+#define CRYPT_PTRO_PTRO_Pos               (0UL)                     /*!< CRYPT PTRO: PTRO (Bit 0)                              */
+#define CRYPT_PTRO_PTRO_Msk               (0xffffUL)                /*!< CRYPT PTRO: PTRO (Bitfield-Mask: 0xffff)              */
+#define CRYPT_PTRO_PTRO                   CRYPT_PTRO_PTRO_Msk
+/* =========================================================  CARRY  ========================================================= */
+#define CRYPT_CARRY_CARRY_Pos             (0UL)                     /*!< CRYPT CARRY: CARRY (Bit 0)                            */
+#define CRYPT_CARRY_CARRY_Msk             (0x1UL)                   /*!< CRYPT CARRY: CARRY (Bitfield-Mask: 0x01)              */
+#define CRYPT_CARRY_CARRY                 CRYPT_CARRY_CARRY_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            DMA                                            ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  IE  =========================================================== */
+#define DMA_IE_C3DAIE_Pos                 (11UL)                    /*!< DMA IE: C3DAIE (Bit 11)                               */
+#define DMA_IE_C3DAIE_Msk                 (0x800UL)                 /*!< DMA IE: C3DAIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C3DAIE                     DMA_IE_C3DAIE_Msk
+#define DMA_IE_C2DAIE_Pos                 (10UL)                    /*!< DMA IE: C2DAIE (Bit 10)                               */
+#define DMA_IE_C2DAIE_Msk                 (0x400UL)                 /*!< DMA IE: C2DAIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C2DAIE                     DMA_IE_C2DAIE_Msk
+#define DMA_IE_C1DAIE_Pos                 (9UL)                     /*!< DMA IE: C1DAIE (Bit 9)                                */
+#define DMA_IE_C1DAIE_Msk                 (0x200UL)                 /*!< DMA IE: C1DAIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C1DAIE                     DMA_IE_C1DAIE_Msk
+#define DMA_IE_C0DAIE_Pos                 (8UL)                     /*!< DMA IE: C0DAIE (Bit 8)                                */
+#define DMA_IE_C0DAIE_Msk                 (0x100UL)                 /*!< DMA IE: C0DAIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C0DAIE                     DMA_IE_C0DAIE_Msk
+#define DMA_IE_C3FEIE_Pos                 (7UL)                     /*!< DMA IE: C3FEIE (Bit 7)                                */
+#define DMA_IE_C3FEIE_Msk                 (0x80UL)                  /*!< DMA IE: C3FEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C3FEIE                     DMA_IE_C3FEIE_Msk
+#define DMA_IE_C2FEIE_Pos                 (6UL)                     /*!< DMA IE: C2FEIE (Bit 6)                                */
+#define DMA_IE_C2FEIE_Msk                 (0x40UL)                  /*!< DMA IE: C2FEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C2FEIE                     DMA_IE_C2FEIE_Msk
+#define DMA_IE_C1FEIE_Pos                 (5UL)                     /*!< DMA IE: C1FEIE (Bit 5)                                */
+#define DMA_IE_C1FEIE_Msk                 (0x20UL)                  /*!< DMA IE: C1FEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C1FEIE                     DMA_IE_C1FEIE_Msk
+#define DMA_IE_C0FEIE_Pos                 (4UL)                     /*!< DMA IE: C0FEIE (Bit 4)                                */
+#define DMA_IE_C0FEIE_Msk                 (0x10UL)                  /*!< DMA IE: C0FEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C0FEIE                     DMA_IE_C0FEIE_Msk
+#define DMA_IE_C3PEIE_Pos                 (3UL)                     /*!< DMA IE: C3PEIE (Bit 3)                                */
+#define DMA_IE_C3PEIE_Msk                 (0x8UL)                   /*!< DMA IE: C3PEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C3PEIE                     DMA_IE_C3PEIE_Msk
+#define DMA_IE_C2PEIE_Pos                 (2UL)                     /*!< DMA IE: C2PEIE (Bit 2)                                */
+#define DMA_IE_C2PEIE_Msk                 (0x4UL)                   /*!< DMA IE: C2PEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C2PEIE                     DMA_IE_C2PEIE_Msk
+#define DMA_IE_C1PEIE_Pos                 (1UL)                     /*!< DMA IE: C1PEIE (Bit 1)                                */
+#define DMA_IE_C1PEIE_Msk                 (0x2UL)                   /*!< DMA IE: C1PEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C1PEIE                     DMA_IE_C1PEIE_Msk
+#define DMA_IE_C0PEIE_Pos                 (0UL)                     /*!< DMA IE: C0PEIE (Bit 0)                                */
+#define DMA_IE_C0PEIE_Msk                 (0x1UL)                   /*!< DMA IE: C0PEIE (Bitfield-Mask: 0x01)                  */
+#define DMA_IE_C0PEIE                     DMA_IE_C0PEIE_Msk
+/* ==========================================================  STS  ========================================================== */
+#define DMA_STS_C3DA_Pos                  (15UL)                    /*!< DMA STS: C3DA (Bit 15)                                */
+#define DMA_STS_C3DA_Msk                  (0x8000UL)                /*!< DMA STS: C3DA (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C3DA                      DMA_STS_C3DA_Msk
+#define DMA_STS_C2DA_Pos                  (14UL)                    /*!< DMA STS: C2DA (Bit 14)                                */
+#define DMA_STS_C2DA_Msk                  (0x4000UL)                /*!< DMA STS: C2DA (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C2DA                      DMA_STS_C2DA_Msk
+#define DMA_STS_C1DA_Pos                  (13UL)                    /*!< DMA STS: C1DA (Bit 13)                                */
+#define DMA_STS_C1DA_Msk                  (0x2000UL)                /*!< DMA STS: C1DA (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C1DA                      DMA_STS_C1DA_Msk
+#define DMA_STS_C0DA_Pos                  (12UL)                    /*!< DMA STS: C0DA (Bit 12)                                */
+#define DMA_STS_C0DA_Msk                  (0x1000UL)                /*!< DMA STS: C0DA (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C0DA                      DMA_STS_C0DA_Msk
+#define DMA_STS_C3FE_Pos                  (11UL)                    /*!< DMA STS: C3FE (Bit 11)                                */
+#define DMA_STS_C3FE_Msk                  (0x800UL)                 /*!< DMA STS: C3FE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C3FE                      DMA_STS_C3FE_Msk
+#define DMA_STS_C2FE_Pos                  (10UL)                    /*!< DMA STS: C2FE (Bit 10)                                */
+#define DMA_STS_C2FE_Msk                  (0x400UL)                 /*!< DMA STS: C2FE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C2FE                      DMA_STS_C2FE_Msk
+#define DMA_STS_C1FE_Pos                  (9UL)                     /*!< DMA STS: C1FE (Bit 9)                                 */
+#define DMA_STS_C1FE_Msk                  (0x200UL)                 /*!< DMA STS: C1FE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C1FE                      DMA_STS_C1FE_Msk
+#define DMA_STS_C0FE_Pos                  (8UL)                     /*!< DMA STS: C0FE (Bit 8)                                 */
+#define DMA_STS_C0FE_Msk                  (0x100UL)                 /*!< DMA STS: C0FE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C0FE                      DMA_STS_C0FE_Msk
+#define DMA_STS_C3PE_Pos                  (7UL)                     /*!< DMA STS: C3PE (Bit 7)                                 */
+#define DMA_STS_C3PE_Msk                  (0x80UL)                  /*!< DMA STS: C3PE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C3PE                      DMA_STS_C3PE_Msk
+#define DMA_STS_C2PE_Pos                  (6UL)                     /*!< DMA STS: C2PE (Bit 6)                                 */
+#define DMA_STS_C2PE_Msk                  (0x40UL)                  /*!< DMA STS: C2PE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C2PE                      DMA_STS_C2PE_Msk
+#define DMA_STS_C1PE_Pos                  (5UL)                     /*!< DMA STS: C1PE (Bit 5)                                 */
+#define DMA_STS_C1PE_Msk                  (0x20UL)                  /*!< DMA STS: C1PE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C1PE                      DMA_STS_C1PE_Msk
+#define DMA_STS_C0PE_Pos                  (4UL)                     /*!< DMA STS: C0PE (Bit 4)                                 */
+#define DMA_STS_C0PE_Msk                  (0x10UL)                  /*!< DMA STS: C0PE (Bitfield-Mask: 0x01)                   */
+#define DMA_STS_C0PE                      DMA_STS_C0PE_Msk
+#define DMA_STS_C3BUSY_Pos                (3UL)                     /*!< DMA STS: C3BUSY (Bit 3)                               */
+#define DMA_STS_C3BUSY_Msk                (0x8UL)                   /*!< DMA STS: C3BUSY (Bitfield-Mask: 0x01)                 */
+#define DMA_STS_C3BUSY                    DMA_STS_C3BUSY_Msk
+#define DMA_STS_C2BUSY_Pos                (2UL)                     /*!< DMA STS: C2BUSY (Bit 2)                               */
+#define DMA_STS_C2BUSY_Msk                (0x4UL)                   /*!< DMA STS: C2BUSY (Bitfield-Mask: 0x01)                 */
+#define DMA_STS_C2BUSY                    DMA_STS_C2BUSY_Msk
+#define DMA_STS_C1BUSY_Pos                (1UL)                     /*!< DMA STS: C1BUSY (Bit 1)                               */
+#define DMA_STS_C1BUSY_Msk                (0x2UL)                   /*!< DMA STS: C1BUSY (Bitfield-Mask: 0x01)                 */
+#define DMA_STS_C1BUSY                    DMA_STS_C1BUSY_Msk
+#define DMA_STS_C0BUSY_Pos                (0UL)                     /*!< DMA STS: C0BUSY (Bit 0)                               */
+#define DMA_STS_C0BUSY_Msk                (0x1UL)                   /*!< DMA STS: C0BUSY (Bitfield-Mask: 0x01)                 */
+#define DMA_STS_C0BUSY                    DMA_STS_C0BUSY_Msk
+/* =========================================================  CCTL  ========================================================== */
+#define DMA_CCTL_FLEN_Pos                 (24UL)                    /*!< DMA CCTL: FLEN (Bit 24)                               */
+#define DMA_CCTL_FLEN_Msk                 (0xff000000UL)            /*!< DMA CCTL: FLEN (Bitfield-Mask: 0xff)                  */
+#define DMA_CCTL_FLEN                     DMA_CCTL_FLEN_Msk
+#define DMA_CCTL_PLEN_Pos                 (16UL)                    /*!< DMA CCTL: PLEN (Bit 16)                               */
+#define DMA_CCTL_PLEN_Msk                 (0xff0000UL)              /*!< DMA CCTL: PLEN (Bitfield-Mask: 0xff)                  */
+#define DMA_CCTL_PLEN                     DMA_CCTL_PLEN_Msk
+#define DMA_CCTL_STOP_Pos                 (15UL)                    /*!< DMA CCTL: STOP (Bit 15)                               */
+#define DMA_CCTL_STOP_Msk                 (0x8000UL)                /*!< DMA CCTL: STOP (Bitfield-Mask: 0x01)                  */
+#define DMA_CCTL_STOP                     DMA_CCTL_STOP_Msk
+#define DMA_CCTL_AESEN_Pos                (14UL)                    /*!< DMA CCTL: AESEN (Bit 14)                              */
+#define DMA_CCTL_AESEN_Msk                (0x4000UL)                /*!< DMA CCTL: AESEN (Bitfield-Mask: 0x01)                 */
+#define DMA_CCTL_AESEN                    DMA_CCTL_AESEN_Msk
+#define DMA_CCTL_CONT_Pos                 (13UL)                    /*!< DMA CCTL: CONT (Bit 13)                               */
+#define DMA_CCTL_CONT_Msk                 (0x2000UL)                /*!< DMA CCTL: CONT (Bitfield-Mask: 0x01)                  */
+#define DMA_CCTL_CONT                     DMA_CCTL_CONT_Msk
+#define DMA_CCTL_TMODE_Pos                (12UL)                    /*!< DMA CCTL: TMODE (Bit 12)                              */
+#define DMA_CCTL_TMODE_Msk                (0x1000UL)                /*!< DMA CCTL: TMODE (Bitfield-Mask: 0x01)                 */
+#define DMA_CCTL_TMODE                    DMA_CCTL_TMODE_Msk
+#define DMA_CCTL_DMASEL_Pos               (7UL)                     /*!< DMA CCTL: DMASEL (Bit 7)                              */
+#define DMA_CCTL_DMASEL_Msk               (0xf80UL)                 /*!< DMA CCTL: DMASEL (Bitfield-Mask: 0x1f)                */
+#define DMA_CCTL_DMASEL                   DMA_CCTL_DMASEL_Msk
+#define DMA_CCTL_DMODE_Pos                (5UL)                     /*!< DMA CCTL: DMODE (Bit 5)                               */
+#define DMA_CCTL_DMODE_Msk                (0x60UL)                  /*!< DMA CCTL: DMODE (Bitfield-Mask: 0x03)                 */
+#define DMA_CCTL_DMODE                    DMA_CCTL_DMODE_Msk
+#define DMA_CCTL_SMODE_Pos                (3UL)                     /*!< DMA CCTL: SMODE (Bit 3)                               */
+#define DMA_CCTL_SMODE_Msk                (0x18UL)                  /*!< DMA CCTL: SMODE (Bitfield-Mask: 0x03)                 */
+#define DMA_CCTL_SMODE                    DMA_CCTL_SMODE_Msk
+#define DMA_CCTL_SIZE_Pos                 (1UL)                     /*!< DMA CCTL: SIZE (Bit 1)                                */
+#define DMA_CCTL_SIZE_Msk                 (0x6UL)                   /*!< DMA CCTL: SIZE (Bitfield-Mask: 0x03)                  */
+#define DMA_CCTL_SIZE                     DMA_CCTL_SIZE_Msk
+#define DMA_CCTL_EN_Pos                   (0UL)                     /*!< DMA CCTL: EN (Bit 0)                                  */
+#define DMA_CCTL_EN_Msk                   (0x1UL)                   /*!< DMA CCTL: EN (Bitfield-Mask: 0x01)                    */
+#define DMA_CCTL_EN                       DMA_CCTL_EN_Msk
+/* =========================================================  CSRC  ========================================================== */
+#define DMA_CSRC_SRC_Pos                  (0UL)                     /*!< DMA CSRC: SRC (Bit 0)                                 */
+#define DMA_CSRC_SRC_Msk                  (0xffffffffUL)            /*!< DMA CSRC: SRC (Bitfield-Mask: 0xffffffff)             */
+#define DMA_CSRC_SRC                      DMA_CSRC_SRC_Msk
+/* =========================================================  CDST  ========================================================== */
+#define DMA_CDST_DST_Pos                  (0UL)                     /*!< DMA CDST: DST (Bit 0)                                 */
+#define DMA_CDST_DST_Msk                  (0xffffffffUL)            /*!< DMA CDST: DST (Bitfield-Mask: 0xffffffff)             */
+#define DMA_CDST_DST                      DMA_CDST_DST_Msk
+/* =========================================================  CLEN  ========================================================== */
+#define DMA_CLEN_CFLEN_Pos                (8UL)                     /*!< DMA CLEN: CFLEN (Bit 8)                               */
+#define DMA_CLEN_CFLEN_Msk                (0xff00UL)                /*!< DMA CLEN: CFLEN (Bitfield-Mask: 0xff)                 */
+#define DMA_CLEN_CFLEN                    DMA_CLEN_CFLEN_Msk
+#define DMA_CLEN_CPLEN_Pos                (0UL)                     /*!< DMA CLEN: CPLEN (Bit 0)                               */
+#define DMA_CLEN_CPLEN_Msk                (0xffUL)                  /*!< DMA CLEN: CPLEN (Bitfield-Mask: 0xff)                 */
+#define DMA_CLEN_CPLEN                    DMA_CLEN_CPLEN_Msk
+/* ========================================================  AESCTL  ========================================================= */
+#define DMA_AESCTL_MODE_Pos               (2UL)                     /*!< DMA AESCTL: MODE (Bit 2)                              */
+#define DMA_AESCTL_MODE_Msk               (0xcUL)                   /*!< DMA AESCTL: MODE (Bitfield-Mask: 0x03)                */
+#define DMA_AESCTL_MODE                   DMA_AESCTL_MODE_Msk
+#define DMA_AESCTL_ENC_Pos                (0UL)                     /*!< DMA AESCTL: ENC (Bit 0)                               */
+#define DMA_AESCTL_ENC_Msk                (0x1UL)                   /*!< DMA AESCTL: ENC (Bitfield-Mask: 0x01)                 */
+#define DMA_AESCTL_ENC                    DMA_AESCTL_ENC_Msk
+/* ========================================================  AESKEY  ========================================================= */
+#define DMA_AESKEY_KEY_Pos                (0UL)                     /*!< DMA AESKEY: KEY (Bit 0)                               */
+#define DMA_AESKEY_KEY_Msk                (0xffffffffUL)            /*!< DMA AESKEY: KEY (Bitfield-Mask: 0xffffffff)           */
+#define DMA_AESKEY_KEY                    DMA_AESKEY_KEY_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           FLASH                                           ================ */
+/* =========================================================================================================================== */
+
+/* ========================================================  ICEPROT  ======================================================== */
+#define FLASH_ICEPROT_ICEPROT_Pos         (0UL)                     /*!< FLASH ICEPROT: ICEPROT (Bit 0)                        */
+#define FLASH_ICEPROT_ICEPROT_Msk         (0xffffffffUL)            /*!< FLASH ICEPROT: ICEPROT (Bitfield-Mask: 0xffffffff)    */
+#define FLASH_ICEPROT_ICEPROT             FLASH_ICEPROT_ICEPROT_Msk
+/* ========================================================  RDPROT  ========================================================= */
+#define FLASH_RDPROT_RDPORT_Pos           (0UL)                     /*!< FLASH RDPROT: RDPORT (Bit 0)                          */
+#define FLASH_RDPROT_RDPORT_Msk           (0xffffffffUL)            /*!< FLASH RDPROT: RDPORT (Bitfield-Mask: 0xffffffff)      */
+#define FLASH_RDPROT_RDPORT               FLASH_RDPROT_RDPORT_Msk
+/* ========================================================  WRPROT  ========================================================= */
+#define FLASH_WRPROT_WRPORT_Pos           (0UL)                     /*!< FLASH WRPROT: WRPORT (Bit 0)                          */
+#define FLASH_WRPROT_WRPORT_Msk           (0xffffffffUL)            /*!< FLASH WRPROT: WRPORT (Bitfield-Mask: 0xffffffff)      */
+#define FLASH_WRPROT_WRPORT               FLASH_WRPROT_WRPORT_Msk
+/* ==========================================================  STS  ========================================================== */
+#define FLASH_STS_STS_Pos                 (0UL)                     /*!< FLASH STS: STS (Bit 0)                                */
+#define FLASH_STS_STS_Msk                 (0x1fUL)                  /*!< FLASH STS: STS (Bitfield-Mask: 0x1f)                  */
+#define FLASH_STS_STS                     FLASH_STS_STS_Msk
+/* ========================================================  INTSTS  ========================================================= */
+#define FLASH_INTSTS_CSERR_Pos            (0UL)                     /*!< FLASH INTSTS: CSERR (Bit 0)                           */
+#define FLASH_INTSTS_CSERR_Msk            (0x1UL)                   /*!< FLASH INTSTS: CSERR (Bitfield-Mask: 0x01)             */
+#define FLASH_INTSTS_CSERR                FLASH_INTSTS_CSERR_Msk
+/* ========================================================  CSSADDR  ======================================================== */
+#define FLASH_CSSADDR_CSSADDR_Pos         (0UL)                     /*!< FLASH CSSADDR: CSSADDR (Bit 0)                        */
+#define FLASH_CSSADDR_CSSADDR_Msk         (0x7ffffUL)               /*!< FLASH CSSADDR: CSSADDR (Bitfield-Mask: 0x7ffff)       */
+#define FLASH_CSSADDR_CSSADDR             FLASH_CSSADDR_CSSADDR_Msk
+/* ========================================================  CSEADDR  ======================================================== */
+#define FLASH_CSEADDR_CSEADDR_Pos         (0UL)                     /*!< FLASH CSEADDR: CSEADDR (Bit 0)                        */
+#define FLASH_CSEADDR_CSEADDR_Msk         (0x7ffffUL)               /*!< FLASH CSEADDR: CSEADDR (Bitfield-Mask: 0x7ffff)       */
+#define FLASH_CSEADDR_CSEADDR             FLASH_CSEADDR_CSEADDR_Msk
+/* ========================================================  CSVALUE  ======================================================== */
+#define FLASH_CSVALUE_CSVALUE_Pos         (0UL)                     /*!< FLASH CSVALUE: CSVALUE (Bit 0)                        */
+#define FLASH_CSVALUE_CSVALUE_Msk         (0xffffffffUL)            /*!< FLASH CSVALUE: CSVALUE (Bitfield-Mask: 0xffffffff)    */
+#define FLASH_CSVALUE_CSVALUE             FLASH_CSVALUE_CSVALUE_Msk
+/* =======================================================  CSCVALUE  ======================================================== */
+#define FLASH_CSCVALUE_CSCVALUE_Pos       (0UL)                     /*!< FLASH CSCVALUE: CSCVALUE (Bit 0)                      */
+#define FLASH_CSCVALUE_CSCVALUE_Msk       (0xffffffffUL)            /*!< FLASH CSCVALUE: CSCVALUE (Bitfield-Mask: 0xffffffff)  */
+#define FLASH_CSCVALUE_CSCVALUE           FLASH_CSCVALUE_CSCVALUE_Msk
+/* =========================================================  PASS  ========================================================== */
+#define FLASH_PASS_UNLOCK_Pos             (0UL)                     /*!< FLASH PASS: UNLOCK (Bit 0)                            */
+#define FLASH_PASS_UNLOCK_Msk             (0x1UL)                   /*!< FLASH PASS: UNLOCK (Bitfield-Mask: 0x01)              */
+#define FLASH_PASS_UNLOCK                 FLASH_PASS_UNLOCK_Msk
+/* =========================================================  CTRL  ========================================================== */
+#define FLASH_CTRL_CSINTEN_Pos            (2UL)                     /*!< FLASH CTRL: CSINTEN (Bit 2)                           */
+#define FLASH_CTRL_CSINTEN_Msk            (0x4UL)                   /*!< FLASH CTRL: CSINTEN (Bitfield-Mask: 0x01)             */
+#define FLASH_CTRL_CSINTEN                FLASH_CTRL_CSINTEN_Msk
+#define FLASH_CTRL_CSMODE_Pos             (0UL)                     /*!< FLASH CTRL: CSMODE (Bit 0)                            */
+#define FLASH_CTRL_CSMODE_Msk             (0x3UL)                   /*!< FLASH CTRL: CSMODE (Bitfield-Mask: 0x03)              */
+#define FLASH_CTRL_CSMODE                 FLASH_CTRL_CSMODE_Msk
+/* ========================================================  PGADDR  ========================================================= */
+#define FLASH_PGADDR_PGADDR_Pos           (0UL)                     /*!< FLASH PGADDR: PGADDR (Bit 0)                          */
+#define FLASH_PGADDR_PGADDR_Msk           (0x3ffffUL)               /*!< FLASH PGADDR: PGADDR (Bitfield-Mask: 0x3ffff)         */
+#define FLASH_PGADDR_PGADDR               FLASH_PGADDR_PGADDR_Msk
+/* ========================================================  PGDATA  ========================================================= */
+#define FLASH_PGDATA_PGDATA_Pos           (0UL)                     /*!< FLASH PGDATA: PGDATA (Bit 0)                          */
+#define FLASH_PGDATA_PGDATA_Msk           (0xffffffffUL)            /*!< FLASH PGDATA: PGDATA (Bitfield-Mask: 0xffffffff)      */
+#define FLASH_PGDATA_PGDATA               FLASH_PGDATA_PGDATA_Msk
+/* ========================================================  SERASE  ========================================================= */
+#define FLASH_SERASE_SERASE_Pos           (0UL)                     /*!< FLASH SERASE: SERASE (Bit 0)                          */
+#define FLASH_SERASE_SERASE_Msk           (0x1UL)                   /*!< FLASH SERASE: SERASE (Bitfield-Mask: 0x01)            */
+#define FLASH_SERASE_SERASE               FLASH_SERASE_SERASE_Msk
+/* ========================================================  CERASE  ========================================================= */
+#define FLASH_CERASE_CERASE_Pos           (0UL)                     /*!< FLASH CERASE: CERASE (Bit 0)                          */
+#define FLASH_CERASE_CERASE_Msk           (0x1UL)                   /*!< FLASH CERASE: CERASE (Bitfield-Mask: 0x01)            */
+#define FLASH_CERASE_CERASE               FLASH_CERASE_CERASE_Msk
+/* =========================================================  DSTB  ========================================================== */
+#define FLASH_DSTB_DSTB_Pos               (0UL)                     /*!< FLASH DSTB: DSTB (Bit 0)                              */
+#define FLASH_DSTB_DSTB_Msk               (0x1UL)                   /*!< FLASH DSTB: DSTB (Bitfield-Mask: 0x01)                */
+#define FLASH_DSTB_DSTB                   FLASH_DSTB_DSTB_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           GPIOA                                           ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  OEN  ========================================================== */
+#define GPIOA_OEN_IOAOEN_Pos              (0UL)                     /*!< GPIOA OEN: IOAOEN (Bit 0)                             */
+#define GPIOA_OEN_IOAOEN_Msk              (0xffffUL)                /*!< GPIOA OEN: IOAOEN (Bitfield-Mask: 0xffff)             */
+#define GPIOA_OEN_IOAOEN                  GPIOA_OEN_IOAOEN_Msk
+/* ==========================================================  IE  =========================================================== */
+#define GPIOA_IE_IOAIE_Pos                (0UL)                     /*!< GPIOA IE: IOAIE (Bit 0)                               */
+#define GPIOA_IE_IOAIE_Msk                (0xffffUL)                /*!< GPIOA IE: IOAIE (Bitfield-Mask: 0xffff)               */
+#define GPIOA_IE_IOAIE                    GPIOA_IE_IOAIE_Msk
+/* ==========================================================  DAT  ========================================================== */
+#define GPIOA_DAT_IOADAT_Pos              (0UL)                     /*!< GPIOA DAT: IOADAT (Bit 0)                             */
+#define GPIOA_DAT_IOADAT_Msk              (0xffffUL)                /*!< GPIOA DAT: IOADAT (Bitfield-Mask: 0xffff)             */
+#define GPIOA_DAT_IOADAT                  GPIOA_DAT_IOADAT_Msk
+/* ==========================================================  ATT  ========================================================== */
+#define GPIOA_ATT_IOAATT_Pos              (0UL)                     /*!< GPIOA ATT: IOAATT (Bit 0)                             */
+#define GPIOA_ATT_IOAATT_Msk              (0xffffUL)                /*!< GPIOA ATT: IOAATT (Bitfield-Mask: 0xffff)             */
+#define GPIOA_ATT_IOAATT                  GPIOA_ATT_IOAATT_Msk
+/* =======================================================  IOAWKUEN  ======================================================== */
+#define GPIOA_IOAWKUEN_WKUEN_Pos          (0UL)                     /*!< GPIOA IOAWKUEN: WKUEN (Bit 0)                         */
+#define GPIOA_IOAWKUEN_WKUEN_Msk          (0xffffffffUL)            /*!< GPIOA IOAWKUEN: WKUEN (Bitfield-Mask: 0xffffffff)     */
+#define GPIOA_IOAWKUEN_WKUEN              GPIOA_IOAWKUEN_WKUEN_Msk
+/* ==========================================================  STS  ========================================================== */
+#define GPIOA_STS_IOASTS_Pos              (0UL)                     /*!< GPIOA STS: IOASTS (Bit 0)                             */
+#define GPIOA_STS_IOASTS_Msk              (0xffffUL)                /*!< GPIOA STS: IOASTS (Bitfield-Mask: 0xffff)             */
+#define GPIOA_STS_IOASTS                  GPIOA_STS_IOASTS_Msk
+/* =======================================================  IOAINTSTS  ======================================================= */
+#define GPIOA_IOAINTSTS_INTSTS_Pos        (0UL)                     /*!< GPIOA IOAINTSTS: INTSTS (Bit 0)                       */
+#define GPIOA_IOAINTSTS_INTSTS_Msk        (0xffffUL)                /*!< GPIOA IOAINTSTS: INTSTS (Bitfield-Mask: 0xffff)       */
+#define GPIOA_IOAINTSTS_INTSTS            GPIOA_IOAINTSTS_INTSTS_Msk
+/* ==========================================================  SEL  ========================================================== */
+#define GPIOA_SEL_SEL7_Pos                (7UL)                     /*!< GPIOA SEL: SEL7 (Bit 7)                               */
+#define GPIOA_SEL_SEL7_Msk                (0x80UL)                  /*!< GPIOA SEL: SEL7 (Bitfield-Mask: 0x01)                 */
+#define GPIOA_SEL_SEL7                    GPIOA_SEL_SEL7_Msk
+#define GPIOA_SEL_SEL6_Pos                (6UL)                     /*!< GPIOA SEL: SEL6 (Bit 6)                               */
+#define GPIOA_SEL_SEL6_Msk                (0x40UL)                  /*!< GPIOA SEL: SEL6 (Bitfield-Mask: 0x01)                 */
+#define GPIOA_SEL_SEL6                    GPIOA_SEL_SEL6_Msk
+#define GPIOA_SEL_SEL3_Pos                (3UL)                     /*!< GPIOA SEL: SEL3 (Bit 3)                               */
+#define GPIOA_SEL_SEL3_Msk                (0x8UL)                   /*!< GPIOA SEL: SEL3 (Bitfield-Mask: 0x01)                 */
+#define GPIOA_SEL_SEL3                    GPIOA_SEL_SEL3_Msk
+/* =======================================================  IOANODEG  ======================================================== */
+#define GPIOA_IOANODEG_NODEG_Pos          (0UL)                     /*!< GPIOA IOANODEG: NODEG (Bit 0)                         */
+#define GPIOA_IOANODEG_NODEG_Msk          (0xffffUL)                /*!< GPIOA IOANODEG: NODEG (Bitfield-Mask: 0xffff)         */
+#define GPIOA_IOANODEG_NODEG              GPIOA_IOANODEG_NODEG_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           GPIO                                            ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  OEN  ========================================================== */
+#define GPIO_OEN_IOXOEN_Pos               (0UL)                     /*!< GPIO OEN: IOXOEN (Bit 0)                              */
+#define GPIO_OEN_IOXOEN_Msk               (0xffffUL)                /*!< GPIO OEN: IOXOEN (Bitfield-Mask: 0xffff)              */
+#define GPIO_OEN_IOXOEN                   GPIO_OEN_IOXOEN_Msk
+/* ==========================================================  IE  =========================================================== */
+#define GPIO_IE_IOXIE_Pos                 (0UL)                     /*!< GPIO IE: IOXIE (Bit 0)                                */
+#define GPIO_IE_IOXIE_Msk                 (0xffffUL)                /*!< GPIO IE: IOXIE (Bitfield-Mask: 0xffff)                */
+#define GPIO_IE_IOXIE                     GPIO_IE_IOXIE_Msk
+/* ==========================================================  DAT  ========================================================== */
+#define GPIO_DAT_IOXDAT_Pos               (0UL)                     /*!< GPIO DAT: IOXDAT (Bit 0)                              */
+#define GPIO_DAT_IOXDAT_Msk               (0xffffUL)                /*!< GPIO DAT: IOXDAT (Bitfield-Mask: 0xffff)              */
+#define GPIO_DAT_IOXDAT                   GPIO_DAT_IOXDAT_Msk
+/* ==========================================================  ATT  ========================================================== */
+#define GPIO_ATT_IOXATT_Pos               (0UL)                     /*!< GPIO ATT: IOXATT (Bit 0)                              */
+#define GPIO_ATT_IOXATT_Msk               (0xffffUL)                /*!< GPIO ATT: IOXATT (Bitfield-Mask: 0xffff)              */
+#define GPIO_ATT_IOXATT                   GPIO_ATT_IOXATT_Msk
+/* ==========================================================  STS  ========================================================== */
+#define GPIO_STS_IOXSTS_Pos               (0UL)                     /*!< GPIO STS: IOXSTS (Bit 0)                              */
+#define GPIO_STS_IOXSTS_Msk               (0xffffUL)                /*!< GPIO STS: IOXSTS (Bitfield-Mask: 0xffff)              */
+#define GPIO_STS_IOXSTS                   GPIO_STS_IOXSTS_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                          GPIOAF                                           ================ */
+/* =========================================================================================================================== */
+
+/* ========================================================  IOB_SEL  ======================================================== */
+#define GPIOAF_IOB_SEL_SEL6_Pos           (6UL)                     /*!< GPIOAF IOB_SEL: SEL6 (Bit 6)                          */
+#define GPIOAF_IOB_SEL_SEL6_Msk           (0x40UL)                  /*!< GPIOAF IOB_SEL: SEL6 (Bitfield-Mask: 0x01)            */
+#define GPIOAF_IOB_SEL_SEL6               GPIOAF_IOB_SEL_SEL6_Msk
+#define GPIOAF_IOB_SEL_SEL2_Pos           (2UL)                     /*!< GPIOAF IOB_SEL: SEL2 (Bit 2)                          */
+#define GPIOAF_IOB_SEL_SEL2_Msk           (0x4UL)                   /*!< GPIOAF IOB_SEL: SEL2 (Bitfield-Mask: 0x01)            */
+#define GPIOAF_IOB_SEL_SEL2               GPIOAF_IOB_SEL_SEL2_Msk
+#define GPIOAF_IOB_SEL_SEL1_Pos           (1UL)                     /*!< GPIOAF IOB_SEL: SEL1 (Bit 1)                          */
+#define GPIOAF_IOB_SEL_SEL1_Msk           (0x2UL)                   /*!< GPIOAF IOB_SEL: SEL1 (Bitfield-Mask: 0x01)            */
+#define GPIOAF_IOB_SEL_SEL1               GPIOAF_IOB_SEL_SEL1_Msk
+/* ========================================================  IOE_SEL  ======================================================== */
+#define GPIOAF_IOE_SEL_SEL7_Pos           (7UL)                     /*!< GPIOAF IOE_SEL: SEL7 (Bit 7)                          */
+#define GPIOAF_IOE_SEL_SEL7_Msk           (0x80UL)                  /*!< GPIOAF IOE_SEL: SEL7 (Bitfield-Mask: 0x01)            */
+#define GPIOAF_IOE_SEL_SEL7               GPIOAF_IOE_SEL_SEL7_Msk
+/* ========================================================  IO_MISC  ======================================================== */
+#define GPIOAF_IO_MISC_I2CIOC_Pos         (5UL)                     /*!< GPIOAF IO_MISC: I2CIOC (Bit 5)                        */
+#define GPIOAF_IO_MISC_I2CIOC_Msk         (0x20UL)                  /*!< GPIOAF IO_MISC: I2CIOC (Bitfield-Mask: 0x01)          */
+#define GPIOAF_IO_MISC_I2CIOC             GPIOAF_IO_MISC_I2CIOC_Msk
+#define GPIOAF_IO_MISC_PLLHDIV_Pos        (0UL)                     /*!< GPIOAF IO_MISC: PLLHDIV (Bit 0)                       */
+#define GPIOAF_IO_MISC_PLLHDIV_Msk        (0x7UL)                   /*!< GPIOAF IO_MISC: PLLHDIV (Bitfield-Mask: 0x07)         */
+#define GPIOAF_IO_MISC_PLLHDIV            GPIOAF_IO_MISC_PLLHDIV_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            I2C                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  DATA  ========================================================== */
+#define I2C_DATA_DATA_Pos                 (0UL)                     /*!< I2C DATA: DATA (Bit 0)                                */
+#define I2C_DATA_DATA_Msk                 (0xffUL)                  /*!< I2C DATA: DATA (Bitfield-Mask: 0xff)                  */
+#define I2C_DATA_DATA                     I2C_DATA_DATA_Msk
+/* =========================================================  ADDR  ========================================================== */
+#define I2C_ADDR_SLA_Pos                  (1UL)                     /*!< I2C ADDR: SLA (Bit 1)                                 */
+#define I2C_ADDR_SLA_Msk                  (0xfeUL)                  /*!< I2C ADDR: SLA (Bitfield-Mask: 0x7f)                   */
+#define I2C_ADDR_SLA                      I2C_ADDR_SLA_Msk
+#define I2C_ADDR_GC_Pos                   (0UL)                     /*!< I2C ADDR: GC (Bit 0)                                  */
+#define I2C_ADDR_GC_Msk                   (0x1UL)                   /*!< I2C ADDR: GC (Bitfield-Mask: 0x01)                    */
+#define I2C_ADDR_GC                       I2C_ADDR_GC_Msk
+/* =========================================================  CTRL  ========================================================== */
+#define I2C_CTRL_CR2_Pos                  (7UL)                     /*!< I2C CTRL: CR2 (Bit 7)                                 */
+#define I2C_CTRL_CR2_Msk                  (0x80UL)                  /*!< I2C CTRL: CR2 (Bitfield-Mask: 0x01)                   */
+#define I2C_CTRL_CR2                      I2C_CTRL_CR2_Msk
+#define I2C_CTRL_EN_Pos                   (6UL)                     /*!< I2C CTRL: EN (Bit 6)                                  */
+#define I2C_CTRL_EN_Msk                   (0x40UL)                  /*!< I2C CTRL: EN (Bitfield-Mask: 0x01)                    */
+#define I2C_CTRL_EN                       I2C_CTRL_EN_Msk
+#define I2C_CTRL_STA_Pos                  (5UL)                     /*!< I2C CTRL: STA (Bit 5)                                 */
+#define I2C_CTRL_STA_Msk                  (0x20UL)                  /*!< I2C CTRL: STA (Bitfield-Mask: 0x01)                   */
+#define I2C_CTRL_STA                      I2C_CTRL_STA_Msk
+#define I2C_CTRL_STO_Pos                  (4UL)                     /*!< I2C CTRL: STO (Bit 4)                                 */
+#define I2C_CTRL_STO_Msk                  (0x10UL)                  /*!< I2C CTRL: STO (Bitfield-Mask: 0x01)                   */
+#define I2C_CTRL_STO                      I2C_CTRL_STO_Msk
+#define I2C_CTRL_SI_Pos                   (3UL)                     /*!< I2C CTRL: SI (Bit 3)                                  */
+#define I2C_CTRL_SI_Msk                   (0x8UL)                   /*!< I2C CTRL: SI (Bitfield-Mask: 0x01)                    */
+#define I2C_CTRL_SI                       I2C_CTRL_SI_Msk
+#define I2C_CTRL_AA_Pos                   (2UL)                     /*!< I2C CTRL: AA (Bit 2)                                  */
+#define I2C_CTRL_AA_Msk                   (0x4UL)                   /*!< I2C CTRL: AA (Bitfield-Mask: 0x01)                    */
+#define I2C_CTRL_AA                       I2C_CTRL_AA_Msk
+#define I2C_CTRL_CR1_Pos                  (1UL)                     /*!< I2C CTRL: CR1 (Bit 1)                                 */
+#define I2C_CTRL_CR1_Msk                  (0x2UL)                   /*!< I2C CTRL: CR1 (Bitfield-Mask: 0x01)                   */
+#define I2C_CTRL_CR1                      I2C_CTRL_CR1_Msk
+#define I2C_CTRL_CR0_Pos                  (0UL)                     /*!< I2C CTRL: CR0 (Bit 0)                                 */
+#define I2C_CTRL_CR0_Msk                  (0x1UL)                   /*!< I2C CTRL: CR0 (Bitfield-Mask: 0x01)                   */
+#define I2C_CTRL_CR0                      I2C_CTRL_CR0_Msk
+/* ==========================================================  STS  ========================================================== */
+#define I2C_STS_STS_Pos                   (3UL)                     /*!< I2C STS: STS (Bit 3)                                  */
+#define I2C_STS_STS_Msk                   (0xf8UL)                  /*!< I2C STS: STS (Bitfield-Mask: 0x1f)                    */
+#define I2C_STS_STS                       I2C_STS_STS_Msk
+/* =========================================================  CTRL2  ========================================================= */
+#define I2C_CTRL2_INTEN_Pos               (0UL)                     /*!< I2C CTRL2: INTEN (Bit 0)                              */
+#define I2C_CTRL2_INTEN_Msk               (0x1UL)                   /*!< I2C CTRL2: INTEN (Bitfield-Mask: 0x01)                */
+#define I2C_CTRL2_INTEN                   I2C_CTRL2_INTEN_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                          ISO7816                                          ================ */
+/* =========================================================================================================================== */
+
+/* =======================================================  BAUDDIVL  ======================================================== */
+#define ISO7816_BAUDDIVL_BAUDDIVL_Pos     (0UL)                     /*!< ISO7816 BAUDDIVL: BAUDDIVL (Bit 0)                    */
+#define ISO7816_BAUDDIVL_BAUDDIVL_Msk     (0xffUL)                  /*!< ISO7816 BAUDDIVL: BAUDDIVL (Bitfield-Mask: 0xff)      */
+#define ISO7816_BAUDDIVL_BAUDDIVL         ISO7816_BAUDDIVL_BAUDDIVL_Msk
+/* =======================================================  BAUDDIVH  ======================================================== */
+#define ISO7816_BAUDDIVH_BAUDDIVH_Pos     (0UL)                     /*!< ISO7816 BAUDDIVH: BAUDDIVH (Bit 0)                    */
+#define ISO7816_BAUDDIVH_BAUDDIVH_Msk     (0xffUL)                  /*!< ISO7816 BAUDDIVH: BAUDDIVH (Bitfield-Mask: 0xff)      */
+#define ISO7816_BAUDDIVH_BAUDDIVH         ISO7816_BAUDDIVH_BAUDDIVH_Msk
+/* =========================================================  DATA  ========================================================== */
+#define ISO7816_DATA_DATA_Pos             (0UL)                     /*!< ISO7816 DATA: DATA (Bit 0)                            */
+#define ISO7816_DATA_DATA_Msk             (0xffUL)                  /*!< ISO7816 DATA: DATA (Bitfield-Mask: 0xff)              */
+#define ISO7816_DATA_DATA                 ISO7816_DATA_DATA_Msk
+/* =========================================================  INFO  ========================================================== */
+#define ISO7816_INFO_DMATXDONE_Pos        (9UL)                     /*!< ISO7816 INFO: DMATXDONE (Bit 9)                       */
+#define ISO7816_INFO_DMATXDONE_Msk        (0x200UL)                 /*!< ISO7816 INFO: DMATXDONE (Bitfield-Mask: 0x01)         */
+#define ISO7816_INFO_DMATXDONE            ISO7816_INFO_DMATXDONE_Msk
+#define ISO7816_INFO_TXRTYERRIF_Pos       (8UL)                     /*!< ISO7816 INFO: TXRTYERRIF (Bit 8)                      */
+#define ISO7816_INFO_TXRTYERRIF_Msk       (0x100UL)                 /*!< ISO7816 INFO: TXRTYERRIF (Bitfield-Mask: 0x01)        */
+#define ISO7816_INFO_TXRTYERRIF           ISO7816_INFO_TXRTYERRIF_Msk
+#define ISO7816_INFO_RXOVIF_Pos           (7UL)                     /*!< ISO7816 INFO: RXOVIF (Bit 7)                          */
+#define ISO7816_INFO_RXOVIF_Msk           (0x80UL)                  /*!< ISO7816 INFO: RXOVIF (Bitfield-Mask: 0x01)            */
+#define ISO7816_INFO_RXOVIF               ISO7816_INFO_RXOVIF_Msk
+#define ISO7816_INFO_TXDONEIF_Pos         (6UL)                     /*!< ISO7816 INFO: TXDONEIF (Bit 6)                        */
+#define ISO7816_INFO_TXDONEIF_Msk         (0x40UL)                  /*!< ISO7816 INFO: TXDONEIF (Bitfield-Mask: 0x01)          */
+#define ISO7816_INFO_TXDONEIF             ISO7816_INFO_TXDONEIF_Msk
+#define ISO7816_INFO_RXIF_Pos             (5UL)                     /*!< ISO7816 INFO: RXIF (Bit 5)                            */
+#define ISO7816_INFO_RXIF_Msk             (0x20UL)                  /*!< ISO7816 INFO: RXIF (Bitfield-Mask: 0x01)              */
+#define ISO7816_INFO_RXIF                 ISO7816_INFO_RXIF_Msk
+#define ISO7816_INFO_RXERRIF_Pos          (2UL)                     /*!< ISO7816 INFO: RXERRIF (Bit 2)                         */
+#define ISO7816_INFO_RXERRIF_Msk          (0x4UL)                   /*!< ISO7816 INFO: RXERRIF (Bitfield-Mask: 0x01)           */
+#define ISO7816_INFO_RXERRIF              ISO7816_INFO_RXERRIF_Msk
+#define ISO7816_INFO_CHKSUM_Pos           (1UL)                     /*!< ISO7816 INFO: CHKSUM (Bit 1)                          */
+#define ISO7816_INFO_CHKSUM_Msk           (0x2UL)                   /*!< ISO7816 INFO: CHKSUM (Bitfield-Mask: 0x01)            */
+#define ISO7816_INFO_CHKSUM               ISO7816_INFO_CHKSUM_Msk
+#define ISO7816_INFO_RXACK_Pos            (0UL)                     /*!< ISO7816 INFO: RXACK (Bit 0)                           */
+#define ISO7816_INFO_RXACK_Msk            (0x1UL)                   /*!< ISO7816 INFO: RXACK (Bitfield-Mask: 0x01)             */
+#define ISO7816_INFO_RXACK                ISO7816_INFO_RXACK_Msk
+/* ==========================================================  CFG  ========================================================== */
+#define ISO7816_CFG_RXACKSET_Pos          (16UL)                    /*!< ISO7816 CFG: RXACKSET (Bit 16)                        */
+#define ISO7816_CFG_RXACKSET_Msk          (0x10000UL)               /*!< ISO7816 CFG: RXACKSET (Bitfield-Mask: 0x01)           */
+#define ISO7816_CFG_RXACKSET              ISO7816_CFG_RXACKSET_Msk
+#define ISO7816_CFG_TXRTYCNT_Pos          (12UL)                    /*!< ISO7816 CFG: TXRTYCNT (Bit 12)                        */
+#define ISO7816_CFG_TXRTYCNT_Msk          (0xf000UL)                /*!< ISO7816 CFG: TXRTYCNT (Bitfield-Mask: 0x0f)           */
+#define ISO7816_CFG_TXRTYCNT              ISO7816_CFG_TXRTYCNT_Msk
+#define ISO7816_CFG_LSB_Pos               (11UL)                    /*!< ISO7816 CFG: LSB (Bit 11)                             */
+#define ISO7816_CFG_LSB_Msk               (0x800UL)                 /*!< ISO7816 CFG: LSB (Bitfield-Mask: 0x01)                */
+#define ISO7816_CFG_LSB                   ISO7816_CFG_LSB_Msk
+#define ISO7816_CFG_AUTORXACK_Pos         (9UL)                     /*!< ISO7816 CFG: AUTORXACK (Bit 9)                        */
+#define ISO7816_CFG_AUTORXACK_Msk         (0x200UL)                 /*!< ISO7816 CFG: AUTORXACK (Bitfield-Mask: 0x01)          */
+#define ISO7816_CFG_AUTORXACK             ISO7816_CFG_AUTORXACK_Msk
+#define ISO7816_CFG_TXRTYERRIE_Pos        (8UL)                     /*!< ISO7816 CFG: TXRTYERRIE (Bit 8)                       */
+#define ISO7816_CFG_TXRTYERRIE_Msk        (0x100UL)                 /*!< ISO7816 CFG: TXRTYERRIE (Bitfield-Mask: 0x01)         */
+#define ISO7816_CFG_TXRTYERRIE            ISO7816_CFG_TXRTYERRIE_Msk
+#define ISO7816_CFG_RXOVIE_Pos            (7UL)                     /*!< ISO7816 CFG: RXOVIE (Bit 7)                           */
+#define ISO7816_CFG_RXOVIE_Msk            (0x80UL)                  /*!< ISO7816 CFG: RXOVIE (Bitfield-Mask: 0x01)             */
+#define ISO7816_CFG_RXOVIE                ISO7816_CFG_RXOVIE_Msk
+#define ISO7816_CFG_TXDONEIE_Pos          (6UL)                     /*!< ISO7816 CFG: TXDONEIE (Bit 6)                         */
+#define ISO7816_CFG_TXDONEIE_Msk          (0x40UL)                  /*!< ISO7816 CFG: TXDONEIE (Bitfield-Mask: 0x01)           */
+#define ISO7816_CFG_TXDONEIE              ISO7816_CFG_TXDONEIE_Msk
+#define ISO7816_CFG_RXIE_Pos              (5UL)                     /*!< ISO7816 CFG: RXIE (Bit 5)                             */
+#define ISO7816_CFG_RXIE_Msk              (0x20UL)                  /*!< ISO7816 CFG: RXIE (Bitfield-Mask: 0x01)               */
+#define ISO7816_CFG_RXIE                  ISO7816_CFG_RXIE_Msk
+#define ISO7816_CFG_ACKLEN_Pos            (4UL)                     /*!< ISO7816 CFG: ACKLEN (Bit 4)                           */
+#define ISO7816_CFG_ACKLEN_Msk            (0x10UL)                  /*!< ISO7816 CFG: ACKLEN (Bitfield-Mask: 0x01)             */
+#define ISO7816_CFG_ACKLEN                ISO7816_CFG_ACKLEN_Msk
+#define ISO7816_CFG_RXERRIE_Pos           (2UL)                     /*!< ISO7816 CFG: RXERRIE (Bit 2)                          */
+#define ISO7816_CFG_RXERRIE_Msk           (0x4UL)                   /*!< ISO7816 CFG: RXERRIE (Bitfield-Mask: 0x01)            */
+#define ISO7816_CFG_RXERRIE               ISO7816_CFG_RXERRIE_Msk
+#define ISO7816_CFG_CHKP_Pos              (1UL)                     /*!< ISO7816 CFG: CHKP (Bit 1)                             */
+#define ISO7816_CFG_CHKP_Msk              (0x2UL)                   /*!< ISO7816 CFG: CHKP (Bitfield-Mask: 0x01)               */
+#define ISO7816_CFG_CHKP                  ISO7816_CFG_CHKP_Msk
+#define ISO7816_CFG_EN_Pos                (0UL)                     /*!< ISO7816 CFG: EN (Bit 0)                               */
+#define ISO7816_CFG_EN_Msk                (0x1UL)                   /*!< ISO7816 CFG: EN (Bitfield-Mask: 0x01)                 */
+#define ISO7816_CFG_EN                    ISO7816_CFG_EN_Msk
+/* ==========================================================  CLK  ========================================================== */
+#define ISO7816_CLK_CLKEN_Pos             (7UL)                     /*!< ISO7816 CLK: CLKEN (Bit 7)                            */
+#define ISO7816_CLK_CLKEN_Msk             (0x80UL)                  /*!< ISO7816 CLK: CLKEN (Bitfield-Mask: 0x01)              */
+#define ISO7816_CLK_CLKEN                 ISO7816_CLK_CLKEN_Msk
+#define ISO7816_CLK_CLKDIV_Pos            (0UL)                     /*!< ISO7816 CLK: CLKDIV (Bit 0)                           */
+#define ISO7816_CLK_CLKDIV_Msk            (0x7fUL)                  /*!< ISO7816 CLK: CLKDIV (Bitfield-Mask: 0x7f)             */
+#define ISO7816_CLK_CLKDIV                ISO7816_CLK_CLKDIV_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            LCD                                            ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  FB  =========================================================== */
+#define LCD_FB_DATA_Pos                   (0UL)                     /*!< LCD FB: DATA (Bit 0)                                  */
+#define LCD_FB_DATA_Msk                   (0xffffffffUL)            /*!< LCD FB: DATA (Bitfield-Mask: 0xffffffff)              */
+#define LCD_FB_DATA                       LCD_FB_DATA_Msk
+/* =========================================================  CTRL  ========================================================== */
+#define LCD_CTRL_EN_Pos                   (7UL)                     /*!< LCD CTRL: EN (Bit 7)                                  */
+#define LCD_CTRL_EN_Msk                   (0x80UL)                  /*!< LCD CTRL: EN (Bitfield-Mask: 0x01)                    */
+#define LCD_CTRL_EN                       LCD_CTRL_EN_Msk
+#define LCD_CTRL_TYPE_Pos                 (4UL)                     /*!< LCD CTRL: TYPE (Bit 4)                                */
+#define LCD_CTRL_TYPE_Msk                 (0x30UL)                  /*!< LCD CTRL: TYPE (Bitfield-Mask: 0x03)                  */
+#define LCD_CTRL_TYPE                     LCD_CTRL_TYPE_Msk
+#define LCD_CTRL_DRV_Pos                  (2UL)                     /*!< LCD CTRL: DRV (Bit 2)                                 */
+#define LCD_CTRL_DRV_Msk                  (0xcUL)                   /*!< LCD CTRL: DRV (Bitfield-Mask: 0x03)                   */
+#define LCD_CTRL_DRV                      LCD_CTRL_DRV_Msk
+#define LCD_CTRL_FRQ_Pos                  (0UL)                     /*!< LCD CTRL: FRQ (Bit 0)                                 */
+#define LCD_CTRL_FRQ_Msk                  (0x3UL)                   /*!< LCD CTRL: FRQ (Bitfield-Mask: 0x03)                   */
+#define LCD_CTRL_FRQ                      LCD_CTRL_FRQ_Msk
+/* =========================================================  CTRL2  ========================================================= */
+#define LCD_CTRL2_SWPR_Pos                (8UL)                     /*!< LCD CTRL2: SWPR (Bit 8)                               */
+#define LCD_CTRL2_SWPR_Msk                (0xff00UL)                /*!< LCD CTRL2: SWPR (Bitfield-Mask: 0xff)                 */
+#define LCD_CTRL2_SWPR                    LCD_CTRL2_SWPR_Msk
+#define LCD_CTRL2_FBMODE_Pos              (6UL)                     /*!< LCD CTRL2: FBMODE (Bit 6)                             */
+#define LCD_CTRL2_FBMODE_Msk              (0xc0UL)                  /*!< LCD CTRL2: FBMODE (Bitfield-Mask: 0x03)               */
+#define LCD_CTRL2_FBMODE                  LCD_CTRL2_FBMODE_Msk
+#define LCD_CTRL2_BKFILL_Pos              (4UL)                     /*!< LCD CTRL2: BKFILL (Bit 4)                             */
+#define LCD_CTRL2_BKFILL_Msk              (0x10UL)                  /*!< LCD CTRL2: BKFILL (Bitfield-Mask: 0x01)               */
+#define LCD_CTRL2_BKFILL                  LCD_CTRL2_BKFILL_Msk
+/* =======================================================  SEGCTRL0  ======================================================== */
+#define LCD_SEGCTRL0_SEGCTRL_Pos          (0UL)                     /*!< LCD SEGCTRL0: SEGCTRL (Bit 0)                         */
+#define LCD_SEGCTRL0_SEGCTRL_Msk          (0xffffffffUL)            /*!< LCD SEGCTRL0: SEGCTRL (Bitfield-Mask: 0xffffffff)     */
+#define LCD_SEGCTRL0_SEGCTRL              LCD_SEGCTRL0_SEGCTRL_Msk
+/* =======================================================  SEGCTRL1  ======================================================== */
+#define LCD_SEGCTRL1_SEGCTRL_Pos          (0UL)                     /*!< LCD SEGCTRL1: SEGCTRL (Bit 0)                         */
+#define LCD_SEGCTRL1_SEGCTRL_Msk          (0xffffffffUL)            /*!< LCD SEGCTRL1: SEGCTRL (Bitfield-Mask: 0xffffffff)     */
+#define LCD_SEGCTRL1_SEGCTRL              LCD_SEGCTRL1_SEGCTRL_Msk
+/* =======================================================  SEGCTRL2  ======================================================== */
+#define LCD_SEGCTRL2_SEGCTRL_Pos          (0UL)                     /*!< LCD SEGCTRL2: SEGCTRL (Bit 0)                         */
+#define LCD_SEGCTRL2_SEGCTRL_Msk          (0xffffUL)                /*!< LCD SEGCTRL2: SEGCTRL (Bitfield-Mask: 0xffff)         */
+#define LCD_SEGCTRL2_SEGCTRL              LCD_SEGCTRL2_SEGCTRL_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           MISC1                                           ================ */
+/* =========================================================================================================================== */
+
+/* ========================================================  SRAMINT  ======================================================== */
+#define MISC1_SRAMINT_LOCKUP_Pos          (4UL)                     /*!< MISC1 SRAMINT: LOCKUP (Bit 4)                         */
+#define MISC1_SRAMINT_LOCKUP_Msk          (0x10UL)                  /*!< MISC1 SRAMINT: LOCKUP (Bitfield-Mask: 0x01)           */
+#define MISC1_SRAMINT_LOCKUP              MISC1_SRAMINT_LOCKUP_Msk
+#define MISC1_SRAMINT_PIAC_Pos            (3UL)                     /*!< MISC1 SRAMINT: PIAC (Bit 3)                           */
+#define MISC1_SRAMINT_PIAC_Msk            (0x8UL)                   /*!< MISC1 SRAMINT: PIAC (Bitfield-Mask: 0x01)             */
+#define MISC1_SRAMINT_PIAC                MISC1_SRAMINT_PIAC_Msk
+#define MISC1_SRAMINT_HIAC_Pos            (2UL)                     /*!< MISC1 SRAMINT: HIAC (Bit 2)                           */
+#define MISC1_SRAMINT_HIAC_Msk            (0x4UL)                   /*!< MISC1 SRAMINT: HIAC (Bitfield-Mask: 0x01)             */
+#define MISC1_SRAMINT_HIAC                MISC1_SRAMINT_HIAC_Msk
+#define MISC1_SRAMINT_HIAL_Pos            (1UL)                     /*!< MISC1 SRAMINT: HIAL (Bit 1)                           */
+#define MISC1_SRAMINT_HIAL_Msk            (0x2UL)                   /*!< MISC1 SRAMINT: HIAL (Bitfield-Mask: 0x01)             */
+#define MISC1_SRAMINT_HIAL                MISC1_SRAMINT_HIAL_Msk
+#define MISC1_SRAMINT_PERR_Pos            (0UL)                     /*!< MISC1 SRAMINT: PERR (Bit 0)                           */
+#define MISC1_SRAMINT_PERR_Msk            (0x1UL)                   /*!< MISC1 SRAMINT: PERR (Bitfield-Mask: 0x01)             */
+#define MISC1_SRAMINT_PERR                MISC1_SRAMINT_PERR_Msk
+/* =======================================================  SRAMINIT  ======================================================== */
+#define MISC1_SRAMINIT_LOCKIE_Pos         (7UL)                     /*!< MISC1 SRAMINIT: LOCKIE (Bit 7)                        */
+#define MISC1_SRAMINIT_LOCKIE_Msk         (0x80UL)                  /*!< MISC1 SRAMINIT: LOCKIE (Bitfield-Mask: 0x01)          */
+#define MISC1_SRAMINIT_LOCKIE             MISC1_SRAMINIT_LOCKIE_Msk
+#define MISC1_SRAMINIT_PIACIE_Pos         (6UL)                     /*!< MISC1 SRAMINIT: PIACIE (Bit 6)                        */
+#define MISC1_SRAMINIT_PIACIE_Msk         (0x40UL)                  /*!< MISC1 SRAMINIT: PIACIE (Bitfield-Mask: 0x01)          */
+#define MISC1_SRAMINIT_PIACIE             MISC1_SRAMINIT_PIACIE_Msk
+#define MISC1_SRAMINIT_HIACIE_Pos         (5UL)                     /*!< MISC1 SRAMINIT: HIACIE (Bit 5)                        */
+#define MISC1_SRAMINIT_HIACIE_Msk         (0x20UL)                  /*!< MISC1 SRAMINIT: HIACIE (Bitfield-Mask: 0x01)          */
+#define MISC1_SRAMINIT_HIACIE             MISC1_SRAMINIT_HIACIE_Msk
+#define MISC1_SRAMINIT_INIT_Pos           (2UL)                     /*!< MISC1 SRAMINIT: INIT (Bit 2)                          */
+#define MISC1_SRAMINIT_INIT_Msk           (0x4UL)                   /*!< MISC1 SRAMINIT: INIT (Bitfield-Mask: 0x01)            */
+#define MISC1_SRAMINIT_INIT               MISC1_SRAMINIT_INIT_Msk
+#define MISC1_SRAMINIT_PERRIE_Pos         (1UL)                     /*!< MISC1 SRAMINIT: PERRIE (Bit 1)                        */
+#define MISC1_SRAMINIT_PERRIE_Msk         (0x2UL)                   /*!< MISC1 SRAMINIT: PERRIE (Bitfield-Mask: 0x01)          */
+#define MISC1_SRAMINIT_PERRIE             MISC1_SRAMINIT_PERRIE_Msk
+#define MISC1_SRAMINIT_PEN_Pos            (0UL)                     /*!< MISC1 SRAMINIT: PEN (Bit 0)                           */
+#define MISC1_SRAMINIT_PEN_Msk            (0x1UL)                   /*!< MISC1 SRAMINIT: PEN (Bitfield-Mask: 0x01)             */
+#define MISC1_SRAMINIT_PEN                MISC1_SRAMINIT_PEN_Msk
+/* ========================================================  PARERR  ========================================================= */
+#define MISC1_PARERR_PEADDR_Pos           (0UL)                     /*!< MISC1 PARERR: PEADDR (Bit 0)                          */
+#define MISC1_PARERR_PEADDR_Msk           (0x3fffUL)                /*!< MISC1 PARERR: PEADDR (Bitfield-Mask: 0x3fff)          */
+#define MISC1_PARERR_PEADDR               MISC1_PARERR_PEADDR_Msk
+/* =========================================================  IREN  ========================================================== */
+#define MISC1_IREN_IREN_Pos               (0UL)                     /*!< MISC1 IREN: IREN (Bit 0)                              */
+#define MISC1_IREN_IREN_Msk               (0x3fUL)                  /*!< MISC1 IREN: IREN (Bitfield-Mask: 0x3f)                */
+#define MISC1_IREN_IREN                   MISC1_IREN_IREN_Msk
+/* =========================================================  DUTYL  ========================================================= */
+#define MISC1_DUTYL_DUTYL_Pos             (0UL)                     /*!< MISC1 DUTYL: DUTYL (Bit 0)                            */
+#define MISC1_DUTYL_DUTYL_Msk             (0xffffUL)                /*!< MISC1 DUTYL: DUTYL (Bitfield-Mask: 0xffff)            */
+#define MISC1_DUTYL_DUTYL                 MISC1_DUTYL_DUTYL_Msk
+/* =========================================================  DUTYH  ========================================================= */
+#define MISC1_DUTYH_DUTYH_Pos             (0UL)                     /*!< MISC1 DUTYH: DUTYH (Bit 0)                            */
+#define MISC1_DUTYH_DUTYH_Msk             (0xffffUL)                /*!< MISC1 DUTYH: DUTYH (Bitfield-Mask: 0xffff)            */
+#define MISC1_DUTYH_DUTYH                 MISC1_DUTYH_DUTYH_Msk
+/* ========================================================  IRQLAT  ========================================================= */
+#define MISC1_IRQLAT_NOHARDFAULT_Pos      (9UL)                     /*!< MISC1 IRQLAT: NOHARDFAULT (Bit 9)                     */
+#define MISC1_IRQLAT_NOHARDFAULT_Msk      (0x200UL)                 /*!< MISC1 IRQLAT: NOHARDFAULT (Bitfield-Mask: 0x01)       */
+#define MISC1_IRQLAT_NOHARDFAULT          MISC1_IRQLAT_NOHARDFAULT_Msk
+#define MISC1_IRQLAT_LOCKRESET_Pos        (8UL)                     /*!< MISC1 IRQLAT: LOCKRESET (Bit 8)                       */
+#define MISC1_IRQLAT_LOCKRESET_Msk        (0x100UL)                 /*!< MISC1 IRQLAT: LOCKRESET (Bitfield-Mask: 0x01)         */
+#define MISC1_IRQLAT_LOCKRESET            MISC1_IRQLAT_LOCKRESET_Msk
+#define MISC1_IRQLAT_IRQLAT_Pos           (0UL)                     /*!< MISC1 IRQLAT: IRQLAT (Bit 0)                          */
+#define MISC1_IRQLAT_IRQLAT_Msk           (0xffUL)                  /*!< MISC1 IRQLAT: IRQLAT (Bitfield-Mask: 0xff)            */
+#define MISC1_IRQLAT_IRQLAT               MISC1_IRQLAT_IRQLAT_Msk
+/* ========================================================  HIADDR  ========================================================= */
+#define MISC1_HIADDR_HIADDR_Pos           (0UL)                     /*!< MISC1 HIADDR: HIADDR (Bit 0)                          */
+#define MISC1_HIADDR_HIADDR_Msk           (0xffffffffUL)            /*!< MISC1 HIADDR: HIADDR (Bitfield-Mask: 0xffffffff)      */
+#define MISC1_HIADDR_HIADDR               MISC1_HIADDR_HIADDR_Msk
+/* ========================================================  PIADDR  ========================================================= */
+#define MISC1_PIADDR_PIADDR_Pos           (0UL)                     /*!< MISC1 PIADDR: PIADDR (Bit 0)                          */
+#define MISC1_PIADDR_PIADDR_Msk           (0xffffffffUL)            /*!< MISC1 PIADDR: PIADDR (Bitfield-Mask: 0xffffffff)      */
+#define MISC1_PIADDR_PIADDR               MISC1_PIADDR_PIADDR_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           MISC2                                           ================ */
+/* =========================================================================================================================== */
+
+/* ========================================================  FLASHWC  ======================================================== */
+#define MISC2_FLASHWC_CYCLE_1US_Pos       (8UL)                     /*!< MISC2 FLASHWC: CYCLE_1US (Bit 8)                      */
+#define MISC2_FLASHWC_CYCLE_1US_Msk       (0x3f00UL)                /*!< MISC2 FLASHWC: CYCLE_1US (Bitfield-Mask: 0x3f)        */
+#define MISC2_FLASHWC_CYCLE_1US           MISC2_FLASHWC_CYCLE_1US_Msk
+/* ========================================================  CLKSEL  ========================================================= */
+#define MISC2_CLKSEL_CLKSEL_Pos           (0UL)                     /*!< MISC2 CLKSEL: CLKSEL (Bit 0)                          */
+#define MISC2_CLKSEL_CLKSEL_Msk           (0x7UL)                   /*!< MISC2 CLKSEL: CLKSEL (Bitfield-Mask: 0x07)            */
+#define MISC2_CLKSEL_CLKSEL               MISC2_CLKSEL_CLKSEL_Msk
+/* ========================================================  CLKDIVH  ======================================================== */
+#define MISC2_CLKDIVH_CLKDIVH_Pos         (0UL)                     /*!< MISC2 CLKDIVH: CLKDIVH (Bit 0)                        */
+#define MISC2_CLKDIVH_CLKDIVH_Msk         (0xffUL)                  /*!< MISC2 CLKDIVH: CLKDIVH (Bitfield-Mask: 0xff)          */
+#define MISC2_CLKDIVH_CLKDIVH             MISC2_CLKDIVH_CLKDIVH_Msk
+/* ========================================================  CLKDIVP  ======================================================== */
+#define MISC2_CLKDIVP_CLKDIVP_Pos         (0UL)                     /*!< MISC2 CLKDIVP: CLKDIVP (Bit 0)                        */
+#define MISC2_CLKDIVP_CLKDIVP_Msk         (0xffUL)                  /*!< MISC2 CLKDIVP: CLKDIVP (Bitfield-Mask: 0xff)          */
+#define MISC2_CLKDIVP_CLKDIVP             MISC2_CLKDIVP_CLKDIVP_Msk
+/* ========================================================  HCLKEN  ========================================================= */
+#define MISC2_HCLKEN_CRYPT_Pos            (8UL)                     /*!< MISC2 HCLKEN: CRYPT (Bit 8)                           */
+#define MISC2_HCLKEN_CRYPT_Msk            (0x100UL)                 /*!< MISC2 HCLKEN: CRYPT (Bitfield-Mask: 0x01)             */
+#define MISC2_HCLKEN_CRYPT                MISC2_HCLKEN_CRYPT_Msk
+#define MISC2_HCLKEN_LCD_Pos              (6UL)                     /*!< MISC2 HCLKEN: LCD (Bit 6)                             */
+#define MISC2_HCLKEN_LCD_Msk              (0x40UL)                  /*!< MISC2 HCLKEN: LCD (Bitfield-Mask: 0x01)               */
+#define MISC2_HCLKEN_LCD                  MISC2_HCLKEN_LCD_Msk
+#define MISC2_HCLKEN_GPIO_Pos             (5UL)                     /*!< MISC2 HCLKEN: GPIO (Bit 5)                            */
+#define MISC2_HCLKEN_GPIO_Msk             (0x20UL)                  /*!< MISC2 HCLKEN: GPIO (Bitfield-Mask: 0x01)              */
+#define MISC2_HCLKEN_GPIO                 MISC2_HCLKEN_GPIO_Msk
+#define MISC2_HCLKEN_DMA_Pos              (4UL)                     /*!< MISC2 HCLKEN: DMA (Bit 4)                             */
+#define MISC2_HCLKEN_DMA_Msk              (0x10UL)                  /*!< MISC2 HCLKEN: DMA (Bitfield-Mask: 0x01)               */
+#define MISC2_HCLKEN_DMA                  MISC2_HCLKEN_DMA_Msk
+/* ========================================================  PCLKEN  ========================================================= */
+#define MISC2_PCLKEN_SPI3_Pos             (22UL)                    /*!< MISC2 PCLKEN: SPI3 (Bit 22)                           */
+#define MISC2_PCLKEN_SPI3_Msk             (0x400000UL)              /*!< MISC2 PCLKEN: SPI3 (Bitfield-Mask: 0x01)              */
+#define MISC2_PCLKEN_SPI3                 MISC2_PCLKEN_SPI3_Msk
+#define MISC2_PCLKEN_SPI2_Pos             (21UL)                    /*!< MISC2 PCLKEN: SPI2 (Bit 21)                           */
+#define MISC2_PCLKEN_SPI2_Msk             (0x200000UL)              /*!< MISC2 PCLKEN: SPI2 (Bitfield-Mask: 0x01)              */
+#define MISC2_PCLKEN_SPI2                 MISC2_PCLKEN_SPI2_Msk
+#define MISC2_PCLKEN_U32K1_Pos            (19UL)                    /*!< MISC2 PCLKEN: U32K1 (Bit 19)                          */
+#define MISC2_PCLKEN_U32K1_Msk            (0x80000UL)               /*!< MISC2 PCLKEN: U32K1 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_U32K1                MISC2_PCLKEN_U32K1_Msk
+#define MISC2_PCLKEN_U32K0_Pos            (18UL)                    /*!< MISC2 PCLKEN: U32K0 (Bit 18)                          */
+#define MISC2_PCLKEN_U32K0_Msk            (0x40000UL)               /*!< MISC2 PCLKEN: U32K0 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_U32K0                MISC2_PCLKEN_U32K0_Msk
+#define MISC2_PCLKEN_ANA_Pos              (17UL)                    /*!< MISC2 PCLKEN: ANA (Bit 17)                            */
+#define MISC2_PCLKEN_ANA_Msk              (0x20000UL)               /*!< MISC2 PCLKEN: ANA (Bitfield-Mask: 0x01)               */
+#define MISC2_PCLKEN_ANA                  MISC2_PCLKEN_ANA_Msk
+#define MISC2_PCLKEN_RTC_Pos              (16UL)                    /*!< MISC2 PCLKEN: RTC (Bit 16)                            */
+#define MISC2_PCLKEN_RTC_Msk              (0x10000UL)               /*!< MISC2 PCLKEN: RTC (Bitfield-Mask: 0x01)               */
+#define MISC2_PCLKEN_RTC                  MISC2_PCLKEN_RTC_Msk
+#define MISC2_PCLKEN_PMU_Pos              (15UL)                    /*!< MISC2 PCLKEN: PMU (Bit 15)                            */
+#define MISC2_PCLKEN_PMU_Msk              (0x8000UL)                /*!< MISC2 PCLKEN: PMU (Bitfield-Mask: 0x01)               */
+#define MISC2_PCLKEN_PMU                  MISC2_PCLKEN_PMU_Msk
+#define MISC2_PCLKEN_MISC2_Pos            (14UL)                    /*!< MISC2 PCLKEN: MISC2 (Bit 14)                          */
+#define MISC2_PCLKEN_MISC2_Msk            (0x4000UL)                /*!< MISC2 PCLKEN: MISC2 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_MISC2                MISC2_PCLKEN_MISC2_Msk
+#define MISC2_PCLKEN_MISC1_Pos            (13UL)                    /*!< MISC2 PCLKEN: MISC1 (Bit 13)                          */
+#define MISC2_PCLKEN_MISC1_Msk            (0x2000UL)                /*!< MISC2 PCLKEN: MISC1 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_MISC1                MISC2_PCLKEN_MISC1_Msk
+#define MISC2_PCLKEN_TIMER_Pos            (12UL)                    /*!< MISC2 PCLKEN: TIMER (Bit 12)                          */
+#define MISC2_PCLKEN_TIMER_Msk            (0x1000UL)                /*!< MISC2 PCLKEN: TIMER (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_TIMER                MISC2_PCLKEN_TIMER_Msk
+#define MISC2_PCLKEN_ISO78161_Pos         (11UL)                    /*!< MISC2 PCLKEN: ISO78161 (Bit 11)                       */
+#define MISC2_PCLKEN_ISO78161_Msk         (0x800UL)                 /*!< MISC2 PCLKEN: ISO78161 (Bitfield-Mask: 0x01)          */
+#define MISC2_PCLKEN_ISO78161             MISC2_PCLKEN_ISO78161_Msk
+#define MISC2_PCLKEN_ISO78160_Pos         (10UL)                    /*!< MISC2 PCLKEN: ISO78160 (Bit 10)                       */
+#define MISC2_PCLKEN_ISO78160_Msk         (0x400UL)                 /*!< MISC2 PCLKEN: ISO78160 (Bitfield-Mask: 0x01)          */
+#define MISC2_PCLKEN_ISO78160             MISC2_PCLKEN_ISO78160_Msk
+#define MISC2_PCLKEN_UART5_Pos            (9UL)                     /*!< MISC2 PCLKEN: UART5 (Bit 9)                           */
+#define MISC2_PCLKEN_UART5_Msk            (0x200UL)                 /*!< MISC2 PCLKEN: UART5 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART5                MISC2_PCLKEN_UART5_Msk
+#define MISC2_PCLKEN_UART4_Pos            (8UL)                     /*!< MISC2 PCLKEN: UART4 (Bit 8)                           */
+#define MISC2_PCLKEN_UART4_Msk            (0x100UL)                 /*!< MISC2 PCLKEN: UART4 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART4                MISC2_PCLKEN_UART4_Msk
+#define MISC2_PCLKEN_UART3_Pos            (7UL)                     /*!< MISC2 PCLKEN: UART3 (Bit 7)                           */
+#define MISC2_PCLKEN_UART3_Msk            (0x80UL)                  /*!< MISC2 PCLKEN: UART3 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART3                MISC2_PCLKEN_UART3_Msk
+#define MISC2_PCLKEN_UART2_Pos            (6UL)                     /*!< MISC2 PCLKEN: UART2 (Bit 6)                           */
+#define MISC2_PCLKEN_UART2_Msk            (0x40UL)                  /*!< MISC2 PCLKEN: UART2 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART2                MISC2_PCLKEN_UART2_Msk
+#define MISC2_PCLKEN_UART1_Pos            (5UL)                     /*!< MISC2 PCLKEN: UART1 (Bit 5)                           */
+#define MISC2_PCLKEN_UART1_Msk            (0x20UL)                  /*!< MISC2 PCLKEN: UART1 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART1                MISC2_PCLKEN_UART1_Msk
+#define MISC2_PCLKEN_UART0_Pos            (4UL)                     /*!< MISC2 PCLKEN: UART0 (Bit 4)                           */
+#define MISC2_PCLKEN_UART0_Msk            (0x10UL)                  /*!< MISC2 PCLKEN: UART0 (Bitfield-Mask: 0x01)             */
+#define MISC2_PCLKEN_UART0                MISC2_PCLKEN_UART0_Msk
+#define MISC2_PCLKEN_SPI1_Pos             (3UL)                     /*!< MISC2 PCLKEN: SPI1 (Bit 3)                            */
+#define MISC2_PCLKEN_SPI1_Msk             (0x8UL)                   /*!< MISC2 PCLKEN: SPI1 (Bitfield-Mask: 0x01)              */
+#define MISC2_PCLKEN_SPI1                 MISC2_PCLKEN_SPI1_Msk
+#define MISC2_PCLKEN_I2C_Pos              (2UL)                     /*!< MISC2 PCLKEN: I2C (Bit 2)                             */
+#define MISC2_PCLKEN_I2C_Msk              (0x4UL)                   /*!< MISC2 PCLKEN: I2C (Bitfield-Mask: 0x01)               */
+#define MISC2_PCLKEN_I2C                  MISC2_PCLKEN_I2C_Msk
+#define MISC2_PCLKEN_DMA_Pos              (1UL)                     /*!< MISC2 PCLKEN: DMA (Bit 1)                             */
+#define MISC2_PCLKEN_DMA_Msk              (0x2UL)                   /*!< MISC2 PCLKEN: DMA (Bitfield-Mask: 0x01)               */
+#define MISC2_PCLKEN_DMA                  MISC2_PCLKEN_DMA_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            PMU                                            ================ */
+/* =========================================================================================================================== */
+
+/* =======================================================  DSLEEPEN  ======================================================== */
+#define PMU_DSLEEPEN_WKU_Pos              (31UL)                    /*!< PMU DSLEEPEN: WKU (Bit 31)                            */
+#define PMU_DSLEEPEN_WKU_Msk              (0x80000000UL)            /*!< PMU DSLEEPEN: WKU (Bitfield-Mask: 0x01)               */
+#define PMU_DSLEEPEN_WKU                  PMU_DSLEEPEN_WKU_Msk
+/* ======================================================  DSLEEPPASS  ======================================================= */
+#define PMU_DSLEEPPASS_UNLOCK_Pos         (0UL)                     /*!< PMU DSLEEPPASS: UNLOCK (Bit 0)                        */
+#define PMU_DSLEEPPASS_UNLOCK_Msk         (0x1UL)                   /*!< PMU DSLEEPPASS: UNLOCK (Bitfield-Mask: 0x01)          */
+#define PMU_DSLEEPPASS_UNLOCK             PMU_DSLEEPPASS_UNLOCK_Msk
+/* ========================================================  CONTROL  ======================================================== */
+#define PMU_CONTROL_FORCE_CLKSEL_RCH_Pos  (20UL)                    /*!< PMU CONTROL: FORCE_CLKSEL_RCH (Bit 20)                */
+#define PMU_CONTROL_FORCE_CLKSEL_RCH_Msk  (0x100000UL)              /*!< PMU CONTROL: FORCE_CLKSEL_RCH (Bitfield-Mask: 0x01)   */
+#define PMU_CONTROL_FORCE_CLKSEL_RCH      PMU_CONTROL_FORCE_CLKSEL_RCH_Msk
+#define PMU_CONTROL_PWUPCYC_Pos           (8UL)                     /*!< PMU CONTROL: PWUPCYC (Bit 8)                          */
+#define PMU_CONTROL_PWUPCYC_Msk           (0xff00UL)                /*!< PMU CONTROL: PWUPCYC (Bitfield-Mask: 0xff)            */
+#define PMU_CONTROL_PWUPCYC               PMU_CONTROL_PWUPCYC_Msk
+#define PMU_CONTROL_PLLL_SEL_Pos          (5UL)                     /*!< PMU CONTROL: PLLL_SEL (Bit 5)                         */
+#define PMU_CONTROL_PLLL_SEL_Msk          (0x20UL)                  /*!< PMU CONTROL: PLLL_SEL (Bitfield-Mask: 0x01)           */
+#define PMU_CONTROL_PLLL_SEL              PMU_CONTROL_PLLL_SEL_Msk
+#define PMU_CONTROL_PLLH_SEL_Pos          (4UL)                     /*!< PMU CONTROL: PLLH_SEL (Bit 4)                         */
+#define PMU_CONTROL_PLLH_SEL_Msk          (0x10UL)                  /*!< PMU CONTROL: PLLH_SEL (Bitfield-Mask: 0x01)           */
+#define PMU_CONTROL_PLLH_SEL              PMU_CONTROL_PLLH_SEL_Msk
+#define PMU_CONTROL_INT_6M_EN_Pos         (3UL)                     /*!< PMU CONTROL: INT_6M_EN (Bit 3)                        */
+#define PMU_CONTROL_INT_6M_EN_Msk         (0x8UL)                   /*!< PMU CONTROL: INT_6M_EN (Bitfield-Mask: 0x01)          */
+#define PMU_CONTROL_INT_6M_EN             PMU_CONTROL_INT_6M_EN_Msk
+#define PMU_CONTROL_INT_32K_EN_Pos        (2UL)                     /*!< PMU CONTROL: INT_32K_EN (Bit 2)                       */
+#define PMU_CONTROL_INT_32K_EN_Msk        (0x4UL)                   /*!< PMU CONTROL: INT_32K_EN (Bitfield-Mask: 0x01)         */
+#define PMU_CONTROL_INT_32K_EN            PMU_CONTROL_INT_32K_EN_Msk
+#define PMU_CONTROL_RTCCLK_SEL_Pos        (1UL)                     /*!< PMU CONTROL: RTCCLK_SEL (Bit 1)                       */
+#define PMU_CONTROL_RTCCLK_SEL_Msk        (0x2UL)                   /*!< PMU CONTROL: RTCCLK_SEL (Bitfield-Mask: 0x01)         */
+#define PMU_CONTROL_RTCCLK_SEL            PMU_CONTROL_RTCCLK_SEL_Msk
+#define PMU_CONTROL_INT_IOA_EN_Pos        (0UL)                     /*!< PMU CONTROL: INT_IOA_EN (Bit 0)                       */
+#define PMU_CONTROL_INT_IOA_EN_Msk        (0x1UL)                   /*!< PMU CONTROL: INT_IOA_EN (Bitfield-Mask: 0x01)         */
+#define PMU_CONTROL_INT_IOA_EN            PMU_CONTROL_INT_IOA_EN_Msk
+/* ==========================================================  STS  ========================================================== */
+#define PMU_STS_MODE_Pos                  (24UL)                    /*!< PMU STS: MODE (Bit 24)                                */
+#define PMU_STS_MODE_Msk                  (0x1000000UL)             /*!< PMU STS: MODE (Bitfield-Mask: 0x01)                   */
+#define PMU_STS_MODE                      PMU_STS_MODE_Msk
+#define PMU_STS_WKUMODE_Pos               (22UL)                    /*!< PMU STS: WKUMODE (Bit 22)                             */
+#define PMU_STS_WKUMODE_Msk               (0x400000UL)              /*!< PMU STS: WKUMODE (Bitfield-Mask: 0x01)                */
+#define PMU_STS_WKUMODE                   PMU_STS_WKUMODE_Msk
+#define PMU_STS_WKUXTAL_Pos               (20UL)                    /*!< PMU STS: WKUXTAL (Bit 20)                             */
+#define PMU_STS_WKUXTAL_Msk               (0x100000UL)              /*!< PMU STS: WKUXTAL (Bitfield-Mask: 0x01)                */
+#define PMU_STS_WKUXTAL                   PMU_STS_WKUXTAL_Msk
+#define PMU_STS_WKUU32K_Pos               (19UL)                    /*!< PMU STS: WKUU32K (Bit 19)                             */
+#define PMU_STS_WKUU32K_Msk               (0x80000UL)               /*!< PMU STS: WKUU32K (Bitfield-Mask: 0x01)                */
+#define PMU_STS_WKUU32K                   PMU_STS_WKUU32K_Msk
+#define PMU_STS_WKUANA_Pos                (18UL)                    /*!< PMU STS: WKUANA (Bit 18)                              */
+#define PMU_STS_WKUANA_Msk                (0x40000UL)               /*!< PMU STS: WKUANA (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_WKUANA                    PMU_STS_WKUANA_Msk
+#define PMU_STS_WKURTC_Pos                (17UL)                    /*!< PMU STS: WKURTC (Bit 17)                              */
+#define PMU_STS_WKURTC_Msk                (0x20000UL)               /*!< PMU STS: WKURTC (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_WKURTC                    PMU_STS_WKURTC_Msk
+#define PMU_STS_WKUIOA_Pos                (16UL)                    /*!< PMU STS: WKUIOA (Bit 16)                              */
+#define PMU_STS_WKUIOA_Msk                (0x10000UL)               /*!< PMU STS: WKUIOA (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_WKUIOA                    PMU_STS_WKUIOA_Msk
+#define PMU_STS_MODERST_Pos               (10UL)                    /*!< PMU STS: MODERST (Bit 10)                             */
+#define PMU_STS_MODERST_Msk               (0x400UL)                 /*!< PMU STS: MODERST (Bitfield-Mask: 0x01)                */
+#define PMU_STS_MODERST                   PMU_STS_MODERST_Msk
+#define PMU_STS_SFTRST_Pos                (8UL)                     /*!< PMU STS: SFTRST (Bit 8)                               */
+#define PMU_STS_SFTRST_Msk                (0x100UL)                 /*!< PMU STS: SFTRST (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_SFTRST                    PMU_STS_SFTRST_Msk
+#define PMU_STS_WDTRST_Pos                (7UL)                     /*!< PMU STS: WDTRST (Bit 7)                               */
+#define PMU_STS_WDTRST_Msk                (0x80UL)                  /*!< PMU STS: WDTRST (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_WDTRST                    PMU_STS_WDTRST_Msk
+#define PMU_STS_DPORST_Pos                (6UL)                     /*!< PMU STS: DPORST (Bit 6)                               */
+#define PMU_STS_DPORST_Msk                (0x40UL)                  /*!< PMU STS: DPORST (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_DPORST                    PMU_STS_DPORST_Msk
+#define PMU_STS_PORST_Pos                 (5UL)                     /*!< PMU STS: PORST (Bit 5)                                */
+#define PMU_STS_PORST_Msk                 (0x20UL)                  /*!< PMU STS: PORST (Bitfield-Mask: 0x01)                  */
+#define PMU_STS_PORST                     PMU_STS_PORST_Msk
+#define PMU_STS_EXTRST_Pos                (4UL)                     /*!< PMU STS: EXTRST (Bit 4)                               */
+#define PMU_STS_EXTRST_Msk                (0x10UL)                  /*!< PMU STS: EXTRST (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_EXTRST                    PMU_STS_EXTRST_Msk
+#define PMU_STS_EXIST_6M_Pos              (3UL)                     /*!< PMU STS: EXIST_6M (Bit 3)                             */
+#define PMU_STS_EXIST_6M_Msk              (0x8UL)                   /*!< PMU STS: EXIST_6M (Bitfield-Mask: 0x01)               */
+#define PMU_STS_EXIST_6M                  PMU_STS_EXIST_6M_Msk
+#define PMU_STS_EXIST_32K_Pos             (2UL)                     /*!< PMU STS: EXIST_32K (Bit 2)                            */
+#define PMU_STS_EXIST_32K_Msk             (0x4UL)                   /*!< PMU STS: EXIST_32K (Bitfield-Mask: 0x01)              */
+#define PMU_STS_EXIST_32K                 PMU_STS_EXIST_32K_Msk
+#define PMU_STS_INT_6M_Pos                (1UL)                     /*!< PMU STS: INT_6M (Bit 1)                               */
+#define PMU_STS_INT_6M_Msk                (0x2UL)                   /*!< PMU STS: INT_6M (Bitfield-Mask: 0x01)                 */
+#define PMU_STS_INT_6M                    PMU_STS_INT_6M_Msk
+#define PMU_STS_INT_32K_Pos               (0UL)                     /*!< PMU STS: INT_32K (Bit 0)                              */
+#define PMU_STS_INT_32K_Msk               (0x1UL)                   /*!< PMU STS: INT_32K (Bitfield-Mask: 0x01)                */
+#define PMU_STS_INT_32K                   PMU_STS_INT_32K_Msk
+/* ========================================================  WDTPASS  ======================================================== */
+#define PMU_WDTPASS_UNLOCK_Pos            (0UL)                     /*!< PMU WDTPASS: UNLOCK (Bit 0)                           */
+#define PMU_WDTPASS_UNLOCK_Msk            (0x1UL)                   /*!< PMU WDTPASS: UNLOCK (Bitfield-Mask: 0x01)             */
+#define PMU_WDTPASS_UNLOCK                PMU_WDTPASS_UNLOCK_Msk
+/* =========================================================  WDTEN  ========================================================= */
+#define PMU_WDTEN_WDTSEL_Pos              (2UL)                     /*!< PMU WDTEN: WDTSEL (Bit 2)                             */
+#define PMU_WDTEN_WDTSEL_Msk              (0xcUL)                   /*!< PMU WDTEN: WDTSEL (Bitfield-Mask: 0x03)               */
+#define PMU_WDTEN_WDTSEL                  PMU_WDTEN_WDTSEL_Msk
+#define PMU_WDTEN_WDTEN_Pos               (0UL)                     /*!< PMU WDTEN: WDTEN (Bit 0)                              */
+#define PMU_WDTEN_WDTEN_Msk               (0x1UL)                   /*!< PMU WDTEN: WDTEN (Bitfield-Mask: 0x01)                */
+#define PMU_WDTEN_WDTEN                   PMU_WDTEN_WDTEN_Msk
+/* ========================================================  WDTCLR  ========================================================= */
+#define PMU_WDTCLR_WDTCNT_Pos             (0UL)                     /*!< PMU WDTCLR: WDTCNT (Bit 0)                            */
+#define PMU_WDTCLR_WDTCNT_Msk             (0xffffUL)                /*!< PMU WDTCLR: WDTCNT (Bitfield-Mask: 0xffff)            */
+#define PMU_WDTCLR_WDTCNT                 PMU_WDTCLR_WDTCNT_Msk
+/* ==========================================================  RAM  ========================================================== */
+#define PMU_RAM_RAM_Pos                   (0UL)                     /*!< PMU RAM: RAM (Bit 0)                                  */
+#define PMU_RAM_RAM_Msk                   (0xffffffffUL)            /*!< PMU RAM: RAM (Bitfield-Mask: 0xffffffff)              */
+#define PMU_RAM_RAM                       PMU_RAM_RAM_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            PWM                                            ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  CTL  ========================================================== */
+#define PWM_CTL_ID_Pos                    (6UL)                     /*!< PWM CTL: ID (Bit 6)                                   */
+#define PWM_CTL_ID_Msk                    (0xc0UL)                  /*!< PWM CTL: ID (Bitfield-Mask: 0x03)                     */
+#define PWM_CTL_ID                        PWM_CTL_ID_Msk
+#define PWM_CTL_MC_Pos                    (4UL)                     /*!< PWM CTL: MC (Bit 4)                                   */
+#define PWM_CTL_MC_Msk                    (0x30UL)                  /*!< PWM CTL: MC (Bitfield-Mask: 0x03)                     */
+#define PWM_CTL_MC                        PWM_CTL_MC_Msk
+#define PWM_CTL_TSEL_Pos                  (3UL)                     /*!< PWM CTL: TSEL (Bit 3)                                 */
+#define PWM_CTL_TSEL_Msk                  (0x8UL)                   /*!< PWM CTL: TSEL (Bitfield-Mask: 0x01)                   */
+#define PWM_CTL_TSEL                      PWM_CTL_TSEL_Msk
+#define PWM_CTL_CLR_Pos                   (2UL)                     /*!< PWM CTL: CLR (Bit 2)                                  */
+#define PWM_CTL_CLR_Msk                   (0x4UL)                   /*!< PWM CTL: CLR (Bitfield-Mask: 0x01)                    */
+#define PWM_CTL_CLR                       PWM_CTL_CLR_Msk
+#define PWM_CTL_IE_Pos                    (1UL)                     /*!< PWM CTL: IE (Bit 1)                                   */
+#define PWM_CTL_IE_Msk                    (0x2UL)                   /*!< PWM CTL: IE (Bitfield-Mask: 0x01)                     */
+#define PWM_CTL_IE                        PWM_CTL_IE_Msk
+#define PWM_CTL_IFG_Pos                   (0UL)                     /*!< PWM CTL: IFG (Bit 0)                                  */
+#define PWM_CTL_IFG_Msk                   (0x1UL)                   /*!< PWM CTL: IFG (Bitfield-Mask: 0x01)                    */
+#define PWM_CTL_IFG                       PWM_CTL_IFG_Msk
+/* ==========================================================  TAR  ========================================================== */
+#define PWM_TAR_TAR_Pos                   (0UL)                     /*!< PWM TAR: TAR (Bit 0)                                  */
+#define PWM_TAR_TAR_Msk                   (0xffffUL)                /*!< PWM TAR: TAR (Bitfield-Mask: 0xffff)                  */
+#define PWM_TAR_TAR                       PWM_TAR_TAR_Msk
+/* =========================================================  CCTL  ========================================================== */
+#define PWM_CCTL_CM_Pos                   (14UL)                    /*!< PWM CCTL: CM (Bit 14)                                 */
+#define PWM_CCTL_CM_Msk                   (0xc000UL)                /*!< PWM CCTL: CM (Bitfield-Mask: 0x03)                    */
+#define PWM_CCTL_CM                       PWM_CCTL_CM_Msk
+#define PWM_CCTL_SCCI_Pos                 (10UL)                    /*!< PWM CCTL: SCCI (Bit 10)                               */
+#define PWM_CCTL_SCCI_Msk                 (0x400UL)                 /*!< PWM CCTL: SCCI (Bitfield-Mask: 0x01)                  */
+#define PWM_CCTL_SCCI                     PWM_CCTL_SCCI_Msk
+#define PWM_CCTL_OUTEN_Pos                (9UL)                     /*!< PWM CCTL: OUTEN (Bit 9)                               */
+#define PWM_CCTL_OUTEN_Msk                (0x200UL)                 /*!< PWM CCTL: OUTEN (Bitfield-Mask: 0x01)                 */
+#define PWM_CCTL_OUTEN                    PWM_CCTL_OUTEN_Msk
+#define PWM_CCTL_CAP_Pos                  (8UL)                     /*!< PWM CCTL: CAP (Bit 8)                                 */
+#define PWM_CCTL_CAP_Msk                  (0x100UL)                 /*!< PWM CCTL: CAP (Bitfield-Mask: 0x01)                   */
+#define PWM_CCTL_CAP                      PWM_CCTL_CAP_Msk
+#define PWM_CCTL_OUTMOD_Pos               (5UL)                     /*!< PWM CCTL: OUTMOD (Bit 5)                              */
+#define PWM_CCTL_OUTMOD_Msk               (0xe0UL)                  /*!< PWM CCTL: OUTMOD (Bitfield-Mask: 0x07)                */
+#define PWM_CCTL_OUTMOD                   PWM_CCTL_OUTMOD_Msk
+#define PWM_CCTL_CCIE_Pos                 (4UL)                     /*!< PWM CCTL: CCIE (Bit 4)                                */
+#define PWM_CCTL_CCIE_Msk                 (0x10UL)                  /*!< PWM CCTL: CCIE (Bitfield-Mask: 0x01)                  */
+#define PWM_CCTL_CCIE                     PWM_CCTL_CCIE_Msk
+#define PWM_CCTL_OUT_Pos                  (2UL)                     /*!< PWM CCTL: OUT (Bit 2)                                 */
+#define PWM_CCTL_OUT_Msk                  (0x4UL)                   /*!< PWM CCTL: OUT (Bitfield-Mask: 0x01)                   */
+#define PWM_CCTL_OUT                      PWM_CCTL_OUT_Msk
+#define PWM_CCTL_COV_Pos                  (1UL)                     /*!< PWM CCTL: COV (Bit 1)                                 */
+#define PWM_CCTL_COV_Msk                  (0x2UL)                   /*!< PWM CCTL: COV (Bitfield-Mask: 0x01)                   */
+#define PWM_CCTL_COV                      PWM_CCTL_COV_Msk
+#define PWM_CCTL_CCIFG_Pos                (0UL)                     /*!< PWM CCTL: CCIFG (Bit 0)                               */
+#define PWM_CCTL_CCIFG_Msk                (0x1UL)                   /*!< PWM CCTL: CCIFG (Bitfield-Mask: 0x01)                 */
+#define PWM_CCTL_CCIFG                    PWM_CCTL_CCIFG_Msk
+/* ==========================================================  CCR  ========================================================== */
+#define PWM_CCR_CCRx_Pos                  (0UL)                     /*!< PWM CCR: CCRx (Bit 0)                                 */
+#define PWM_CCR_CCRx_Msk                  (0xffffUL)                /*!< PWM CCR: CCRx (Bitfield-Mask: 0xffff)                 */
+#define PWM_CCR_CCRx                      PWM_CCR_CCRx_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                          PWM_SEL                                          ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  O_SEL  ========================================================= */
+#define PWM_SEL_O_SEL_SEL3_Pos            (12UL)                    /*!< PWM_SEL O_SEL: SEL3 (Bit 12)                          */
+#define PWM_SEL_O_SEL_SEL3_Msk            (0xf000UL)                /*!< PWM_SEL O_SEL: SEL3 (Bitfield-Mask: 0x0f)             */
+#define PWM_SEL_O_SEL_SEL3                PWM_SEL_O_SEL_SEL3_Msk
+#define PWM_SEL_O_SEL_SEL2_Pos            (8UL)                     /*!< PWM_SEL O_SEL: SEL2 (Bit 8)                           */
+#define PWM_SEL_O_SEL_SEL2_Msk            (0xf00UL)                 /*!< PWM_SEL O_SEL: SEL2 (Bitfield-Mask: 0x0f)             */
+#define PWM_SEL_O_SEL_SEL2                PWM_SEL_O_SEL_SEL2_Msk
+#define PWM_SEL_O_SEL_SEL1_Pos            (4UL)                     /*!< PWM_SEL O_SEL: SEL1 (Bit 4)                           */
+#define PWM_SEL_O_SEL_SEL1_Msk            (0xf0UL)                  /*!< PWM_SEL O_SEL: SEL1 (Bitfield-Mask: 0x0f)             */
+#define PWM_SEL_O_SEL_SEL1                PWM_SEL_O_SEL_SEL1_Msk
+#define PWM_SEL_O_SEL_SEL0_Pos            (0UL)                     /*!< PWM_SEL O_SEL: SEL0 (Bit 0)                           */
+#define PWM_SEL_O_SEL_SEL0_Msk            (0xfUL)                   /*!< PWM_SEL O_SEL: SEL0 (Bitfield-Mask: 0x0f)             */
+#define PWM_SEL_O_SEL_SEL0                PWM_SEL_O_SEL_SEL0_Msk
+/* ========================================================  I_SEL01  ======================================================== */
+#define PWM_SEL_I_SEL01_SEL12_Pos         (20UL)                    /*!< PWM_SEL I_SEL01: SEL12 (Bit 20)                       */
+#define PWM_SEL_I_SEL01_SEL12_Msk         (0x300000UL)              /*!< PWM_SEL I_SEL01: SEL12 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL12             PWM_SEL_I_SEL01_SEL12_Msk
+#define PWM_SEL_I_SEL01_SEL11_Pos         (18UL)                    /*!< PWM_SEL I_SEL01: SEL11 (Bit 18)                       */
+#define PWM_SEL_I_SEL01_SEL11_Msk         (0xc0000UL)               /*!< PWM_SEL I_SEL01: SEL11 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL11             PWM_SEL_I_SEL01_SEL11_Msk
+#define PWM_SEL_I_SEL01_SEL10_Pos         (16UL)                    /*!< PWM_SEL I_SEL01: SEL10 (Bit 16)                       */
+#define PWM_SEL_I_SEL01_SEL10_Msk         (0x30000UL)               /*!< PWM_SEL I_SEL01: SEL10 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL10             PWM_SEL_I_SEL01_SEL10_Msk
+#define PWM_SEL_I_SEL01_SEL02_Pos         (4UL)                     /*!< PWM_SEL I_SEL01: SEL02 (Bit 4)                        */
+#define PWM_SEL_I_SEL01_SEL02_Msk         (0x30UL)                  /*!< PWM_SEL I_SEL01: SEL02 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL02             PWM_SEL_I_SEL01_SEL02_Msk
+#define PWM_SEL_I_SEL01_SEL01_Pos         (2UL)                     /*!< PWM_SEL I_SEL01: SEL01 (Bit 2)                        */
+#define PWM_SEL_I_SEL01_SEL01_Msk         (0xcUL)                   /*!< PWM_SEL I_SEL01: SEL01 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL01             PWM_SEL_I_SEL01_SEL01_Msk
+#define PWM_SEL_I_SEL01_SEL00_Pos         (0UL)                     /*!< PWM_SEL I_SEL01: SEL00 (Bit 0)                        */
+#define PWM_SEL_I_SEL01_SEL00_Msk         (0x3UL)                   /*!< PWM_SEL I_SEL01: SEL00 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL01_SEL00             PWM_SEL_I_SEL01_SEL00_Msk
+/* ========================================================  I_SEL23  ======================================================== */
+#define PWM_SEL_I_SEL23_SEL32_Pos         (20UL)                    /*!< PWM_SEL I_SEL23: SEL32 (Bit 20)                       */
+#define PWM_SEL_I_SEL23_SEL32_Msk         (0x300000UL)              /*!< PWM_SEL I_SEL23: SEL32 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL32             PWM_SEL_I_SEL23_SEL32_Msk
+#define PWM_SEL_I_SEL23_SEL31_Pos         (18UL)                    /*!< PWM_SEL I_SEL23: SEL31 (Bit 18)                       */
+#define PWM_SEL_I_SEL23_SEL31_Msk         (0xc0000UL)               /*!< PWM_SEL I_SEL23: SEL31 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL31             PWM_SEL_I_SEL23_SEL31_Msk
+#define PWM_SEL_I_SEL23_SEL30_Pos         (16UL)                    /*!< PWM_SEL I_SEL23: SEL30 (Bit 16)                       */
+#define PWM_SEL_I_SEL23_SEL30_Msk         (0x30000UL)               /*!< PWM_SEL I_SEL23: SEL30 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL30             PWM_SEL_I_SEL23_SEL30_Msk
+#define PWM_SEL_I_SEL23_SEL22_Pos         (4UL)                     /*!< PWM_SEL I_SEL23: SEL22 (Bit 4)                        */
+#define PWM_SEL_I_SEL23_SEL22_Msk         (0x30UL)                  /*!< PWM_SEL I_SEL23: SEL22 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL22             PWM_SEL_I_SEL23_SEL22_Msk
+#define PWM_SEL_I_SEL23_SEL21_Pos         (2UL)                     /*!< PWM_SEL I_SEL23: SEL21 (Bit 2)                        */
+#define PWM_SEL_I_SEL23_SEL21_Msk         (0xcUL)                   /*!< PWM_SEL I_SEL23: SEL21 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL21             PWM_SEL_I_SEL23_SEL21_Msk
+#define PWM_SEL_I_SEL23_SEL20_Pos         (0UL)                     /*!< PWM_SEL I_SEL23: SEL20 (Bit 0)                        */
+#define PWM_SEL_I_SEL23_SEL20_Msk         (0x3UL)                   /*!< PWM_SEL I_SEL23: SEL20 (Bitfield-Mask: 0x03)          */
+#define PWM_SEL_I_SEL23_SEL20             PWM_SEL_I_SEL23_SEL20_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            RTC                                            ================ */
+/* =========================================================================================================================== */
+
+/* ==========================================================  SEC  ========================================================== */
+#define RTC_SEC_SEC_Pos                   (0UL)                     /*!< RTC SEC: SEC (Bit 0)                                  */
+#define RTC_SEC_SEC_Msk                   (0x7fUL)                  /*!< RTC SEC: SEC (Bitfield-Mask: 0x7f)                    */
+#define RTC_SEC_SEC                       RTC_SEC_SEC_Msk
+/* ==========================================================  MIN  ========================================================== */
+#define RTC_MIN_MIN_Pos                   (0UL)                     /*!< RTC MIN: MIN (Bit 0)                                  */
+#define RTC_MIN_MIN_Msk                   (0x7fUL)                  /*!< RTC MIN: MIN (Bitfield-Mask: 0x7f)                    */
+#define RTC_MIN_MIN                       RTC_MIN_MIN_Msk
+/* =========================================================  HOUR  ========================================================== */
+#define RTC_HOUR_HOUR_Pos                 (0UL)                     /*!< RTC HOUR: HOUR (Bit 0)                                */
+#define RTC_HOUR_HOUR_Msk                 (0x3fUL)                  /*!< RTC HOUR: HOUR (Bitfield-Mask: 0x3f)                  */
+#define RTC_HOUR_HOUR                     RTC_HOUR_HOUR_Msk
+/* ==========================================================  DAY  ========================================================== */
+#define RTC_DAY_DAY_Pos                   (0UL)                     /*!< RTC DAY: DAY (Bit 0)                                  */
+#define RTC_DAY_DAY_Msk                   (0x3fUL)                  /*!< RTC DAY: DAY (Bitfield-Mask: 0x3f)                    */
+#define RTC_DAY_DAY                       RTC_DAY_DAY_Msk
+/* =========================================================  WEEK  ========================================================== */
+#define RTC_WEEK_WEEK_Pos                 (0UL)                     /*!< RTC WEEK: WEEK (Bit 0)                                */
+#define RTC_WEEK_WEEK_Msk                 (0x7UL)                   /*!< RTC WEEK: WEEK (Bitfield-Mask: 0x07)                  */
+#define RTC_WEEK_WEEK                     RTC_WEEK_WEEK_Msk
+/* ==========================================================  MON  ========================================================== */
+#define RTC_MON_MON_Pos                   (0UL)                     /*!< RTC MON: MON (Bit 0)                                  */
+#define RTC_MON_MON_Msk                   (0x1fUL)                  /*!< RTC MON: MON (Bitfield-Mask: 0x1f)                    */
+#define RTC_MON_MON                       RTC_MON_MON_Msk
+/* =========================================================  YEAR  ========================================================== */
+#define RTC_YEAR_YEAR_Pos                 (0UL)                     /*!< RTC YEAR: YEAR (Bit 0)                                */
+#define RTC_YEAR_YEAR_Msk                 (0xffUL)                  /*!< RTC YEAR: YEAR (Bitfield-Mask: 0xff)                  */
+#define RTC_YEAR_YEAR                     RTC_YEAR_YEAR_Msk
+/* =========================================================  TIME  ========================================================== */
+#define RTC_TIME_TIME_Pos                 (0UL)                     /*!< RTC TIME: TIME (Bit 0)                                */
+#define RTC_TIME_TIME_Msk                 (0x3fffffUL)              /*!< RTC TIME: TIME (Bitfield-Mask: 0x3fffff)              */
+#define RTC_TIME_TIME                     RTC_TIME_TIME_Msk
+/* ========================================================  WKUSEC  ========================================================= */
+#define RTC_WKUSEC_WKUSEC_Pos             (0UL)                     /*!< RTC WKUSEC: WKUSEC (Bit 0)                            */
+#define RTC_WKUSEC_WKUSEC_Msk             (0x3fUL)                  /*!< RTC WKUSEC: WKUSEC (Bitfield-Mask: 0x3f)              */
+#define RTC_WKUSEC_WKUSEC                 RTC_WKUSEC_WKUSEC_Msk
+/* ========================================================  WKUMIN  ========================================================= */
+#define RTC_WKUMIN_WKUMIN_Pos             (0UL)                     /*!< RTC WKUMIN: WKUMIN (Bit 0)                            */
+#define RTC_WKUMIN_WKUMIN_Msk             (0x3fUL)                  /*!< RTC WKUMIN: WKUMIN (Bitfield-Mask: 0x3f)              */
+#define RTC_WKUMIN_WKUMIN                 RTC_WKUMIN_WKUMIN_Msk
+/* ========================================================  WKUHOUR  ======================================================== */
+#define RTC_WKUHOUR_WKUHOUR_Pos           (0UL)                     /*!< RTC WKUHOUR: WKUHOUR (Bit 0)                          */
+#define RTC_WKUHOUR_WKUHOUR_Msk           (0x1fUL)                  /*!< RTC WKUHOUR: WKUHOUR (Bitfield-Mask: 0x1f)            */
+#define RTC_WKUHOUR_WKUHOUR               RTC_WKUHOUR_WKUHOUR_Msk
+/* ========================================================  WKUCNT  ========================================================= */
+#define RTC_WKUCNT_CNTSEL_Pos             (24UL)                    /*!< RTC WKUCNT: CNTSEL (Bit 24)                           */
+#define RTC_WKUCNT_CNTSEL_Msk             (0x3000000UL)             /*!< RTC WKUCNT: CNTSEL (Bitfield-Mask: 0x03)              */
+#define RTC_WKUCNT_CNTSEL                 RTC_WKUCNT_CNTSEL_Msk
+#define RTC_WKUCNT_WKUCNT_Pos             (0UL)                     /*!< RTC WKUCNT: WKUCNT (Bit 0)                            */
+#define RTC_WKUCNT_WKUCNT_Msk             (0xffffffUL)              /*!< RTC WKUCNT: WKUCNT (Bitfield-Mask: 0xffffff)          */
+#define RTC_WKUCNT_WKUCNT                 RTC_WKUCNT_WKUCNT_Msk
+/* ==========================================================  CAL  ========================================================== */
+#define RTC_CAL_CAL_Pos                   (0UL)                     /*!< RTC CAL: CAL (Bit 0)                                  */
+#define RTC_CAL_CAL_Msk                   (0x3fffUL)                /*!< RTC CAL: CAL (Bitfield-Mask: 0x3fff)                  */
+#define RTC_CAL_CAL                       RTC_CAL_CAL_Msk
+/* ==========================================================  DIV  ========================================================== */
+#define RTC_DIV_RTCDIV_Pos                (0UL)                     /*!< RTC DIV: RTCDIV (Bit 0)                               */
+#define RTC_DIV_RTCDIV_Msk                (0x3ffffffUL)             /*!< RTC DIV: RTCDIV (Bitfield-Mask: 0x3ffffff)            */
+#define RTC_DIV_RTCDIV                    RTC_DIV_RTCDIV_Msk
+/* ==========================================================  CTL  ========================================================== */
+#define RTC_CTL_RTCPLLCLKSEL_Pos          (4UL)                     /*!< RTC CTL: RTCPLLCLKSEL (Bit 4)                         */
+#define RTC_CTL_RTCPLLCLKSEL_Msk          (0x10UL)                  /*!< RTC CTL: RTCPLLCLKSEL (Bitfield-Mask: 0x01)           */
+#define RTC_CTL_RTCPLLCLKSEL              RTC_CTL_RTCPLLCLKSEL_Msk
+#define RTC_CTL_RTCPLLOE_Pos              (2UL)                     /*!< RTC CTL: RTCPLLOE (Bit 2)                             */
+#define RTC_CTL_RTCPLLOE_Msk              (0x4UL)                   /*!< RTC CTL: RTCPLLOE (Bitfield-Mask: 0x01)               */
+#define RTC_CTL_RTCPLLOE                  RTC_CTL_RTCPLLOE_Msk
+/* ==========================================================  ITV  ========================================================== */
+#define RTC_ITV_ITV_Pos                   (0UL)                     /*!< RTC ITV: ITV (Bit 0)                                  */
+#define RTC_ITV_ITV_Msk                   (0x7UL)                   /*!< RTC ITV: ITV (Bitfield-Mask: 0x07)                    */
+#define RTC_ITV_ITV                       RTC_ITV_ITV_Msk
+/* =========================================================  SITV  ========================================================== */
+#define RTC_SITV_SITVEN_Pos               (6UL)                     /*!< RTC SITV: SITVEN (Bit 6)                              */
+#define RTC_SITV_SITVEN_Msk               (0x40UL)                  /*!< RTC SITV: SITVEN (Bitfield-Mask: 0x01)                */
+#define RTC_SITV_SITVEN                   RTC_SITV_SITVEN_Msk
+#define RTC_SITV_SITV_Pos                 (0UL)                     /*!< RTC SITV: SITV (Bit 0)                                */
+#define RTC_SITV_SITV_Msk                 (0x3fUL)                  /*!< RTC SITV: SITV (Bitfield-Mask: 0x3f)                  */
+#define RTC_SITV_SITV                     RTC_SITV_SITV_Msk
+/* ==========================================================  PWD  ========================================================== */
+#define RTC_PWD_PWDEN_Pos                 (0UL)                     /*!< RTC PWD: PWDEN (Bit 0)                                */
+#define RTC_PWD_PWDEN_Msk                 (0x1UL)                   /*!< RTC PWD: PWDEN (Bitfield-Mask: 0x01)                  */
+#define RTC_PWD_PWDEN                     RTC_PWD_PWDEN_Msk
+/* ==========================================================  CE  =========================================================== */
+#define RTC_CE_BSY_Pos                    (1UL)                     /*!< RTC CE: BSY (Bit 1)                                   */
+#define RTC_CE_BSY_Msk                    (0x2UL)                   /*!< RTC CE: BSY (Bitfield-Mask: 0x01)                     */
+#define RTC_CE_BSY                        RTC_CE_BSY_Msk
+#define RTC_CE_CE_Pos                     (0UL)                     /*!< RTC CE: CE (Bit 0)                                    */
+#define RTC_CE_CE_Msk                     (0x1UL)                   /*!< RTC CE: CE (Bitfield-Mask: 0x01)                      */
+#define RTC_CE_CE                         RTC_CE_CE_Msk
+/* =========================================================  LOAD  ========================================================== */
+#define RTC_LOAD_LOAD_Pos                 (0UL)                     /*!< RTC LOAD: LOAD (Bit 0)                                */
+#define RTC_LOAD_LOAD_Msk                 (0xffffffffUL)            /*!< RTC LOAD: LOAD (Bitfield-Mask: 0xffffffff)            */
+#define RTC_LOAD_LOAD                     RTC_LOAD_LOAD_Msk
+/* ========================================================  INTSTS  ========================================================= */
+#define RTC_INTSTS_INTSTS10_Pos           (10UL)                    /*!< RTC INTSTS: INTSTS10 (Bit 10)                         */
+#define RTC_INTSTS_INTSTS10_Msk           (0x400UL)                 /*!< RTC INTSTS: INTSTS10 (Bitfield-Mask: 0x01)            */
+#define RTC_INTSTS_INTSTS10               RTC_INTSTS_INTSTS10_Msk
+#define RTC_INTSTS_INTSTS8_Pos            (8UL)                     /*!< RTC INTSTS: INTSTS8 (Bit 8)                           */
+#define RTC_INTSTS_INTSTS8_Msk            (0x100UL)                 /*!< RTC INTSTS: INTSTS8 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS8                RTC_INTSTS_INTSTS8_Msk
+#define RTC_INTSTS_INTSTS6_Pos            (6UL)                     /*!< RTC INTSTS: INTSTS6 (Bit 6)                           */
+#define RTC_INTSTS_INTSTS6_Msk            (0x40UL)                  /*!< RTC INTSTS: INTSTS6 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS6                RTC_INTSTS_INTSTS6_Msk
+#define RTC_INTSTS_INTSTS5_Pos            (5UL)                     /*!< RTC INTSTS: INTSTS5 (Bit 5)                           */
+#define RTC_INTSTS_INTSTS5_Msk            (0x20UL)                  /*!< RTC INTSTS: INTSTS5 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS5                RTC_INTSTS_INTSTS5_Msk
+#define RTC_INTSTS_INTSTS4_Pos            (4UL)                     /*!< RTC INTSTS: INTSTS4 (Bit 4)                           */
+#define RTC_INTSTS_INTSTS4_Msk            (0x10UL)                  /*!< RTC INTSTS: INTSTS4 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS4                RTC_INTSTS_INTSTS4_Msk
+#define RTC_INTSTS_INTSTS3_Pos            (3UL)                     /*!< RTC INTSTS: INTSTS3 (Bit 3)                           */
+#define RTC_INTSTS_INTSTS3_Msk            (0x8UL)                   /*!< RTC INTSTS: INTSTS3 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS3                RTC_INTSTS_INTSTS3_Msk
+#define RTC_INTSTS_INTSTS2_Pos            (2UL)                     /*!< RTC INTSTS: INTSTS2 (Bit 2)                           */
+#define RTC_INTSTS_INTSTS2_Msk            (0x4UL)                   /*!< RTC INTSTS: INTSTS2 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS2                RTC_INTSTS_INTSTS2_Msk
+#define RTC_INTSTS_INTSTS1_Pos            (1UL)                     /*!< RTC INTSTS: INTSTS1 (Bit 1)                           */
+#define RTC_INTSTS_INTSTS1_Msk            (0x2UL)                   /*!< RTC INTSTS: INTSTS1 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS1                RTC_INTSTS_INTSTS1_Msk
+#define RTC_INTSTS_INTSTS0_Pos            (0UL)                     /*!< RTC INTSTS: INTSTS0 (Bit 0)                           */
+#define RTC_INTSTS_INTSTS0_Msk            (0x1UL)                   /*!< RTC INTSTS: INTSTS0 (Bitfield-Mask: 0x01)             */
+#define RTC_INTSTS_INTSTS0                RTC_INTSTS_INTSTS0_Msk
+/* =========================================================  INTEN  ========================================================= */
+#define RTC_INTEN_INTEN10_Pos             (10UL)                    /*!< RTC INTEN: INTEN10 (Bit 10)                           */
+#define RTC_INTEN_INTEN10_Msk             (0x400UL)                 /*!< RTC INTEN: INTEN10 (Bitfield-Mask: 0x01)              */
+#define RTC_INTEN_INTEN10                 RTC_INTEN_INTEN10_Msk
+#define RTC_INTEN_INTEN8_Pos              (8UL)                     /*!< RTC INTEN: INTEN8 (Bit 8)                             */
+#define RTC_INTEN_INTEN8_Msk              (0x100UL)                 /*!< RTC INTEN: INTEN8 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN8                  RTC_INTEN_INTEN8_Msk
+#define RTC_INTEN_INTEN6_Pos              (6UL)                     /*!< RTC INTEN: INTEN6 (Bit 6)                             */
+#define RTC_INTEN_INTEN6_Msk              (0x40UL)                  /*!< RTC INTEN: INTEN6 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN6                  RTC_INTEN_INTEN6_Msk
+#define RTC_INTEN_INTEN5_Pos              (5UL)                     /*!< RTC INTEN: INTEN5 (Bit 5)                             */
+#define RTC_INTEN_INTEN5_Msk              (0x20UL)                  /*!< RTC INTEN: INTEN5 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN5                  RTC_INTEN_INTEN5_Msk
+#define RTC_INTEN_INTEN4_Pos              (4UL)                     /*!< RTC INTEN: INTEN4 (Bit 4)                             */
+#define RTC_INTEN_INTEN4_Msk              (0x10UL)                  /*!< RTC INTEN: INTEN4 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN4                  RTC_INTEN_INTEN4_Msk
+#define RTC_INTEN_INTRN3_Pos              (3UL)                     /*!< RTC INTEN: INTRN3 (Bit 3)                             */
+#define RTC_INTEN_INTRN3_Msk              (0x8UL)                   /*!< RTC INTEN: INTRN3 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTRN3                  RTC_INTEN_INTRN3_Msk
+#define RTC_INTEN_INTEN2_Pos              (2UL)                     /*!< RTC INTEN: INTEN2 (Bit 2)                             */
+#define RTC_INTEN_INTEN2_Msk              (0x4UL)                   /*!< RTC INTEN: INTEN2 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN2                  RTC_INTEN_INTEN2_Msk
+#define RTC_INTEN_INTEN1_Pos              (1UL)                     /*!< RTC INTEN: INTEN1 (Bit 1)                             */
+#define RTC_INTEN_INTEN1_Msk              (0x2UL)                   /*!< RTC INTEN: INTEN1 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN1                  RTC_INTEN_INTEN1_Msk
+#define RTC_INTEN_INTEN0_Pos              (0UL)                     /*!< RTC INTEN: INTEN0 (Bit 0)                             */
+#define RTC_INTEN_INTEN0_Msk              (0x1UL)                   /*!< RTC INTEN: INTEN0 (Bitfield-Mask: 0x01)               */
+#define RTC_INTEN_INTEN0                  RTC_INTEN_INTEN0_Msk
+/* =========================================================  PSCA  ========================================================== */
+#define RTC_PSCA_PSCA_Pos                 (0UL)                     /*!< RTC PSCA: PSCA (Bit 0)                                */
+#define RTC_PSCA_PSCA_Msk                 (0x3UL)                   /*!< RTC PSCA: PSCA (Bitfield-Mask: 0x03)                  */
+#define RTC_PSCA_PSCA                     RTC_PSCA_PSCA_Msk
+/* =========================================================  ACTI  ========================================================== */
+#define RTC_ACTI_ACTI_Pos                 (0UL)                     /*!< RTC ACTI: ACTI (Bit 0)                                */
+#define RTC_ACTI_ACTI_Msk                 (0x3fffUL)                /*!< RTC ACTI: ACTI (Bitfield-Mask: 0x3fff)                */
+#define RTC_ACTI_ACTI                     RTC_ACTI_ACTI_Msk
+/* ========================================================  ACF200  ========================================================= */
+#define RTC_ACF200_F200_Pos               (0UL)                     /*!< RTC ACF200: F200 (Bit 0)                              */
+#define RTC_ACF200_F200_Msk               (0x3ffffffUL)             /*!< RTC ACF200: F200 (Bitfield-Mask: 0x3ffffff)           */
+#define RTC_ACF200_F200                   RTC_ACF200_F200_Msk
+/* =========================================================  ACP0  ========================================================== */
+#define RTC_ACP0_P0_Pos                   (0UL)                     /*!< RTC ACP0: P0 (Bit 0)                                  */
+#define RTC_ACP0_P0_Msk                   (0xffffUL)                /*!< RTC ACP0: P0 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP0_P0                       RTC_ACP0_P0_Msk
+/* =========================================================  ACP1  ========================================================== */
+#define RTC_ACP1_P1_Pos                   (0UL)                     /*!< RTC ACP1: P1 (Bit 0)                                  */
+#define RTC_ACP1_P1_Msk                   (0xffffUL)                /*!< RTC ACP1: P1 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP1_P1                       RTC_ACP1_P1_Msk
+/* =========================================================  ACP2  ========================================================== */
+#define RTC_ACP2_P2_Pos                   (0UL)                     /*!< RTC ACP2: P2 (Bit 0)                                  */
+#define RTC_ACP2_P2_Msk                   (0xffffffffUL)            /*!< RTC ACP2: P2 (Bitfield-Mask: 0xffffffff)              */
+#define RTC_ACP2_P2                       RTC_ACP2_P2_Msk
+/* =========================================================  ACP3  ========================================================== */
+#define RTC_ACP3_P3_Pos                   (0UL)                     /*!< RTC ACP3: P3 (Bit 0)                                  */
+#define RTC_ACP3_P3_Msk                   (0xffffffffUL)            /*!< RTC ACP3: P3 (Bitfield-Mask: 0xffffffff)              */
+#define RTC_ACP3_P3                       RTC_ACP3_P3_Msk
+/* =========================================================  ACP4  ========================================================== */
+#define RTC_ACP4_P4_Pos                   (0UL)                     /*!< RTC ACP4: P4 (Bit 0)                                  */
+#define RTC_ACP4_P4_Msk                   (0xffffUL)                /*!< RTC ACP4: P4 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP4_P4                       RTC_ACP4_P4_Msk
+/* =========================================================  ACP5  ========================================================== */
+#define RTC_ACP5_P5_Pos                   (0UL)                     /*!< RTC ACP5: P5 (Bit 0)                                  */
+#define RTC_ACP5_P5_Msk                   (0xffffUL)                /*!< RTC ACP5: P5 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP5_P5                       RTC_ACP5_P5_Msk
+/* =========================================================  ACP6  ========================================================== */
+#define RTC_ACP6_P6_Pos                   (0UL)                     /*!< RTC ACP6: P6 (Bit 0)                                  */
+#define RTC_ACP6_P6_Msk                   (0xffffUL)                /*!< RTC ACP6: P6 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP6_P6                       RTC_ACP6_P6_Msk
+/* =========================================================  ACP7  ========================================================== */
+#define RTC_ACP7_P7_Pos                   (0UL)                     /*!< RTC ACP7: P7 (Bit 0)                                  */
+#define RTC_ACP7_P7_Msk                   (0xffffUL)                /*!< RTC ACP7: P7 (Bitfield-Mask: 0xffff)                  */
+#define RTC_ACP7_P7                       RTC_ACP7_P7_Msk
+/* ==========================================================  ACK  ========================================================== */
+#define RTC_ACK_K_Pos                     (0UL)                     /*!< RTC ACK: K (Bit 0)                                    */
+#define RTC_ACK_K_Msk                     (0xffffUL)                /*!< RTC ACK: K (Bitfield-Mask: 0xffff)                    */
+#define RTC_ACK_K                         RTC_ACK_K_Msk
+/* ========================================================  WKUCNTR  ======================================================== */
+#define RTC_WKUCNTR_WKUCNTR_Pos           (0UL)                     /*!< RTC WKUCNTR: WKUCNTR (Bit 0)                          */
+#define RTC_WKUCNTR_WKUCNTR_Msk           (0xffffffUL)              /*!< RTC WKUCNTR: WKUCNTR (Bitfield-Mask: 0xffffff)        */
+#define RTC_WKUCNTR_WKUCNTR               RTC_WKUCNTR_WKUCNTR_Msk
+/* ========================================================  ACKTEMP  ======================================================== */
+#define RTC_ACKTEMP_KTEMP4_Pos            (24UL)                    /*!< RTC ACKTEMP: KTEMP4 (Bit 24)                          */
+#define RTC_ACKTEMP_KTEMP4_Msk            (0xff000000UL)            /*!< RTC ACKTEMP: KTEMP4 (Bitfield-Mask: 0xff)             */
+#define RTC_ACKTEMP_KTEMP4                RTC_ACKTEMP_KTEMP4_Msk
+#define RTC_ACKTEMP_KTEMP3_Pos            (16UL)                    /*!< RTC ACKTEMP: KTEMP3 (Bit 16)                          */
+#define RTC_ACKTEMP_KTEMP3_Msk            (0xff0000UL)              /*!< RTC ACKTEMP: KTEMP3 (Bitfield-Mask: 0xff)             */
+#define RTC_ACKTEMP_KTEMP3                RTC_ACKTEMP_KTEMP3_Msk
+#define RTC_ACKTEMP_KTEMP2_Pos            (8UL)                     /*!< RTC ACKTEMP: KTEMP2 (Bit 8)                           */
+#define RTC_ACKTEMP_KTEMP2_Msk            (0xff00UL)                /*!< RTC ACKTEMP: KTEMP2 (Bitfield-Mask: 0xff)             */
+#define RTC_ACKTEMP_KTEMP2                RTC_ACKTEMP_KTEMP2_Msk
+#define RTC_ACKTEMP_KTEMP1_Pos            (0UL)                     /*!< RTC ACKTEMP: KTEMP1 (Bit 0)                           */
+#define RTC_ACKTEMP_KTEMP1_Msk            (0xffUL)                  /*!< RTC ACKTEMP: KTEMP1 (Bitfield-Mask: 0xff)             */
+#define RTC_ACKTEMP_KTEMP1                RTC_ACKTEMP_KTEMP1_Msk
+/* =======================================================  ALARMTIME  ======================================================= */
+#define RTC_ALARMTIME_ALARMTIME_Pos       (0UL)                     /*!< RTC ALARMTIME: ALARMTIME (Bit 0)                      */
+#define RTC_ALARMTIME_ALARMTIME_Msk       (0x3fffffUL)              /*!< RTC ALARMTIME: ALARMTIME (Bitfield-Mask: 0x3fffff)    */
+#define RTC_ALARMTIME_ALARMTIME           RTC_ALARMTIME_ALARMTIME_Msk
+/* =======================================================  ALARMSEC  ======================================================== */
+#define RTC_ALARMSEC_ALARMSEC_Pos         (0UL)                     /*!< RTC ALARMSEC: ALARMSEC (Bit 0)                        */
+#define RTC_ALARMSEC_ALARMSEC_Msk         (0x7fUL)                  /*!< RTC ALARMSEC: ALARMSEC (Bitfield-Mask: 0x7f)          */
+#define RTC_ALARMSEC_ALARMSEC             RTC_ALARMSEC_ALARMSEC_Msk
+/* =======================================================  ALARMMIN  ======================================================== */
+#define RTC_ALARMMIN_ALARMMIN_Pos         (0UL)                     /*!< RTC ALARMMIN: ALARMMIN (Bit 0)                        */
+#define RTC_ALARMMIN_ALARMMIN_Msk         (0x7fUL)                  /*!< RTC ALARMMIN: ALARMMIN (Bitfield-Mask: 0x7f)          */
+#define RTC_ALARMMIN_ALARMMIN             RTC_ALARMMIN_ALARMMIN_Msk
+/* =======================================================  ALARMHOUR  ======================================================= */
+#define RTC_ALARMHOUR_ALARMHOUR_Pos       (0UL)                     /*!< RTC ALARMHOUR: ALARMHOUR (Bit 0)                      */
+#define RTC_ALARMHOUR_ALARMHOUR_Msk       (0x3fUL)                  /*!< RTC ALARMHOUR: ALARMHOUR (Bitfield-Mask: 0x3f)        */
+#define RTC_ALARMHOUR_ALARMHOUR           RTC_ALARMHOUR_ALARMHOUR_Msk
+/* =======================================================  ALARMCTL  ======================================================== */
+#define RTC_ALARMCTL_TIME_CNT_EN_Pos      (2UL)                     /*!< RTC ALARMCTL: TIME_CNT_EN (Bit 2)                     */
+#define RTC_ALARMCTL_TIME_CNT_EN_Msk      (0x4UL)                   /*!< RTC ALARMCTL: TIME_CNT_EN (Bitfield-Mask: 0x01)       */
+#define RTC_ALARMCTL_TIME_CNT_EN          RTC_ALARMCTL_TIME_CNT_EN_Msk
+#define RTC_ALARMCTL_ALARM_INACCURATE_Pos (1UL)                     /*!< RTC ALARMCTL: ALARM_INACCURATE (Bit 1)                */
+#define RTC_ALARMCTL_ALARM_INACCURATE_Msk (0x2UL)                   /*!< RTC ALARMCTL: ALARM_INACCURATE (Bitfield-Mask: 0x01)  */
+#define RTC_ALARMCTL_ALARM_INACCURATE     RTC_ALARMCTL_ALARM_INACCURATE_Msk
+#define RTC_ALARMCTL_ALARM_EN_Pos         (0UL)                     /*!< RTC ALARMCTL: ALARM_EN (Bit 0)                        */
+#define RTC_ALARMCTL_ALARM_EN_Msk         (0x1UL)                   /*!< RTC ALARMCTL: ALARM_EN (Bitfield-Mask: 0x01)          */
+#define RTC_ALARMCTL_ALARM_EN             RTC_ALARMCTL_ALARM_EN_Msk
+/* =======================================================  ADCUCALK  ======================================================== */
+#define RTC_ADCUCALK_UCAL_K3_Pos          (16UL)                    /*!< RTC ADCUCALK: UCAL_K3 (Bit 16)                        */
+#define RTC_ADCUCALK_UCAL_K3_Msk          (0xffff0000UL)            /*!< RTC ADCUCALK: UCAL_K3 (Bitfield-Mask: 0xffff)         */
+#define RTC_ADCUCALK_UCAL_K3              RTC_ADCUCALK_UCAL_K3_Msk
+#define RTC_ADCUCALK_UCAL_K1_Pos          (0UL)                     /*!< RTC ADCUCALK: UCAL_K1 (Bit 0)                         */
+#define RTC_ADCUCALK_UCAL_K1_Msk          (0xffffUL)                /*!< RTC ADCUCALK: UCAL_K1 (Bitfield-Mask: 0xffff)         */
+#define RTC_ADCUCALK_UCAL_K1              RTC_ADCUCALK_UCAL_K1_Msk
+/* =======================================================  ADCMACTL  ======================================================== */
+#define RTC_ADCMACTL_ADCSREF_CAL_Pos      (24UL)                    /*!< RTC ADCMACTL: ADCSREF_CAL (Bit 24)                    */
+#define RTC_ADCMACTL_ADCSREF_CAL_Msk      (0x7000000UL)             /*!< RTC ADCMACTL: ADCSREF_CAL (Bitfield-Mask: 0x07)       */
+#define RTC_ADCMACTL_ADCSREF_CAL          RTC_ADCMACTL_ADCSREF_CAL_Msk
+#define RTC_ADCMACTL_SKIP_SAMPLE_Pos      (20UL)                    /*!< RTC ADCMACTL: SKIP_SAMPLE (Bit 20)                    */
+#define RTC_ADCMACTL_SKIP_SAMPLE_Msk      (0xf00000UL)              /*!< RTC ADCMACTL: SKIP_SAMPLE (Bitfield-Mask: 0x0f)       */
+#define RTC_ADCMACTL_SKIP_SAMPLE          RTC_ADCMACTL_SKIP_SAMPLE_Msk
+#define RTC_ADCMACTL_AVERAGE_SAMPLE_Pos   (16UL)                    /*!< RTC ADCMACTL: AVERAGE_SAMPLE (Bit 16)                 */
+#define RTC_ADCMACTL_AVERAGE_SAMPLE_Msk   (0x70000UL)               /*!< RTC ADCMACTL: AVERAGE_SAMPLE (Bitfield-Mask: 0x07)    */
+#define RTC_ADCMACTL_AVERAGE_SAMPLE       RTC_ADCMACTL_AVERAGE_SAMPLE_Msk
+#define RTC_ADCMACTL_AVERAGE_CHx_Pos      (0UL)                     /*!< RTC ADCMACTL: AVERAGE_CHx (Bit 0)                     */
+#define RTC_ADCMACTL_AVERAGE_CHx_Msk      (0xffffUL)                /*!< RTC ADCMACTL: AVERAGE_CHx (Bitfield-Mask: 0xffff)     */
+#define RTC_ADCMACTL_AVERAGE_CHx          RTC_ADCMACTL_AVERAGE_CHx_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            SPI                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  CTRL  ========================================================== */
+#define SPI_CTRL_EN_Pos                   (15UL)                    /*!< SPI CTRL: EN (Bit 15)                                 */
+#define SPI_CTRL_EN_Msk                   (0x8000UL)                /*!< SPI CTRL: EN (Bitfield-Mask: 0x01)                    */
+#define SPI_CTRL_EN                       SPI_CTRL_EN_Msk
+#define SPI_CTRL_LSBF_Pos                 (12UL)                    /*!< SPI CTRL: LSBF (Bit 12)                               */
+#define SPI_CTRL_LSBF_Msk                 (0x1000UL)                /*!< SPI CTRL: LSBF (Bitfield-Mask: 0x01)                  */
+#define SPI_CTRL_LSBF                     SPI_CTRL_LSBF_Msk
+#define SPI_CTRL_RST_Pos                  (11UL)                    /*!< SPI CTRL: RST (Bit 11)                                */
+#define SPI_CTRL_RST_Msk                  (0x800UL)                 /*!< SPI CTRL: RST (Bitfield-Mask: 0x01)                   */
+#define SPI_CTRL_RST                      SPI_CTRL_RST_Msk
+#define SPI_CTRL_CSGPIO_Pos               (10UL)                    /*!< SPI CTRL: CSGPIO (Bit 10)                             */
+#define SPI_CTRL_CSGPIO_Msk               (0x400UL)                 /*!< SPI CTRL: CSGPIO (Bitfield-Mask: 0x01)                */
+#define SPI_CTRL_CSGPIO                   SPI_CTRL_CSGPIO_Msk
+#define SPI_CTRL_SWAP_Pos                 (9UL)                     /*!< SPI CTRL: SWAP (Bit 9)                                */
+#define SPI_CTRL_SWAP_Msk                 (0x200UL)                 /*!< SPI CTRL: SWAP (Bitfield-Mask: 0x01)                  */
+#define SPI_CTRL_SWAP                     SPI_CTRL_SWAP_Msk
+#define SPI_CTRL_MOD_Pos                  (8UL)                     /*!< SPI CTRL: MOD (Bit 8)                                 */
+#define SPI_CTRL_MOD_Msk                  (0x100UL)                 /*!< SPI CTRL: MOD (Bitfield-Mask: 0x01)                   */
+#define SPI_CTRL_MOD                      SPI_CTRL_MOD_Msk
+#define SPI_CTRL_SCKPHA_Pos               (5UL)                     /*!< SPI CTRL: SCKPHA (Bit 5)                              */
+#define SPI_CTRL_SCKPHA_Msk               (0x20UL)                  /*!< SPI CTRL: SCKPHA (Bitfield-Mask: 0x01)                */
+#define SPI_CTRL_SCKPHA                   SPI_CTRL_SCKPHA_Msk
+#define SPI_CTRL_SCKPOL_Pos               (4UL)                     /*!< SPI CTRL: SCKPOL (Bit 4)                              */
+#define SPI_CTRL_SCKPOL_Msk               (0x10UL)                  /*!< SPI CTRL: SCKPOL (Bitfield-Mask: 0x01)                */
+#define SPI_CTRL_SCKPOL                   SPI_CTRL_SCKPOL_Msk
+#define SPI_CTRL_SCKSEL_Pos               (0UL)                     /*!< SPI CTRL: SCKSEL (Bit 0)                              */
+#define SPI_CTRL_SCKSEL_Msk               (0x7UL)                   /*!< SPI CTRL: SCKSEL (Bitfield-Mask: 0x07)                */
+#define SPI_CTRL_SCKSEL                   SPI_CTRL_SCKSEL_Msk
+/* =========================================================  TXSTS  ========================================================= */
+#define SPI_TXSTS_TXIF_Pos                (15UL)                    /*!< SPI TXSTS: TXIF (Bit 15)                              */
+#define SPI_TXSTS_TXIF_Msk                (0x8000UL)                /*!< SPI TXSTS: TXIF (Bitfield-Mask: 0x01)                 */
+#define SPI_TXSTS_TXIF                    SPI_TXSTS_TXIF_Msk
+#define SPI_TXSTS_TXIEN_Pos               (14UL)                    /*!< SPI TXSTS: TXIEN (Bit 14)                             */
+#define SPI_TXSTS_TXIEN_Msk               (0x4000UL)                /*!< SPI TXSTS: TXIEN (Bitfield-Mask: 0x01)                */
+#define SPI_TXSTS_TXIEN                   SPI_TXSTS_TXIEN_Msk
+#define SPI_TXSTS_TXEMPTY_Pos             (9UL)                     /*!< SPI TXSTS: TXEMPTY (Bit 9)                            */
+#define SPI_TXSTS_TXEMPTY_Msk             (0x200UL)                 /*!< SPI TXSTS: TXEMPTY (Bitfield-Mask: 0x01)              */
+#define SPI_TXSTS_TXEMPTY                 SPI_TXSTS_TXEMPTY_Msk
+#define SPI_TXSTS_TXFUR_Pos               (8UL)                     /*!< SPI TXSTS: TXFUR (Bit 8)                              */
+#define SPI_TXSTS_TXFUR_Msk               (0x100UL)                 /*!< SPI TXSTS: TXFUR (Bitfield-Mask: 0x01)                */
+#define SPI_TXSTS_TXFUR                   SPI_TXSTS_TXFUR_Msk
+#define SPI_TXSTS_TXFLEV_Pos              (4UL)                     /*!< SPI TXSTS: TXFLEV (Bit 4)                             */
+#define SPI_TXSTS_TXFLEV_Msk              (0x70UL)                  /*!< SPI TXSTS: TXFLEV (Bitfield-Mask: 0x07)               */
+#define SPI_TXSTS_TXFLEV                  SPI_TXSTS_TXFLEV_Msk
+#define SPI_TXSTS_DMATXDONE_Pos           (3UL)                     /*!< SPI TXSTS: DMATXDONE (Bit 3)                          */
+#define SPI_TXSTS_DMATXDONE_Msk           (0x8UL)                   /*!< SPI TXSTS: DMATXDONE (Bitfield-Mask: 0x01)            */
+#define SPI_TXSTS_DMATXDONE               SPI_TXSTS_DMATXDONE_Msk
+#define SPI_TXSTS_TXFFLAG_Pos             (0UL)                     /*!< SPI TXSTS: TXFFLAG (Bit 0)                            */
+#define SPI_TXSTS_TXFFLAG_Msk             (0x7UL)                   /*!< SPI TXSTS: TXFFLAG (Bitfield-Mask: 0x07)              */
+#define SPI_TXSTS_TXFFLAG                 SPI_TXSTS_TXFFLAG_Msk
+/* =========================================================  TXDAT  ========================================================= */
+#define SPI_TXDAT_TXD_Pos                 (0UL)                     /*!< SPI TXDAT: TXD (Bit 0)                                */
+#define SPI_TXDAT_TXD_Msk                 (0xffUL)                  /*!< SPI TXDAT: TXD (Bitfield-Mask: 0xff)                  */
+#define SPI_TXDAT_TXD                     SPI_TXDAT_TXD_Msk
+/* =========================================================  RXSTS  ========================================================= */
+#define SPI_RXSTS_RXIF_Pos                (15UL)                    /*!< SPI RXSTS: RXIF (Bit 15)                              */
+#define SPI_RXSTS_RXIF_Msk                (0x8000UL)                /*!< SPI RXSTS: RXIF (Bitfield-Mask: 0x01)                 */
+#define SPI_RXSTS_RXIF                    SPI_RXSTS_RXIF_Msk
+#define SPI_RXSTS_RXIEN_Pos               (14UL)                    /*!< SPI RXSTS: RXIEN (Bit 14)                             */
+#define SPI_RXSTS_RXIEN_Msk               (0x4000UL)                /*!< SPI RXSTS: RXIEN (Bitfield-Mask: 0x01)                */
+#define SPI_RXSTS_RXIEN                   SPI_RXSTS_RXIEN_Msk
+#define SPI_RXSTS_RXFULL_Pos              (9UL)                     /*!< SPI RXSTS: RXFULL (Bit 9)                             */
+#define SPI_RXSTS_RXFULL_Msk              (0x200UL)                 /*!< SPI RXSTS: RXFULL (Bitfield-Mask: 0x01)               */
+#define SPI_RXSTS_RXFULL                  SPI_RXSTS_RXFULL_Msk
+#define SPI_RXSTS_RXFOV_Pos               (8UL)                     /*!< SPI RXSTS: RXFOV (Bit 8)                              */
+#define SPI_RXSTS_RXFOV_Msk               (0x100UL)                 /*!< SPI RXSTS: RXFOV (Bitfield-Mask: 0x01)                */
+#define SPI_RXSTS_RXFOV                   SPI_RXSTS_RXFOV_Msk
+#define SPI_RXSTS_RXFLEV_Pos              (4UL)                     /*!< SPI RXSTS: RXFLEV (Bit 4)                             */
+#define SPI_RXSTS_RXFLEV_Msk              (0x70UL)                  /*!< SPI RXSTS: RXFLEV (Bitfield-Mask: 0x07)               */
+#define SPI_RXSTS_RXFLEV                  SPI_RXSTS_RXFLEV_Msk
+#define SPI_RXSTS_RXFFLAG_Pos             (0UL)                     /*!< SPI RXSTS: RXFFLAG (Bit 0)                            */
+#define SPI_RXSTS_RXFFLAG_Msk             (0x7UL)                   /*!< SPI RXSTS: RXFFLAG (Bitfield-Mask: 0x07)              */
+#define SPI_RXSTS_RXFFLAG                 SPI_RXSTS_RXFFLAG_Msk
+/* =========================================================  RXDAT  ========================================================= */
+#define SPI_RXDAT_RXD_Pos                 (0UL)                     /*!< SPI RXDAT: RXD (Bit 0)                                */
+#define SPI_RXDAT_RXD_Msk                 (0xffUL)                  /*!< SPI RXDAT: RXD (Bitfield-Mask: 0xff)                  */
+#define SPI_RXDAT_RXD                     SPI_RXDAT_RXD_Msk
+/* =========================================================  MISC  ========================================================== */
+#define SPI_MISC_OVER_Pos                 (9UL)                     /*!< SPI MISC: OVER (Bit 9)                                */
+#define SPI_MISC_OVER_Msk                 (0x200UL)                 /*!< SPI MISC: OVER (Bitfield-Mask: 0x01)                  */
+#define SPI_MISC_OVER                     SPI_MISC_OVER_Msk
+#define SPI_MISC_SMART_Pos                (8UL)                     /*!< SPI MISC: SMART (Bit 8)                               */
+#define SPI_MISC_SMART_Msk                (0x100UL)                 /*!< SPI MISC: SMART (Bitfield-Mask: 0x01)                 */
+#define SPI_MISC_SMART                    SPI_MISC_SMART_Msk
+#define SPI_MISC_BSY_Pos                  (4UL)                     /*!< SPI MISC: BSY (Bit 4)                                 */
+#define SPI_MISC_BSY_Msk                  (0x10UL)                  /*!< SPI MISC: BSY (Bitfield-Mask: 0x01)                   */
+#define SPI_MISC_BSY                      SPI_MISC_BSY_Msk
+#define SPI_MISC_RFF_Pos                  (3UL)                     /*!< SPI MISC: RFF (Bit 3)                                 */
+#define SPI_MISC_RFF_Msk                  (0x8UL)                   /*!< SPI MISC: RFF (Bitfield-Mask: 0x01)                   */
+#define SPI_MISC_RFF                      SPI_MISC_RFF_Msk
+#define SPI_MISC_RNE_Pos                  (2UL)                     /*!< SPI MISC: RNE (Bit 2)                                 */
+#define SPI_MISC_RNE_Msk                  (0x4UL)                   /*!< SPI MISC: RNE (Bitfield-Mask: 0x01)                   */
+#define SPI_MISC_RNE                      SPI_MISC_RNE_Msk
+#define SPI_MISC_TNF_Pos                  (1UL)                     /*!< SPI MISC: TNF (Bit 1)                                 */
+#define SPI_MISC_TNF_Msk                  (0x2UL)                   /*!< SPI MISC: TNF (Bitfield-Mask: 0x01)                   */
+#define SPI_MISC_TNF                      SPI_MISC_TNF_Msk
+#define SPI_MISC_TFE_Pos                  (0UL)                     /*!< SPI MISC: TFE (Bit 0)                                 */
+#define SPI_MISC_TFE_Msk                  (0x1UL)                   /*!< SPI MISC: TFE (Bitfield-Mask: 0x01)                   */
+#define SPI_MISC_TFE                      SPI_MISC_TFE_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                            TMR                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  CTRL  ========================================================== */
+#define TMR_CTRL_INTEN_Pos                (3UL)                     /*!< TMR CTRL: INTEN (Bit 3)                               */
+#define TMR_CTRL_INTEN_Msk                (0x8UL)                   /*!< TMR CTRL: INTEN (Bitfield-Mask: 0x01)                 */
+#define TMR_CTRL_INTEN                    TMR_CTRL_INTEN_Msk
+#define TMR_CTRL_EXTCLK_Pos               (2UL)                     /*!< TMR CTRL: EXTCLK (Bit 2)                              */
+#define TMR_CTRL_EXTCLK_Msk               (0x4UL)                   /*!< TMR CTRL: EXTCLK (Bitfield-Mask: 0x01)                */
+#define TMR_CTRL_EXTCLK                   TMR_CTRL_EXTCLK_Msk
+#define TMR_CTRL_EXTEN_Pos                (1UL)                     /*!< TMR CTRL: EXTEN (Bit 1)                               */
+#define TMR_CTRL_EXTEN_Msk                (0x2UL)                   /*!< TMR CTRL: EXTEN (Bitfield-Mask: 0x01)                 */
+#define TMR_CTRL_EXTEN                    TMR_CTRL_EXTEN_Msk
+#define TMR_CTRL_EN_Pos                   (0UL)                     /*!< TMR CTRL: EN (Bit 0)                                  */
+#define TMR_CTRL_EN_Msk                   (0x1UL)                   /*!< TMR CTRL: EN (Bitfield-Mask: 0x01)                    */
+#define TMR_CTRL_EN                       TMR_CTRL_EN_Msk
+/* =========================================================  VALUE  ========================================================= */
+#define TMR_VALUE_VALUE_Pos               (0UL)                     /*!< TMR VALUE: VALUE (Bit 0)                              */
+#define TMR_VALUE_VALUE_Msk               (0xffffffffUL)            /*!< TMR VALUE: VALUE (Bitfield-Mask: 0xffffffff)          */
+#define TMR_VALUE_VALUE                   TMR_VALUE_VALUE_Msk
+/* ========================================================  RELOAD  ========================================================= */
+#define TMR_RELOAD_RELOAD_Pos             (0UL)                     /*!< TMR RELOAD: RELOAD (Bit 0)                            */
+#define TMR_RELOAD_RELOAD_Msk             (0xffffffffUL)            /*!< TMR RELOAD: RELOAD (Bitfield-Mask: 0xffffffff)        */
+#define TMR_RELOAD_RELOAD                 TMR_RELOAD_RELOAD_Msk
+/* ========================================================  INTSTS  ========================================================= */
+#define TMR_INTSTS_INTSTS_Pos             (0UL)                     /*!< TMR INTSTS: INTSTS (Bit 0)                            */
+#define TMR_INTSTS_INTSTS_Msk             (0x1UL)                   /*!< TMR INTSTS: INTSTS (Bitfield-Mask: 0x01)              */
+#define TMR_INTSTS_INTSTS                 TMR_INTSTS_INTSTS_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           UART                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  DATA  ========================================================== */
+#define UART_DATA_DATA_Pos                (0UL)                     /*!< UART DATA: DATA (Bit 0)                               */
+#define UART_DATA_DATA_Msk                (0xffUL)                  /*!< UART DATA: DATA (Bitfield-Mask: 0xff)                 */
+#define UART_DATA_DATA                    UART_DATA_DATA_Msk
+/* =========================================================  STATE  ========================================================= */
+#define UART_STATE_DMATXDONE_Pos          (7UL)                     /*!< UART STATE: DMATXDONE (Bit 7)                         */
+#define UART_STATE_DMATXDONE_Msk          (0x80UL)                  /*!< UART STATE: DMATXDONE (Bitfield-Mask: 0x01)           */
+#define UART_STATE_DMATXDONE              UART_STATE_DMATXDONE_Msk
+#define UART_STATE_RXPSTS_Pos             (6UL)                     /*!< UART STATE: RXPSTS (Bit 6)                            */
+#define UART_STATE_RXPSTS_Msk             (0x40UL)                  /*!< UART STATE: RXPSTS (Bitfield-Mask: 0x01)              */
+#define UART_STATE_RXPSTS                 UART_STATE_RXPSTS_Msk
+#define UART_STATE_TXDONE_Pos             (5UL)                     /*!< UART STATE: TXDONE (Bit 5)                            */
+#define UART_STATE_TXDONE_Msk             (0x20UL)                  /*!< UART STATE: TXDONE (Bitfield-Mask: 0x01)              */
+#define UART_STATE_TXDONE                 UART_STATE_TXDONE_Msk
+#define UART_STATE_RXPE_Pos               (4UL)                     /*!< UART STATE: RXPE (Bit 4)                              */
+#define UART_STATE_RXPE_Msk               (0x10UL)                  /*!< UART STATE: RXPE (Bitfield-Mask: 0x01)                */
+#define UART_STATE_RXPE                   UART_STATE_RXPE_Msk
+#define UART_STATE_RXOV_Pos               (3UL)                     /*!< UART STATE: RXOV (Bit 3)                              */
+#define UART_STATE_RXOV_Msk               (0x8UL)                   /*!< UART STATE: RXOV (Bitfield-Mask: 0x01)                */
+#define UART_STATE_RXOV                   UART_STATE_RXOV_Msk
+#define UART_STATE_TXOV_Pos               (2UL)                     /*!< UART STATE: TXOV (Bit 2)                              */
+#define UART_STATE_TXOV_Msk               (0x4UL)                   /*!< UART STATE: TXOV (Bitfield-Mask: 0x01)                */
+#define UART_STATE_TXOV                   UART_STATE_TXOV_Msk
+#define UART_STATE_RXFULL_Pos             (1UL)                     /*!< UART STATE: RXFULL (Bit 1)                            */
+#define UART_STATE_RXFULL_Msk             (0x2UL)                   /*!< UART STATE: RXFULL (Bitfield-Mask: 0x01)              */
+#define UART_STATE_RXFULL                 UART_STATE_RXFULL_Msk
+/* =========================================================  CTRL  ========================================================== */
+#define UART_CTRL_TXDONEIE_Pos            (8UL)                     /*!< UART CTRL: TXDONEIE (Bit 8)                           */
+#define UART_CTRL_TXDONEIE_Msk            (0x100UL)                 /*!< UART CTRL: TXDONEIE (Bitfield-Mask: 0x01)             */
+#define UART_CTRL_TXDONEIE                UART_CTRL_TXDONEIE_Msk
+#define UART_CTRL_RXPEIE_Pos              (7UL)                     /*!< UART CTRL: RXPEIE (Bit 7)                             */
+#define UART_CTRL_RXPEIE_Msk              (0x80UL)                  /*!< UART CTRL: RXPEIE (Bitfield-Mask: 0x01)               */
+#define UART_CTRL_RXPEIE                  UART_CTRL_RXPEIE_Msk
+#define UART_CTRL_RXOVIE_Pos              (5UL)                     /*!< UART CTRL: RXOVIE (Bit 5)                             */
+#define UART_CTRL_RXOVIE_Msk              (0x20UL)                  /*!< UART CTRL: RXOVIE (Bitfield-Mask: 0x01)               */
+#define UART_CTRL_RXOVIE                  UART_CTRL_RXOVIE_Msk
+#define UART_CTRL_TXOVIE_Pos              (4UL)                     /*!< UART CTRL: TXOVIE (Bit 4)                             */
+#define UART_CTRL_TXOVIE_Msk              (0x10UL)                  /*!< UART CTRL: TXOVIE (Bitfield-Mask: 0x01)               */
+#define UART_CTRL_TXOVIE                  UART_CTRL_TXOVIE_Msk
+#define UART_CTRL_RXIE_Pos                (3UL)                     /*!< UART CTRL: RXIE (Bit 3)                               */
+#define UART_CTRL_RXIE_Msk                (0x8UL)                   /*!< UART CTRL: RXIE (Bitfield-Mask: 0x01)                 */
+#define UART_CTRL_RXIE                    UART_CTRL_RXIE_Msk
+#define UART_CTRL_RXEN_Pos                (1UL)                     /*!< UART CTRL: RXEN (Bit 1)                               */
+#define UART_CTRL_RXEN_Msk                (0x2UL)                   /*!< UART CTRL: RXEN (Bitfield-Mask: 0x01)                 */
+#define UART_CTRL_RXEN                    UART_CTRL_RXEN_Msk
+#define UART_CTRL_TXEN_Pos                (0UL)                     /*!< UART CTRL: TXEN (Bit 0)                               */
+#define UART_CTRL_TXEN_Msk                (0x1UL)                   /*!< UART CTRL: TXEN (Bitfield-Mask: 0x01)                 */
+#define UART_CTRL_TXEN                    UART_CTRL_TXEN_Msk
+/* ========================================================  INTSTS  ========================================================= */
+#define UART_INTSTS_TXDONEIF_Pos          (5UL)                     /*!< UART INTSTS: TXDONEIF (Bit 5)                         */
+#define UART_INTSTS_TXDONEIF_Msk          (0x20UL)                  /*!< UART INTSTS: TXDONEIF (Bitfield-Mask: 0x01)           */
+#define UART_INTSTS_TXDONEIF              UART_INTSTS_TXDONEIF_Msk
+#define UART_INTSTS_RXPEIF_Pos            (4UL)                     /*!< UART INTSTS: RXPEIF (Bit 4)                           */
+#define UART_INTSTS_RXPEIF_Msk            (0x10UL)                  /*!< UART INTSTS: RXPEIF (Bitfield-Mask: 0x01)             */
+#define UART_INTSTS_RXPEIF                UART_INTSTS_RXPEIF_Msk
+#define UART_INTSTS_RXOVIF_Pos            (3UL)                     /*!< UART INTSTS: RXOVIF (Bit 3)                           */
+#define UART_INTSTS_RXOVIF_Msk            (0x8UL)                   /*!< UART INTSTS: RXOVIF (Bitfield-Mask: 0x01)             */
+#define UART_INTSTS_RXOVIF                UART_INTSTS_RXOVIF_Msk
+#define UART_INTSTS_TXOVIF_Pos            (2UL)                     /*!< UART INTSTS: TXOVIF (Bit 2)                           */
+#define UART_INTSTS_TXOVIF_Msk            (0x4UL)                   /*!< UART INTSTS: TXOVIF (Bitfield-Mask: 0x01)             */
+#define UART_INTSTS_TXOVIF                UART_INTSTS_TXOVIF_Msk
+#define UART_INTSTS_RXIF_Pos              (1UL)                     /*!< UART INTSTS: RXIF (Bit 1)                             */
+#define UART_INTSTS_RXIF_Msk              (0x2UL)                   /*!< UART INTSTS: RXIF (Bitfield-Mask: 0x01)               */
+#define UART_INTSTS_RXIF                  UART_INTSTS_RXIF_Msk
+/* ========================================================  BAUDDIV  ======================================================== */
+#define UART_BAUDDIV_BAUDDIV_Pos          (0UL)                     /*!< UART BAUDDIV: BAUDDIV (Bit 0)                         */
+#define UART_BAUDDIV_BAUDDIV_Msk          (0xfffffUL)               /*!< UART BAUDDIV: BAUDDIV (Bitfield-Mask: 0xfffff)        */
+#define UART_BAUDDIV_BAUDDIV              UART_BAUDDIV_BAUDDIV_Msk
+/* =========================================================  CTRL2  ========================================================= */
+#define UART_CTRL2_PMODE_Pos              (1UL)                     /*!< UART CTRL2: PMODE (Bit 1)                             */
+#define UART_CTRL2_PMODE_Msk              (0xeUL)                   /*!< UART CTRL2: PMODE (Bitfield-Mask: 0x07)               */
+#define UART_CTRL2_PMODE                  UART_CTRL2_PMODE_Msk
+#define UART_CTRL2_MSB_Pos                (0UL)                     /*!< UART CTRL2: MSB (Bit 0)                               */
+#define UART_CTRL2_MSB_Msk                (0x1UL)                   /*!< UART CTRL2: MSB (Bitfield-Mask: 0x01)                 */
+#define UART_CTRL2_MSB                    UART_CTRL2_MSB_Msk
+
+
+/* =========================================================================================================================== */
+/* ================                                           U32K                                            ================ */
+/* =========================================================================================================================== */
+
+/* =========================================================  CTRL0  ========================================================= */
+#define U32K_CTRL0_WKUMODE_Pos            (8UL)                     /*!< U32K CTRL0: WKUMODE (Bit 8)                           */
+#define U32K_CTRL0_WKUMODE_Msk            (0x100UL)                 /*!< U32K CTRL0: WKUMODE (Bitfield-Mask: 0x01)             */
+#define U32K_CTRL0_WKUMODE                U32K_CTRL0_WKUMODE_Msk
+#define U32K_CTRL0_DEBSEL_Pos             (6UL)                     /*!< U32K CTRL0: DEBSEL (Bit 6)                            */
+#define U32K_CTRL0_DEBSEL_Msk             (0xc0UL)                  /*!< U32K CTRL0: DEBSEL (Bitfield-Mask: 0x03)              */
+#define U32K_CTRL0_DEBSEL                 U32K_CTRL0_DEBSEL_Msk
+#define U32K_CTRL0_PMODE_Pos              (3UL)                     /*!< U32K CTRL0: PMODE (Bit 3)                             */
+#define U32K_CTRL0_PMODE_Msk              (0x38UL)                  /*!< U32K CTRL0: PMODE (Bitfield-Mask: 0x07)               */
+#define U32K_CTRL0_PMODE                  U32K_CTRL0_PMODE_Msk
+#define U32K_CTRL0_MSB_Pos                (2UL)                     /*!< U32K CTRL0: MSB (Bit 2)                               */
+#define U32K_CTRL0_MSB_Msk                (0x4UL)                   /*!< U32K CTRL0: MSB (Bitfield-Mask: 0x01)                 */
+#define U32K_CTRL0_MSB                    U32K_CTRL0_MSB_Msk
+#define U32K_CTRL0_ACOFF_Pos              (1UL)                     /*!< U32K CTRL0: ACOFF (Bit 1)                             */
+#define U32K_CTRL0_ACOFF_Msk              (0x2UL)                   /*!< U32K CTRL0: ACOFF (Bitfield-Mask: 0x01)               */
+#define U32K_CTRL0_ACOFF                  U32K_CTRL0_ACOFF_Msk
+#define U32K_CTRL0_EN_Pos                 (0UL)                     /*!< U32K CTRL0: EN (Bit 0)                                */
+#define U32K_CTRL0_EN_Msk                 (0x1UL)                   /*!< U32K CTRL0: EN (Bitfield-Mask: 0x01)                  */
+#define U32K_CTRL0_EN                     U32K_CTRL0_EN_Msk
+/* =========================================================  CTRL1  ========================================================= */
+#define U32K_CTRL1_RXSEL_Pos              (4UL)                     /*!< U32K CTRL1: RXSEL (Bit 4)                             */
+#define U32K_CTRL1_RXSEL_Msk              (0x30UL)                  /*!< U32K CTRL1: RXSEL (Bitfield-Mask: 0x03)               */
+#define U32K_CTRL1_RXSEL                  U32K_CTRL1_RXSEL_Msk
+#define U32K_CTRL1_RXOVIE_Pos             (2UL)                     /*!< U32K CTRL1: RXOVIE (Bit 2)                            */
+#define U32K_CTRL1_RXOVIE_Msk             (0x4UL)                   /*!< U32K CTRL1: RXOVIE (Bitfield-Mask: 0x01)              */
+#define U32K_CTRL1_RXOVIE                 U32K_CTRL1_RXOVIE_Msk
+#define U32K_CTRL1_RXPEIE_Pos             (1UL)                     /*!< U32K CTRL1: RXPEIE (Bit 1)                            */
+#define U32K_CTRL1_RXPEIE_Msk             (0x2UL)                   /*!< U32K CTRL1: RXPEIE (Bitfield-Mask: 0x01)              */
+#define U32K_CTRL1_RXPEIE                 U32K_CTRL1_RXPEIE_Msk
+#define U32K_CTRL1_RXIE_Pos               (0UL)                     /*!< U32K CTRL1: RXIE (Bit 0)                              */
+#define U32K_CTRL1_RXIE_Msk               (0x1UL)                   /*!< U32K CTRL1: RXIE (Bitfield-Mask: 0x01)                */
+#define U32K_CTRL1_RXIE                   U32K_CTRL1_RXIE_Msk
+/* ========================================================  BAUDDIV  ======================================================== */
+#define U32K_BAUDDIV_BAUDDIV_Pos          (0UL)                     /*!< U32K BAUDDIV: BAUDDIV (Bit 0)                         */
+#define U32K_BAUDDIV_BAUDDIV_Msk          (0xffffUL)                /*!< U32K BAUDDIV: BAUDDIV (Bitfield-Mask: 0xffff)         */
+#define U32K_BAUDDIV_BAUDDIV              U32K_BAUDDIV_BAUDDIV_Msk
+/* =========================================================  DATA  ========================================================== */
+#define U32K_DATA_DATA_Pos                (0UL)                     /*!< U32K DATA: DATA (Bit 0)                               */
+#define U32K_DATA_DATA_Msk                (0xffUL)                  /*!< U32K DATA: DATA (Bitfield-Mask: 0xff)                 */
+#define U32K_DATA_DATA                    U32K_DATA_DATA_Msk
+/* ==========================================================  STS  ========================================================== */
+#define U32K_STS_RXOV_Pos                 (2UL)                     /*!< U32K STS: RXOV (Bit 2)                                */
+#define U32K_STS_RXOV_Msk                 (0x4UL)                   /*!< U32K STS: RXOV (Bitfield-Mask: 0x01)                  */
+#define U32K_STS_RXOV                     U32K_STS_RXOV_Msk
+#define U32K_STS_RXPE_Pos                 (1UL)                     /*!< U32K STS: RXPE (Bit 1)                                */
+#define U32K_STS_RXPE_Msk                 (0x2UL)                   /*!< U32K STS: RXPE (Bitfield-Mask: 0x01)                  */
+#define U32K_STS_RXPE                     U32K_STS_RXPE_Msk
+#define U32K_STS_RXIF_Pos                 (0UL)                     /*!< U32K STS: RXIF (Bit 0)                                */
+#define U32K_STS_RXIF_Msk                 (0x1UL)                   /*!< U32K STS: RXIF (Bitfield-Mask: 0x01)                  */
+#define U32K_STS_RXIF                     U32K_STS_RXIF_Msk
+
+/** @} */ /* End of group PosMask_peripherals */
+#include "system_target.h"                      /*!< target System                                                             */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TARGET_H */
+
+
+/** @} */ /* End of group target */
+
+/** @} */ /* End of group Vango */

+ 107 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/type_def.h

@@ -0,0 +1,107 @@
+/**
+  ******************************************************************************
+  * @file    type_def.h 
+  * @author  Application Team
+  * @version V4.4.0
+  * @date    2018-09-27
+  * @brief   Typedef file
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+#ifndef __TYPE_DEF_H
+#define __TYPE_DEF_H
+
+#define ENABLE  1
+#define DISABLE 0
+#define IS_FUNCTIONAL_STATE(__STATE__) (((__STATE__) == DISABLE) || ((__STATE__) == ENABLE))
+
+#define BIT_BAND(addr, bitnum)        *((volatile unsigned long *)((((uint32_t)addr) & 0xF0000000) + \
+                                        0x2000000 + ((((uint32_t)addr) & 0xFFFFF) << 5) + (bitnum << 2)))
+
+#define BIT0      0x00000001
+#define BIT1      0x00000002
+#define BIT2      0x00000004
+#define BIT3      0x00000008
+#define BIT4      0x00000010
+#define BIT5      0x00000020
+#define BIT6      0x00000040
+#define BIT7      0x00000080
+#define BIT8      0x00000100
+#define BIT9      0x00000200
+#define BIT10     0x00000400
+#define BIT11     0x00000800
+#define BIT12     0x00001000
+#define BIT13     0x00002000
+#define BIT14     0x00004000
+#define BIT15     0x00008000
+#define BIT16     0x00010000
+#define BIT17     0x00020000
+#define BIT18     0x00040000
+#define BIT19     0x00080000
+#define BIT20     0x00100000
+#define BIT21     0x00200000
+#define BIT22     0x00400000
+#define BIT23     0x00800000
+#define BIT24     0x01000000
+#define BIT25     0x02000000
+#define BIT26     0x04000000
+#define BIT27     0x08000000
+#define BIT28     0x10000000
+#define BIT29     0x20000000
+#define BIT30     0x40000000
+#define BIT31     0x80000000
+
+#if  defined ( __GNUC__ )
+  #ifndef __weak
+    #define __weak   __attribute__((weak))
+  #endif /* __weak */
+  #ifndef __packed
+    #define __packed __attribute__((__packed__))
+  #endif /* __packed */
+#endif /* __GNUC__ */
+
+
+/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */
+#if defined   (__GNUC__)        /* GNU Compiler */
+  #ifndef __ALIGN_END
+    #define __ALIGN_END    __attribute__ ((aligned (4)))
+  #endif /* __ALIGN_END */
+  #ifndef __ALIGN_BEGIN
+    #define __ALIGN_BEGIN
+  #endif /* __ALIGN_BEGIN */
+#else
+  #ifndef __ALIGN_END
+    #define __ALIGN_END
+  #endif /* __ALIGN_END */
+  #ifndef __ALIGN_BEGIN
+    #if defined   (__CC_ARM)      /* ARM Compiler */
+      #define __ALIGN_BEGIN    __align(4)
+    #elif defined (__ICCARM__)    /* IAR Compiler */
+      #define __ALIGN_BEGIN
+    #endif /* __CC_ARM */
+  #endif /* __ALIGN_BEGIN */
+#endif /* __GNUC__ */
+
+/**
+  * @brief  __NOINLINE definition
+  */
+#if defined ( __CC_ARM   ) || defined   (  __GNUC__  )
+/* ARM & GNUCompiler
+   ----------------
+*/
+#define __NOINLINE __attribute__ ( (noinline) )
+
+#elif defined ( __ICCARM__ )
+/* ICCARM Compiler
+   ---------------
+*/
+#define __NOINLINE _Pragma("optimize = no_inline")
+
+#endif
+
+#endif /* __TYPE_DEF_H */
+
+/*********************************** END OF FILE ******************************/

+ 478 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S

@@ -0,0 +1,478 @@
+;/**
+;* @file    startup_target.s
+;* @author  Application Team
+;* @version V1.1.0
+;* @date    2019-10-28
+;* @brief   Target Devices vector table.
+;******************************************************************************/
+
+  .syntax unified
+  .cpu cortex-m0
+  .fpu softvfp
+  .thumb
+
+.equ __CHIPINITIAL, 1
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+
+/*************************************************************************
+* Chip init.
+*      1. Load flash configuration
+*      2. Load ANA_REG(B/C/D/E) information
+*      3. Load ANA_REG10 information
+
+**************************************************************************/
+.if (__CHIPINITIAL != 0)
+  .section .chipinit_section.__CHIP_INIT
+__CHIP_INIT:
+CONFIG1_START:
+        /*-------------------------------*/
+        /* 1. Load flash configuration */
+        /* Unlock flash */
+        LDR     R0, =0x000FFFE0
+        LDR     R1, =0x55AAAA55
+        STR     R1, [R0]
+        /* Load configure word 0 to 7
+           Compare bit[7:0] */
+        LDR     R0, =0x00080E00
+        LDR     R1, =0x20
+        LDR     R2, =0x000FFFE8
+        LDR     R3, =0x000FFFF0
+        LDR     R4, =0x0
+        LDR     R7, =0x0FF
+FLASH_CONF_START_1:
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+        BNE     FLASH_CONF_AGAIN_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_1
+        B       FLASH_CONF_START_1
+FLASH_CONF_AGAIN_1:
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+FLASH_CONF_WHILELOOP_1:
+        BNE     FLASH_CONF_WHILELOOP_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_1
+        B       FLASH_CONF_START_1
+FLASH_CONF_END_1:
+        /* Load configure word 8 to 11
+           Compare bit 31,24,23:16,8,7:0 */
+        LDR     R1, =0x30
+        LDR     R7, =0x81FF81FF
+FLASH_CONF_START_2:
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+        BNE     FLASH_CONF_AGAIN_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_2
+        B       FLASH_CONF_START_2
+FLASH_CONF_AGAIN_2:
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+FLASH_CONF_WHILELOOP_2:
+        BNE     FLASH_CONF_WHILELOOP_2
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_2
+        B       FLASH_CONF_START_2
+FLASH_CONF_END_2:
+        /* Lock flash */
+        LDR     R0, =0x000FFFE0
+        LDR     R1, =0x0
+        STR     R1, [R0]
+        /*-------------------------------*/
+        /* 2. Load ANA_REG(B/C/D/E) information */
+CONFIG2_START:
+        LDR     R4, =0x4001422C
+        LDR     R5, =0x40014230
+        LDR     R6, =0x40014234
+        LDR     R7, =0x40014238
+        LDR     R0, =0x80DC0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DC4
+        LDR     R1, [R1]
+        ADDS    R2, R0, R1
+        ADDS    R2, #0x0FFFFFFFF
+        MVNS    R2, R2
+        LDR     R3, =0x80DCC
+        LDR     R3, [R3]
+        CMP     R3, R2
+        BEQ     ANADAT_CHECKSUM1_OK
+        B       ANADAT_CHECKSUM1_ERR
+ANADAT_CHECKSUM1_OK:
+        /* ANA_REGB */
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R4]
+        /* ANA_REGC */
+        LDR     R1, =0x0FF00
+        ANDS    R1, R0
+        LSRS    R1, R1, #8
+        STR     R1, [R5]
+        /* ANA_REGD */
+        LDR     R1, =0x0FF0000
+        ANDS    R1, R0
+        LSRS    R1, R1, #16
+        STR     R1, [R6]
+        /* ANA_REGE */
+        LDR     R1, =0x0FF000000
+        ANDS    R1, R0
+        LSRS    R1, R1, #24
+        STR     R1, [R7]
+        B       CONFIG3_START
+ANADAT_CHECKSUM1_ERR:
+        LDR     R0, =0x80DD0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DD4
+        LDR     R1, [R1]
+        ADDS    R2, R0, R1
+        ADDS    R2, #0x0FFFFFFFF
+        MVNS    R2, R2
+        LDR     R3, =0x80DDC
+        LDR     R3, [R3]
+        CMP     R3, R2
+        BEQ     ANADAT_CHECKSUM2_OK
+        B       ANADAT_CHECKSUM2_ERR
+ANADAT_CHECKSUM2_OK:
+        /* ANA_REGB */
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R4]
+        /* ANA_REGC */
+        LDR     R1, =0x0FF00
+        ANDS    R1, R0
+        LSRS    R1, R1, #8
+        STR     R1, [R5]
+        /* ANA_REGD */
+        LDR     R1, =0x0FF0000
+        ANDS    R1, R0
+        LSRS    R1, R1, #16
+        STR     R1, [R6]
+        /* ANA_REGE */
+        LDR     R1, =0x0FF000000
+        ANDS    R1, R0
+        LSRS    R1, R1, #24
+        STR     R1, [R7]
+        B       CONFIG3_START
+ANADAT_CHECKSUM2_ERR:
+        B       ANADAT_CHECKSUM2_ERR
+        /*-------------------------------*/
+        /* 3. Load ANA_REG10 information */
+CONFIG3_START:
+        LDR     R7, =0x40014240
+        LDR     R0, =0x80DE0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DE4
+        LDR     R1, [R1]
+        MVNS    R1, R1
+        CMP     R1, R0
+        BEQ     ANADAT10_CHECKSUM1_OK
+        B       ANADAT10_CHECKSUM1_ERR
+ANADAT10_CHECKSUM1_OK:
+        /* ANA_REG10 */
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R7]
+        BX      LR
+ANADAT10_CHECKSUM1_ERR:
+        LDR     R0, =0x80DE8
+        LDR     R0, [R0]
+        LDR     R1, =0x80DEC
+        LDR     R1, [R1]
+        MVNS    R1, R1
+        CMP     R1, R0
+        BEQ     ANADAT10_CHECKSUM2_OK
+        B       ANADAT10_CHECKSUM2_ERR
+ANADAT10_CHECKSUM2_OK:
+        /* ANA_REG10 */
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R7]
+        BX      LR
+ANADAT10_CHECKSUM2_ERR:
+        B       ANADAT10_CHECKSUM2_ERR
+.size __CHIP_INIT, .-__CHIP_INIT
+.endif
+
+
+.if (__CHIPINITIAL != 0)
+  .global __CHIP_INIT
+  .section .chipinit_section.Reset_Handler
+.else
+  .section .text.Reset_Handler
+.endif
+  .weak Reset_Handler
+  .type Reset_Handler, %function
+Reset_Handler:
+
+.if (__CHIPINITIAL != 0)
+/* Chip Initiliazation */  
+  bl    __CHIP_INIT
+/* System Initiliazation */
+  bl SystemInit
+.endif
+
+/* set stack pointer */
+  ldr   r0, =_estack
+  mov   sp, r0
+
+/* Copy the data segment initializers from flash to SRAM */
+  movs r1, #0
+  b LoopCopyDataInit
+
+CopyDataInit:
+  ldr r3, =_sidata
+  ldr r3, [r3, r1]
+  str r3, [r0, r1]
+  adds r1, r1, #4
+
+LoopCopyDataInit:
+  ldr r0, =_sdata
+  ldr r3, =_edata
+  adds r2, r0, r1
+  cmp r2, r3
+  bcc CopyDataInit
+  ldr r2, =_sbss
+  b LoopFillZerobss
+/* Zero fill the bss segment. */
+FillZerobss:
+  movs r3, #0
+  str  r3, [r2]
+  adds r2, r2, #4
+
+LoopFillZerobss:
+  ldr r3, = _ebss
+  cmp r2, r3
+  bcc FillZerobss
+
+/* Call static constructors */
+  bl __libc_init_array
+/* Call the application's entry point.*/
+  bl main
+
+LoopForever:
+    b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief  This is the code that gets called when the processor receives an
+ *         unexpected interrupt.  This simply enters an infinite loop, preserving
+ *         the system state for examination by a debugger.
+ *
+ * @param  None
+ * @retval : None
+*/
+    .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+  b Infinite_Loop
+  .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex M0.  Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+   .section .isr_vector,"a",%progbits
+  .type g_pfnVectors, %object
+  .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+  .word  _estack
+  .word  Reset_Handler
+  .word  NMI_Handler
+  .word  HardFault_Handler
+  .word  0
+  .word  0
+  .word  0
+  .word  0
+  .word  0
+  .word  0
+  .word  0
+  .word  SVC_Handler
+  .word  0
+  .word  0
+  .word  PendSV_Handler
+  .word  SysTick_Handler
+
+  /* External Interrupts */
+  .word  PMU_IRQHandler                    /*  0: PMU       */
+  .word  RTC_IRQHandler                    /*  1: RTC       */
+  .word  U32K0_IRQHandler                  /*  2: U32K0     */
+  .word  U32K1_IRQHandler                  /*  3: U32K1     */
+  .word  I2C_IRQHandler                    /*  4: I2C       */
+  .word  SPI1_IRQHandler                   /*  5: SPI1      */
+  .word  UART0_IRQHandler                  /*  6: UART0     */
+  .word  UART1_IRQHandler                  /*  7: UART1     */
+  .word  UART2_IRQHandler                  /*  8: UART2     */
+  .word  UART3_IRQHandler                  /*  9: UART3     */
+  .word  UART4_IRQHandler                  /* 10: UART4     */
+  .word  UART5_IRQHandler                  /* 11: UART5     */
+  .word  ISO78160_IRQHandler               /* 12: ISO78160  */
+  .word  ISO78161_IRQHandler               /* 13: ISO78161  */
+  .word  TMR0_IRQHandler                   /* 14: TMR0      */
+  .word  TMR1_IRQHandler                   /* 15: TMR1      */
+  .word  TMR2_IRQHandler                   /* 16: TMR2      */
+  .word  TMR3_IRQHandler                   /* 17: TMR3      */
+  .word  PWM0_IRQHandler                   /* 18: PWM0      */
+  .word  PWM1_IRQHandler                   /* 19: PWM1      */
+  .word  PWM2_IRQHandler                   /* 20: PWM2      */
+  .word  PWM3_IRQHandler                   /* 21: PWM3      */
+  .word  DMA_IRQHandler                    /* 22: DMA       */
+  .word  FLASH_IRQHandler                  /* 23: FLASH     */
+  .word  ANA_IRQHandler                    /* 24: ANA       */
+  .word  0                                 /* 25: Reserved  */
+  .word  0                                 /* 26: Reserved  */
+  .word  SPI2_IRQHandler                   /* 27: SPI2      */
+  .word  SPI3_IRQHandler                   /* 28: SPI3      */
+  .word  0                                 /* 29: Reserved  */
+  .word  0                                 /* 30: Reserved  */
+  .word  0                                 /* 31: Reserved  */
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+
+  .weak      NMI_Handler
+  .thumb_set NMI_Handler,Default_Handler
+
+  .weak      HardFault_Handler
+  .thumb_set HardFault_Handler,Default_Handler
+
+  .weak      SVC_Handler
+  .thumb_set SVC_Handler,Default_Handler
+
+  .weak      PendSV_Handler
+  .thumb_set PendSV_Handler,Default_Handler
+
+  .weak      SysTick_Handler
+  .thumb_set SysTick_Handler,Default_Handler
+
+  .weak      PMU_IRQHandler
+  .thumb_set PMU_IRQHandler,Default_Handler
+
+  .weak      RTC_IRQHandler
+  .thumb_set RTC_IRQHandler,Default_Handler
+
+  .weak      U32K0_IRQHandler
+  .thumb_set U32K0_IRQHandler,Default_Handler
+
+  .weak      U32K1_IRQHandler
+  .thumb_set U32K1_IRQHandler,Default_Handler
+
+  .weak      I2C_IRQHandler
+  .thumb_set I2C_IRQHandler,Default_Handler
+
+  .weak      SPI1_IRQHandler
+  .thumb_set SPI1_IRQHandler,Default_Handler
+
+  .weak      UART0_IRQHandler
+  .thumb_set UART0_IRQHandler,Default_Handler
+
+  .weak      UART1_IRQHandler
+  .thumb_set UART1_IRQHandler,Default_Handler
+
+  .weak      UART2_IRQHandler
+  .thumb_set UART2_IRQHandler,Default_Handler
+
+  .weak      UART3_IRQHandler
+  .thumb_set UART3_IRQHandler,Default_Handler
+
+  .weak      UART4_IRQHandler
+  .thumb_set UART4_IRQHandler,Default_Handler
+
+  .weak      UART5_IRQHandler
+  .thumb_set UART5_IRQHandler,Default_Handler
+
+  .weak      ISO78160_IRQHandler
+  .thumb_set ISO78160_IRQHandler,Default_Handler
+
+  .weak      ISO78161_IRQHandler
+  .thumb_set ISO78161_IRQHandler,Default_Handler
+
+  .weak      TMR0_IRQHandler
+  .thumb_set TMR0_IRQHandler,Default_Handler
+
+  .weak      TMR1_IRQHandler
+  .thumb_set TMR1_IRQHandler,Default_Handler
+
+  .weak      TMR2_IRQHandler
+  .thumb_set TMR2_IRQHandler,Default_Handler
+
+  .weak      TMR3_IRQHandler
+  .thumb_set TMR3_IRQHandler,Default_Handler
+
+  .weak      PWM0_IRQHandler
+  .thumb_set PWM0_IRQHandler,Default_Handler
+
+  .weak      PWM1_IRQHandler
+  .thumb_set PWM1_IRQHandler,Default_Handler
+
+  .weak      PWM2_IRQHandler
+  .thumb_set PWM2_IRQHandler,Default_Handler
+
+  .weak      PWM3_IRQHandler
+  .thumb_set PWM3_IRQHandler,Default_Handler
+
+  .weak      DMA_IRQHandler
+  .thumb_set DMA_IRQHandler,Default_Handler
+
+  .weak      FLASH_IRQHandler
+  .thumb_set FLASH_IRQHandler,Default_Handler
+
+  .weak      ANA_IRQHandler
+  .thumb_set ANA_IRQHandler,Default_Handler
+
+  .weak      SPI2_IRQHandler
+  .thumb_set SPI2_IRQHandler,Default_Handler
+
+  .weak      SPI3_IRQHandler
+  .thumb_set SPI3_IRQHandler,Default_Handler

+ 450 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S

@@ -0,0 +1,450 @@
+;/**
+;* @file    startup_target.s
+;* @author  Application Team
+;* @version V1.1.0
+;* @date    2019-10-28
+;* @brief   Target Devices vector table.
+;******************************************************************************/
+
+
+; <h> Stack Configuration
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+__CHIPINITIAL   EQU     1
+
+Stack_Size      EQU     0x000001000
+
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem       SPACE   Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size       EQU     0x00000400
+
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem        SPACE   Heap_Size
+__heap_limit
+
+                
+                PRESERVE8
+                THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+
+                AREA    RESET, DATA, READONLY
+                EXPORT  __Vectors
+                EXPORT  __Vectors_End
+                EXPORT  __Vectors_Size
+
+__Vectors       DCD     __initial_sp              ; Top of Stack
+                DCD     Reset_Handler             ; Reset Handler
+                DCD     NMI_Handler               ; NMI Handler
+                DCD     HardFault_Handler         ; Hard Fault Handler
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     SVC_Handler               ; SVCall Handler
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     PendSV_Handler            ; PendSV Handler
+                DCD     SysTick_Handler           ; SysTick Handler
+
+                ; External Interrupts
+                DCD     PMU_IRQHandler            ;  0:  PMU
+                DCD     RTC_IRQHandler            ;  1:  RTC
+                DCD     U32K0_IRQHandler          ;  2:  U32K0
+                DCD     U32K1_IRQHandler          ;  3:  U32K1
+                DCD     I2C_IRQHandler            ;  4:  I2C
+                DCD     SPI1_IRQHandler           ;  5:  SPI1
+                DCD     UART0_IRQHandler          ;  6:  UART0
+                DCD     UART1_IRQHandler          ;  7:  UART1
+                DCD     UART2_IRQHandler          ;  8:  UART2
+                DCD     UART3_IRQHandler          ;  9:  UART3
+                DCD     UART4_IRQHandler          ; 10:  UART4
+                DCD     UART5_IRQHandler          ; 11:  UART5
+                DCD     ISO78160_IRQHandler       ; 12:  ISO78160
+                DCD     ISO78161_IRQHandler       ; 13:  ISO78161
+                DCD     TMR0_IRQHandler           ; 14:  TMR0
+                DCD     TMR1_IRQHandler           ; 15:  TMR1
+                DCD     TMR2_IRQHandler           ; 16:  TMR2
+                DCD     TMR3_IRQHandler           ; 17:  TMR3
+                DCD     PWM0_IRQHandler           ; 18:  PWM0
+                DCD     PWM1_IRQHandler           ; 19:  PWM1
+                DCD     PWM2_IRQHandler           ; 20:  PWM2
+                DCD     PWM3_IRQHandler           ; 21:  PWM3
+                DCD     DMA_IRQHandler            ; 22:  DMA
+                DCD     FLASH_IRQHandler          ; 23:  FLASH
+                DCD     ANA_IRQHandler            ; 24:  ANA
+                DCD     0                         ; 25:  Reserved
+                DCD     0                         ; 26:  Reserved
+                DCD     SPI2_IRQHandler           ; 27:  SPI2
+                DCD     SPI3_IRQHandler           ; 28:  SPI3
+                DCD     0                         ; 29:  Reserved
+                DCD     0                         ; 30:  Reserved
+                DCD     0                         ; 31:  Reserved
+__Vectors_End
+
+__Vectors_Size  EQU     __Vectors_End - __Vectors
+
+  IF (__CHIPINITIAL != 0)
+                AREA    |.ARM.__AT_0xC0|, CODE, READONLY
+  ELSE
+                AREA    |.text|, CODE, READONLY
+  ENDIF
+
+; Reset Handler
+
+Reset_Handler   PROC
+                EXPORT  Reset_Handler             [WEAK]
+                IMPORT  __main
+                IMPORT  SystemInit
+  IF (__CHIPINITIAL != 0)
+                LDR     R0, =__CHIP_INIT
+                BLX     R0
+  ENDIF
+                LDR     R0, =SystemInit
+                BLX     R0
+                LDR     R0, =__main
+                BX      R0
+                ENDP
+
+                AREA    |.text|, CODE, READONLY
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler     PROC
+                EXPORT  NMI_Handler               [WEAK]
+                B       .
+                ENDP
+HardFault_Handler\
+                PROC
+                EXPORT  HardFault_Handler         [WEAK]
+                B       .
+                ENDP
+SVC_Handler     PROC
+                EXPORT  SVC_Handler               [WEAK]
+                B       .
+                ENDP
+PendSV_Handler  PROC
+                EXPORT  PendSV_Handler            [WEAK]
+                B       .
+                ENDP
+SysTick_Handler PROC
+                EXPORT  SysTick_Handler           [WEAK]
+                B       .
+                ENDP
+
+Default_Handler PROC
+
+                EXPORT  PMU_IRQHandler            [WEAK]
+                EXPORT  RTC_IRQHandler            [WEAK]
+                EXPORT  U32K0_IRQHandler          [WEAK]
+                EXPORT  U32K1_IRQHandler          [WEAK]
+                EXPORT  I2C_IRQHandler            [WEAK]
+                EXPORT  SPI1_IRQHandler           [WEAK]
+                EXPORT  UART0_IRQHandler          [WEAK]
+                EXPORT  UART1_IRQHandler          [WEAK]
+                EXPORT  UART2_IRQHandler          [WEAK]
+                EXPORT  UART3_IRQHandler          [WEAK]
+                EXPORT  UART4_IRQHandler          [WEAK]
+                EXPORT  UART5_IRQHandler          [WEAK]
+                EXPORT  ISO78160_IRQHandler       [WEAK]
+                EXPORT  ISO78161_IRQHandler       [WEAK]
+                EXPORT  TMR0_IRQHandler           [WEAK]
+                EXPORT  TMR1_IRQHandler           [WEAK]
+                EXPORT  TMR2_IRQHandler           [WEAK]
+                EXPORT  TMR3_IRQHandler           [WEAK]
+                EXPORT  PWM0_IRQHandler           [WEAK]
+                EXPORT  PWM1_IRQHandler           [WEAK]
+                EXPORT  PWM2_IRQHandler           [WEAK]
+                EXPORT  PWM3_IRQHandler           [WEAK]
+                EXPORT  DMA_IRQHandler            [WEAK]
+                EXPORT  FLASH_IRQHandler      	  [WEAK]
+                EXPORT  ANA_IRQHandler            [WEAK]
+                EXPORT  SPI2_IRQHandler           [WEAK]
+                EXPORT  SPI3_IRQHandler           [WEAK]
+
+PMU_IRQHandler
+RTC_IRQHandler
+U32K0_IRQHandler
+U32K1_IRQHandler
+I2C_IRQHandler
+SPI1_IRQHandler
+UART0_IRQHandler
+UART1_IRQHandler
+UART2_IRQHandler
+UART3_IRQHandler
+UART4_IRQHandler
+UART5_IRQHandler
+ISO78160_IRQHandler
+ISO78161_IRQHandler
+TMR0_IRQHandler
+TMR1_IRQHandler
+TMR2_IRQHandler
+TMR3_IRQHandler
+PWM0_IRQHandler
+PWM1_IRQHandler
+PWM2_IRQHandler
+PWM3_IRQHandler
+DMA_IRQHandler
+FLASH_IRQHandler
+ANA_IRQHandler
+SPI2_IRQHandler
+SPI3_IRQHandler
+                B       .
+
+                ENDP
+
+
+                ALIGN
+
+
+; User Initial Stack & Heap
+
+                IF      :DEF:__MICROLIB
+
+                EXPORT  __initial_sp
+                EXPORT  __heap_base
+                EXPORT  __heap_limit
+
+                ELSE
+
+                IMPORT  __use_two_region_memory
+                EXPORT  __user_initial_stackheap
+
+__user_initial_stackheap PROC
+                LDR     R0, =  Heap_Mem
+                LDR     R1, =(Stack_Mem + Stack_Size)
+                LDR     R2, = (Heap_Mem +  Heap_Size)
+                LDR     R3, = Stack_Mem
+                BX      LR
+                ENDP
+
+                ALIGN
+
+                ENDIF
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Chip init.
+;;      1. Load flash configuration
+;;      2. Load ANA_REG(B/C/D/E) information
+;;      3. Load ANA_REG10 information
+  IF (__CHIPINITIAL != 0)
+        AREA    |.ARM.__AT_0xC0|, CODE, READONLY
+
+__CHIP_INIT PROC
+CONFIG1_START
+        ;-------------------------------;
+        ;; 1. Load flash configuration
+        ; Unlock flash
+        LDR     R0, =0x000FFFE0
+        LDR     R1, =0x55AAAA55
+        STR     R1, [R0]
+        ; Load configure word 0 to 7
+        ; Compare bit[7:0]
+        LDR     R0, =0x00080E00
+        LDR     R1, =0x20
+        LDR     R2, =0x000FFFE8
+        LDR     R3, =0x000FFFF0
+        LDR     R4, =0x0
+        LDR     R7, =0x0FF
+FLASH_CONF_START_1
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+        BNE     FLASH_CONF_AGAIN_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_1
+        B       FLASH_CONF_START_1
+FLASH_CONF_AGAIN_1
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+FLASH_CONF_WHILELOOP_1
+        BNE     FLASH_CONF_WHILELOOP_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_1
+        B       FLASH_CONF_START_1
+FLASH_CONF_END_1
+        ; Load configure word 8 to 11
+        ; Compare bit 31,24,23:16,8,7:0
+        LDR     R1, =0x30
+        LDR     R7, =0x81FF81FF
+FLASH_CONF_START_2
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+        BNE     FLASH_CONF_AGAIN_1
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_2
+        B       FLASH_CONF_START_2
+FLASH_CONF_AGAIN_2
+        LDR     R5, [R0]
+        STR     R4, [R2]
+        STR     R5, [R3]
+        LDR     R6, [R3]
+        ANDS    R5, R7
+        ANDS    R6, R7
+        CMP     R5, R6
+FLASH_CONF_WHILELOOP_2
+        BNE     FLASH_CONF_WHILELOOP_2
+        ADDS    R4, #4
+        ADDS    R0, #4
+        CMP     R1, R4
+        BEQ     FLASH_CONF_END_2
+        B       FLASH_CONF_START_2
+FLASH_CONF_END_2  
+        ; Lock flash
+        LDR     R0, =0x000FFFE0
+        LDR     R1, =0x0
+        STR     R1, [R0]
+        ;-------------------------------;
+        ;; 2. Load ANA_REG(B/C/D/E) information
+CONFIG2_START
+        LDR     R4, =0x4001422C
+        LDR     R5, =0x40014230
+        LDR     R6, =0x40014234
+        LDR     R7, =0x40014238
+        LDR     R0, =0x80DC0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DC4
+        LDR     R1, [R1]
+        ADDS    R2, R0, R1
+        ADDS    R2, #0x0FFFFFFFF
+        MVNS    R2, R2
+        LDR     R3, =0x80DCC
+        LDR     R3, [R3]
+        CMP     R3, R2
+        BEQ     ANADAT_CHECKSUM1_OK
+        B       ANADAT_CHECKSUM1_ERR
+ANADAT_CHECKSUM1_OK  
+        ; ANA_REGB
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R4]
+        ; ANA_REGC
+        LDR     R1, =0x0FF00
+        ANDS    R1, R0
+        LSRS    R1, R1, #8
+        STR     R1, [R5]
+        ; ANA_REGD
+        LDR     R1, =0x0FF0000
+        ANDS    R1, R0
+        LSRS    R1, R1, #16
+        STR     R1, [R6]
+        ; ANA_REGE
+        LDR     R1, =0x0FF000000
+        ANDS    R1, R0
+        LSRS    R1, R1, #24
+        STR     R1, [R7]
+        B       CONFIG3_START
+ANADAT_CHECKSUM1_ERR
+        LDR     R0, =0x80DD0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DD4
+        LDR     R1, [R1]
+        ADDS    R2, R0, R1
+        ADDS    R2, #0x0FFFFFFFF
+        MVNS    R2, R2
+        LDR     R3, =0x80DDC
+        LDR     R3, [R3]
+        CMP     R3, R2
+        BEQ     ANADAT_CHECKSUM2_OK
+        B       ANADAT_CHECKSUM2_ERR
+ANADAT_CHECKSUM2_OK  
+        ; ANA_REGB
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R4]
+        ; ANA_REGC
+        LDR     R1, =0x0FF00
+        ANDS    R1, R0
+        LSRS    R1, R1, #8
+        STR     R1, [R5]
+        ; ANA_REGD
+        LDR     R1, =0x0FF0000
+        ANDS    R1, R0
+        LSRS    R1, R1, #16
+        STR     R1, [R6]
+        ; ANA_REGE
+        LDR     R1, =0x0FF000000
+        ANDS    R1, R0
+        LSRS    R1, R1, #24
+        STR     R1, [R7]
+        B       CONFIG3_START 
+ANADAT_CHECKSUM2_ERR
+        B       ANADAT_CHECKSUM2_ERR
+        ;-------------------------------;
+        ;; 2. Load ANA_REG10 information
+CONFIG3_START
+        LDR     R7, =0x40014240
+        LDR     R0, =0x80DE0
+        LDR     R0, [R0]
+        LDR     R1, =0x80DE4
+        LDR     R1, [R1]
+        MVNS    R1, R1
+        CMP     R1, R0
+        BEQ     ANADAT10_CHECKSUM1_OK
+        B       ANADAT10_CHECKSUM1_ERR
+ANADAT10_CHECKSUM1_OK  
+        ; ANA_REG10
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R7]
+        BX      LR
+ANADAT10_CHECKSUM1_ERR
+        LDR     R0, =0x80DE8
+        LDR     R0, [R0]
+        LDR     R1, =0x80DEC
+        LDR     R1, [R1]
+        MVNS    R1, R1
+        CMP     R1, R0
+        BEQ     ANADAT10_CHECKSUM2_OK
+        B       ANADAT10_CHECKSUM2_ERR
+ANADAT10_CHECKSUM2_OK
+        ; ANA_REG10
+        LDR     R1, =0x0FF
+        ANDS    R1, R0
+        STR     R1, [R7]
+        BX      LR             
+ANADAT10_CHECKSUM2_ERR
+        B       ANADAT10_CHECKSUM2_ERR
+         
+        NOP
+        ENDP
+  ENDIF
+
+                END
+
+/*********************************** END OF FILE ******************************/

+ 35 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c

@@ -0,0 +1,35 @@
+/**
+  ******************************************************************************
+  * @file    lib_CodeRAM.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Codes executed in SRAM.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "lib_CodeRAM.h"
+
+#ifndef __GNUC__
+/**
+  * @brief  Enter idle mode with flash deep standby.
+  * @note   This function is executed in RAM.
+  * @param  None
+  * @retval None
+  */
+__RAM_FUNC void PMU_EnterIdle_FlashDSTB(void)
+{
+  /* Flash deep standby */
+  FLASH->PASS = 0x55AAAA55;
+  FLASH->DSTB = 0xAA5555AA;
+  /* Enter Idle mode */
+  SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
+  __WFI();
+}
+#endif
+
+/*********************************** END OF FILE ******************************/

+ 700 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c

@@ -0,0 +1,700 @@
+/**
+  ******************************************************************************
+  * @file    lib_LoadNVR.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Load information from NVR.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "lib_LoadNVR.h"
+
+
+/**
+  * @breif  Loads Analog trim data from NVR manually.
+  * @note   Successful Operation:
+  *           - Load [0x80DC0] or [0x80DD0] to ANA registers(B C D E)
+  *           - Load [0x80DE0] or [0x80DE8] to ANA registers(10)
+  * @param  None
+  * @retval 0: Function succeeded.
+           !0: Function failed.
+              bit[0]=1: Function failed(ANA registers(B C D E) Checksum error). 
+              bit[1]=1: Function failed(ANA registers(10) Checksum error).
+  */
+uint32_t NVR_LoadANADataManual(void)
+{
+  uint32_t checksum;
+  uint32_t op_reg;
+  uint32_t ana_data;
+  uint32_t key_reg = 0xFFFFFFFF;
+  uint32_t ret = 0;
+  
+  /* Get Analog data1 */
+  ana_data = *NVR_ANA_TRIMDATA1;
+  op_reg = *NVR_ANA_OPREG1;
+  /* Calculate checksum1 */
+  checksum = ~(ana_data + op_reg + key_reg);
+  /* Compare checksum1 */
+  if (checksum == (*NVR_ANA_CHECKSUM1))
+  {
+    ANA->REGB = (uint8_t)(ana_data);
+    ANA->REGC = (uint8_t)(ana_data >> 8);
+    ANA->REGD = (uint8_t)(ana_data >> 16);
+    ANA->REGE = (uint8_t)(ana_data >> 24);
+  }
+  else
+  {
+    /* Get Analog data2 */
+    ana_data = *NVR_ANA_TRIMDATA2;
+    op_reg = *NVR_ANA_OPREG2;
+    /* Calculate checksum2 */
+    checksum = ~(ana_data + op_reg + key_reg);
+    /* Compare checksum2 */
+    if (checksum == (*NVR_ANA_CHECKSUM2)) 
+    {
+      ANA->REGB = (uint8_t)(ana_data);
+      ANA->REGC = (uint8_t)(ana_data >> 8);
+      ANA->REGD = (uint8_t)(ana_data >> 16);
+      ANA->REGE = (uint8_t)(ana_data >> 24);
+    }
+    else
+    {
+      ret |= BIT0;
+    }
+  }
+
+  /* Get Analog data1 */
+  ana_data = *NVR_ANA1_REG10;
+  /* Calculate checksum1 */
+  checksum = ~ana_data;
+  /* Compare checksum1 */
+  if (checksum == (*NVR_ANA1_REG10_CHKSUM))
+  {
+    ANA->REG10 = (uint8_t)(ana_data);
+  }
+  else
+  {
+    /* Get Analog data2 */
+    ana_data = *NVR_ANA2_REG10;
+    /* Calculate checksum2 */
+    checksum = ~ana_data;
+    /* Compare checksum2 */
+    if (checksum == (*NVR_ANA2_REG10_CHKSUM))
+    {
+      ANA->REG10 = (uint8_t)(ana_data);
+    }
+    else
+    {
+      ret |= BIT1;
+    }
+  }
+
+  return ret;
+}
+
+/**
+  * @breif  Gets the parameters of ADC voltage measuring.
+  * @note   Voltage(unit:V) = aParameter*ADC_DATA + bParameter + OffsetParameter
+  *             ADC_DATA: ADC channel original data
+  *             aParameter/bParameter/OffsetParameter: Get from this function
+  * @param  [in]Mode:
+  *                NVR_3V_EXTERNAL_NODIV
+  *                NVR_3V_EXTERNAL_RESDIV
+  *                NVR_3V_BAT1_RESDIV
+  *                NVR_3V_BATRTC_RESDIV
+  *                NVR_5V_EXTERNAL_NODIV
+  *                NVR_5V_EXTERNAL_RESDIV
+  *                NVR_5V_BAT1_RESDIV
+  *                NVR_5V_BATRTC_RESDIV
+  * @param  [out]Parameter: The parameters get from NVR
+  * @retval 0: Function succeeded.
+            1: Function failed(Checksum error). 
+  */
+uint32_t NVR_GetVoltageParameters(uint32_t Mode, NVR_ADCVOLPARA *Parameter)
+{
+  uint32_t checksum;
+  uint32_t i;
+  int32_t tmp_int;
+
+  /* Check the parameters */
+  assert_parameters(IS_NVR_ADCVOL_MODE(Mode));
+
+  /*----- Power supply: 5V -----*/
+  if (0x100UL & Mode)
+  {
+    /*                    Parameter                        */
+    checksum = 0UL;
+    for (i=0; i<8; i++)
+      checksum += *(NVR_5VPARA_BASEADDR1+i);
+    checksum = ~(checksum);
+    if (checksum != *(NVR_5VPARA_BASEADDR1+i))     /* Checksum1 error */
+    {
+      checksum = 0UL;
+      for (i=0; i<8; i++)
+        checksum += *(NVR_5VPARA_BASEADDR2+i);
+      checksum = ~(checksum);
+      if (checksum != *(NVR_5VPARA_BASEADDR2+i))   /* Checksum2 error */
+      {
+        return 1;
+      }
+      else
+      {
+        tmp_int = (int32_t)*(NVR_5VPARA_BASEADDR2+2*(Mode-0x100UL));
+        Parameter->aParameter = (float)(tmp_int / 100000.0);
+        tmp_int = (int32_t)*(NVR_5VPARA_BASEADDR2+2*(Mode-0x100UL)+1);
+        Parameter->bParameter = (float)(tmp_int / 100000.0);
+      }
+    }
+    else
+    {
+      tmp_int = (int32_t)*(NVR_5VPARA_BASEADDR1+2*(Mode-0x100UL));
+      Parameter->aParameter = (float)(tmp_int / 100000.0);
+      tmp_int = (int32_t)*(NVR_5VPARA_BASEADDR1+2*(Mode-0x100UL)+1);
+      Parameter->bParameter = (float)(tmp_int / 100000.0);
+    }
+    /*                    Offset                        */
+    /* Calculate checksum1 */
+    checksum = 0UL;
+    for (i = 0; i < 4; i++)
+      checksum += *(NVR_5VADCCHx_NODIV1 + i);
+    checksum = ~(checksum);
+    if (checksum != *(NVR_5VADCCHx_NODIV1 + i))
+    {
+      /* Calculate checksum2 */
+      checksum = 0UL;
+      for (i = 0; i < 4; i++)
+        checksum += *(NVR_5VADCCHx_NODIV2+i);
+      checksum = ~(checksum);
+      if (checksum != *(NVR_5VADCCHx_NODIV2 + i))
+      {
+        return 1;
+      }
+      else
+      {
+        Parameter->OffsetParameter = (float)((int32_t)*(NVR_5VADCCHx_NODIV2 + (Mode-0x100UL)));
+        return 0;
+      }
+    }
+    else
+    {
+      Parameter->OffsetParameter = (float)((int32_t)*(NVR_5VADCCHx_NODIV1 + (Mode-0x100UL)));
+      return 0;
+    }
+  }
+  /*----- Power supply: 3.3V -----*/
+  else
+  {
+    checksum = 0UL;
+    for (i=0; i<8; i++)
+      checksum += *(NVR_3VPARA_BASEADDR1+i);
+    checksum = ~(checksum);
+    if (checksum != *(NVR_3VPARA_BASEADDR1+i))     /* Checksum1 error */
+    {
+      checksum = 0UL;
+      for (i=0; i<8; i++)
+        checksum += *(NVR_3VPARA_BASEADDR2+i);
+      checksum = ~(checksum); 
+      if (checksum != *(NVR_3VPARA_BASEADDR2+i))   /* Checksum2 error */ 
+      {
+        return 1;
+      }  
+      else
+      {
+        tmp_int = (int32_t)*(NVR_3VPARA_BASEADDR2+2*(Mode));
+        Parameter->aParameter = (float)(tmp_int / 100000.0);
+        tmp_int = (int32_t)*(NVR_3VPARA_BASEADDR2+2*(Mode)+1);
+        Parameter->bParameter = (float)(tmp_int / 100000.0);
+      } 
+    }
+    else
+    {
+      tmp_int = (int32_t)*(NVR_3VPARA_BASEADDR1+2*(Mode));
+      Parameter->aParameter = (float)(tmp_int / 100000.0);
+      tmp_int = (int32_t)*(NVR_3VPARA_BASEADDR1+2*(Mode)+1);
+      Parameter->bParameter = (float)(tmp_int / 100000.0);
+    }
+    /* Calculate checksum1 */
+    checksum = 0UL;
+    for (i = 0; i < 4; i++)
+      checksum += *(NVR_3VADCCHx_NODIV1 + i);
+    checksum = ~(checksum);
+    if (checksum != *(NVR_3VADCCHx_NODIV1 + i))
+    {
+      /* Calculate checksum2 */
+      checksum = 0UL;
+      for (i = 0; i < 4; i++)
+        checksum += *(NVR_3VADCCHx_NODIV2+i);
+      checksum = ~(checksum);
+      if (checksum != *(NVR_3VADCCHx_NODIV2 + i))
+      {
+        return 1;
+      }
+      else
+      {
+        Parameter->OffsetParameter = (float)((int32_t)*(NVR_3VADCCHx_NODIV2 + (Mode)));
+        return 0;
+      }
+    }
+    else
+    {
+      Parameter->OffsetParameter = (float)((int32_t)*(NVR_3VADCCHx_NODIV1 + (Mode)));
+      return 0;
+    }
+  }
+}
+
+/**
+  * @breif  Gets RTC parameters(P0 P1 P2).
+  * @param  [out]TempParams   The pointer to struct NVR_TempParams.
+  * @retval 0: Function succeeded.
+           !0: Function failed.
+            bit[0]=1: Temperature Measure delta information checksum error, default value 0.
+            bit[1]=1: P0/P1/P2 paramters checksum error, default value 0
+  */
+uint32_t NVR_GetTempParameters(NVR_TempParams *TempParams)
+{
+  uint32_t checksum;
+  uint32_t data_u32[4];
+  int32_t TempDelta;
+  uint32_t retval = 0;
+  
+/*------------------------ Temperature Measure delta -------------------------*/
+  data_u32[0] = *NVR_REALTEMP1;
+  data_u32[1] = *NVR_MEATEMP1;
+  /* Calculate checksum1 */
+  checksum = ~(data_u32[0] + data_u32[1]);
+  if (checksum == (*NVR_TEMP_CHECKSUM1)) //checksum1 true
+  {
+    TempDelta = (int32_t)data_u32[0] - (int32_t)data_u32[1];
+  }
+  else
+  {
+    data_u32[0] = *NVR_REALTEMP2;
+    data_u32[1]  = *NVR_MEATEMP2;
+    /* Calculate checksum2 */  
+    checksum = ~(data_u32[0] + data_u32[1]);
+    if (checksum == (*NVR_TEMP_CHECKSUM2)) //checksum2 true 
+    {
+      TempDelta = (int32_t)data_u32[0] - (int32_t)data_u32[1];
+    }
+    else
+    {
+      TempDelta = 0;
+      retval |= BIT0;
+    }
+  }  
+/*------------------------------ P parameters --------------------------------*/
+
+  data_u32[0] = *NVR_RTC1_P1_P0;
+  data_u32[1] = *NVR_RTC1_P2;
+  data_u32[2] = *NVR_RTC1_P5_P4;
+  data_u32[3] = *NVR_RTC1_P7_P6;
+
+  /* Calculate checksum1 */
+  checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3]);
+  if (checksum == (*NVR_RTC1_PCHECHSUM)) //checksum1 true
+  {
+    /* Get information */
+    TempParams->RTCTempP0 = (int16_t)(data_u32[0]);
+    TempParams->RTCTempP1 = (int16_t)(data_u32[0] >> 16);
+    TempParams->RTCTempP2 = (int32_t)((int32_t)(data_u32[1]) + (TempDelta*256));
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_P1_P0;
+    data_u32[1] = *NVR_RTC2_P2;
+    data_u32[2] = *NVR_RTC2_P5_P4;
+    data_u32[3] = *NVR_RTC2_P7_P6;
+    /* Calculate checksum2 */
+    checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3]);
+    if (checksum == (*NVR_RTC2_PCHECHSUM)) //checksum2 true 
+    {
+      /* Get information */
+      TempParams->RTCTempP0 = (int16_t)(data_u32[0]);
+      TempParams->RTCTempP1 = (int16_t)(data_u32[0] >> 16);
+      TempParams->RTCTempP2 = (int32_t)((int32_t)(data_u32[1]) + (TempDelta*256));
+    }
+    else
+    {
+      /* Get information */
+      TempParams->RTCTempP0 = 0;
+      TempParams->RTCTempP1 = 0;
+      TempParams->RTCTempP2 = 0;
+      retval |= BIT1;
+    }
+  }
+  return retval;
+}
+
+/**
+  * @breif  Loads RTC ACPx pramameters from NVR to RTC registers.
+            Get RTC pramameters.
+  * @param  [out]RTCTempData   The pointer to struct NVR_RTCINFO.
+            [in]DivCLKSource   The RTC division output clock source frequency
+  * @retval 0: Function succeeded.
+           !0: Function not succeeded, load default value to registers.
+            bit[0]=1: Temperature Measure delta information checksum error, default value 0.
+            bit[1]=1: P paramters checksum error, default value 0
+            bit[2]=1: P4 checksum error, default value is 0
+            bit[3]=1: ACKx checksum error,  default value 0
+            bit[4]=1: ACTI checksum error, default value is 0
+            bit[5]=1: ACKTEMP checksum error, defalut value is 0
+  */
+uint32_t NVR_GetInfo_LoadRTCData(NVR_RTCINFO *RTCTempData, uint32_t DivCLKSource)
+{
+  uint32_t data_u32[5];
+  uint32_t checksum;
+  float pclk_mul;
+  uint32_t retval = 0;
+  
+/*------------------------ Temperature Measure delta -------------------------*/
+  data_u32[0] = *NVR_REALTEMP1;
+  data_u32[1]  = *NVR_MEATEMP1;
+  /* Calculate checksum1 */
+  checksum = ~(data_u32[0] + data_u32[1]);
+  if (checksum == (*NVR_TEMP_CHECKSUM1)) //checksum1 true
+  {
+    RTCTempData->RTCTempDelta = (int32_t)data_u32[0] - (int32_t)data_u32[1];
+  }
+  else
+  {
+    data_u32[0] = *NVR_REALTEMP2;
+    data_u32[1] = *NVR_MEATEMP2;
+    /* Calculate checksum2 */  
+    checksum = ~(data_u32[0] + data_u32[1]);
+    if (checksum == (*NVR_TEMP_CHECKSUM2)) //checksum2 true 
+    {
+      RTCTempData->RTCTempDelta = (int32_t)data_u32[0] - (int32_t)data_u32[1];
+    }
+    else
+    {
+      RTCTempData->RTCTempDelta = 0;
+      retval |= BIT0;
+    }
+  }
+  
+/*------------------------------ P parameters --------------------------------*/
+  /* Wait until the RTC registers be synchronized */
+  RTC_WaitForSynchro(); 
+  /* Disable RTC Registers write-protection */
+  RTC_WriteProtection(DISABLE);
+  
+  /* RTC div output clock source */
+  pclk_mul = DivCLKSource / 6553600.0;
+  
+  data_u32[0] = *NVR_RTC1_P1_P0;
+  data_u32[1] = *NVR_RTC1_P2;
+  data_u32[2] = *NVR_RTC1_P5_P4;
+  data_u32[3] = *NVR_RTC1_P7_P6;
+  /* Calculate checksum1 */
+  checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3]);
+  if (checksum == (*NVR_RTC1_PCHECHSUM)) //checksum1 true
+  {
+    /* Get information */
+    RTCTempData->RTCTempP0 = (int16_t)(data_u32[0]);
+    RTCTempData->RTCTempP1 = (int16_t)(data_u32[0] >> 16);
+    RTCTempData->RTCTempP2 = (int32_t)((int32_t)(data_u32[1]) + (RTCTempData->RTCTempDelta*256));
+    RTCTempData->RTCTempP5 = (int16_t)(data_u32[2] >> 16);
+    RTCTempData->RTCTempP6 = (int16_t)(data_u32[3] * pclk_mul);
+    RTCTempData->RTCTempP7 = (int16_t)(data_u32[3] >> 16);
+  
+    /* Load data to ACPx register */
+    RTC->ACP0 = (uint16_t)(data_u32[0] & 0xFFFF);
+    RTC->ACP1 = (uint16_t)((data_u32[0] >> 16) & 0xFFFF);
+    RTC->ACP2 = (uint32_t)((int32_t)(data_u32[1]) + (RTCTempData->RTCTempDelta*256));
+    RTC->ACP5 = (uint16_t)((data_u32[2] >> 16) & 0xFFFF);
+    RTC->ACP6 = ((uint16_t)((int16_t)(data_u32[3] * pclk_mul)));
+    RTC->ACP7 = (uint16_t)((data_u32[3] >> 16) & 0xFFFF); 
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_P1_P0;
+    data_u32[1] = *NVR_RTC2_P2;
+    data_u32[2] = *NVR_RTC2_P5_P4;
+    data_u32[3] = *NVR_RTC2_P7_P6;
+    /* Calculate checksum2 */
+    checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3]);
+    if (checksum == (*NVR_RTC2_PCHECHSUM)) //checksum2 true 
+    {
+      /* Get information */
+      RTCTempData->RTCTempP0 = (int16_t)(data_u32[0]);
+      RTCTempData->RTCTempP1 = (int16_t)(data_u32[0] >> 16);
+      RTCTempData->RTCTempP2 = (int32_t)((int32_t)(data_u32[1]) + (RTCTempData->RTCTempDelta*256));
+      RTCTempData->RTCTempP5 = (int16_t)(data_u32[2] >> 16);
+      RTCTempData->RTCTempP6 = (int16_t)(data_u32[3] * pclk_mul);
+      RTCTempData->RTCTempP7 = (int16_t)(data_u32[3] >> 16);
+  
+      /* Load data to ACPx register */
+      RTC->ACP0 = (uint16_t)(data_u32[0] & 0xFFFF);
+      RTC->ACP1 = (uint16_t)((data_u32[0] >> 16) & 0xFFFF);
+      RTC->ACP2 = (uint32_t)((int32_t)(data_u32[1]) + (RTCTempData->RTCTempDelta*256));
+      RTC->ACP5 = (uint16_t)((data_u32[2] >> 16) & 0xFFFF);
+      RTC->ACP6 = (uint16_t)((int16_t)(data_u32[3] * pclk_mul));
+      RTC->ACP7 = (uint16_t)((data_u32[3] >> 16) & 0xFFFF);    
+    }
+    else
+    {
+      /* Get information */
+      RTCTempData->RTCTempP0 = 0;
+      RTCTempData->RTCTempP1 = 0;
+      RTCTempData->RTCTempP2 = 0;
+      RTCTempData->RTCTempP5 = 0;
+      RTCTempData->RTCTempP6 = 0;
+      RTCTempData->RTCTempP7 = 0;     
+      retval |= BIT1;
+    }
+  }
+ 
+/*----------------------------------- P4 -------------------------------------*/
+  /* Calculate checksum1 */
+  data_u32[0] = *NVR_RTC1_P4;
+  checksum = ~data_u32[0];
+  if (checksum == (*NVR_RTC1_P4_CHKSUM))//checksum1 true 
+  {
+    /* Get information */
+    RTCTempData->RTCTempP4 = (int16_t)data_u32[0];
+    RTC->ACP4 = data_u32[0];   
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_P4;
+    checksum = ~data_u32[0];
+    if (checksum == (*NVR_RTC2_P4_CHKSUM))//checksum2 true
+    {
+      /* Get information */
+      RTCTempData->RTCTempP4 = (int16_t)data_u32[0];
+      RTC->ACP4 = data_u32[0];      
+    }
+    else
+    {
+      RTCTempData->RTCTempP4 = 0;
+      
+      retval |= BIT2;
+    }
+  }
+
+/*-------------------------- RTC ACKx parameters -----------------------------*/
+  data_u32[0] = *NVR_RTC1_ACK0;
+  data_u32[1] = *NVR_RTC1_ACK1;
+  data_u32[2] = *NVR_RTC1_ACK2;
+  data_u32[3] = *NVR_RTC1_ACK3;
+  data_u32[4] = *NVR_RTC1_ACK4;
+  checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3] + data_u32[4]);
+  if (checksum == (*NVR_RTC1_ACK_CHKSUM))//checksum1 true 
+  {
+    /* Get information */
+    RTCTempData->RTCTempK0 = data_u32[0];
+    RTCTempData->RTCTempK1 = data_u32[1];
+    RTCTempData->RTCTempK2 = data_u32[2];
+    RTCTempData->RTCTempK3 = data_u32[3];
+    RTCTempData->RTCTempK4 = data_u32[4];
+    
+    /* Load data to ACKx register */
+    RTC->ACK[0] = data_u32[0];
+    RTC->ACK[1] = data_u32[1];
+    RTC->ACK[2] = data_u32[2];
+    RTC->ACK[3] = data_u32[3];
+    RTC->ACK[4] = data_u32[4];    
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_ACK0;
+    data_u32[1] = *NVR_RTC2_ACK1;
+    data_u32[2] = *NVR_RTC2_ACK2;
+    data_u32[3] = *NVR_RTC2_ACK3;
+    data_u32[4] = *NVR_RTC2_ACK4;
+    checksum = ~(data_u32[0] + data_u32[1] + data_u32[2] + data_u32[3] + data_u32[4]);
+    if (checksum == (*NVR_RTC2_ACK_CHKSUM))//checksum2 true 
+    {
+      /* Get information */
+      RTCTempData->RTCTempK0 = data_u32[0];
+      RTCTempData->RTCTempK1 = data_u32[1];
+      RTCTempData->RTCTempK2 = data_u32[2];
+      RTCTempData->RTCTempK3 = data_u32[3];
+      RTCTempData->RTCTempK4 = data_u32[4];
+   
+      /* Load data to ACKx register */
+      RTC->ACK[0] = data_u32[0];
+      RTC->ACK[1] = data_u32[1];
+      RTC->ACK[2] = data_u32[2];
+      RTC->ACK[3] = data_u32[3];
+      RTC->ACK[4] = data_u32[4];      
+    }
+    else
+    {
+      /* Get information */
+      RTCTempData->RTCTempK0 = 0;
+      RTCTempData->RTCTempK1 = 0;
+      RTCTempData->RTCTempK2 = 0;
+      RTCTempData->RTCTempK3 = 0;
+      RTCTempData->RTCTempK4 = 0;
+      
+      retval |= BIT3;
+    }
+  }
+  
+/*-------------------------- RTC ACTI parameters -----------------------------*/
+  data_u32[0] = *NVR_RTC1_ACTI;
+  checksum = ~data_u32[0];
+  if (checksum == (*NVR_RTC1_ACTI_CHKSUM))
+  {
+    /* Get information */
+    RTCTempData->RTCACTI = data_u32[0];
+    /* Load data to ACKx register */
+    RTC->ACTI = data_u32[0];
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_ACTI;
+    checksum = ~data_u32[0];  
+    if (checksum == (*NVR_RTC2_ACTI_CHKSUM))
+    {
+      /* Get information */
+      RTCTempData->RTCACTI = data_u32[0];
+      /* Load data to ACKx register */
+      RTC->ACTI = data_u32[0];     
+    }
+    else
+    {
+      /* Get information */
+      RTCTempData->RTCACTI = 0;
+      
+      retval |= BIT4;
+    }
+  }
+  
+/*------------------------- RTC ACKTemp parameters ---------------------------*/
+  data_u32[0] = *NVR_RTC1_ACKTEMP;
+  checksum = ~data_u32[0];
+  if (checksum == (*NVR_RTC1_ACKTEMP_CHKSUM))
+  {
+    /* Get information */
+    RTCTempData->RTCACKTemp = data_u32[0];
+    /* Load data to ACKx register */
+    RTC->ACKTEMP = data_u32[0];    
+  }
+  else
+  {
+    data_u32[0] = *NVR_RTC2_ACKTEMP;
+    checksum = ~data_u32[0];
+    if (checksum == (*NVR_RTC2_ACKTEMP_CHKSUM))
+    {
+      /* Get information */
+      RTCTempData->RTCACKTemp = data_u32[0];
+      /* Load data to ACKx register */
+      RTC->ACKTEMP = data_u32[0];  
+    }
+    else
+    {
+      /* Get information */
+      RTCTempData->RTCACKTemp = 0; 
+      
+      retval |= BIT5;
+    }
+  }
+/*--------------------------------- ACF200 -----------------------------------*/
+  RTCTempData->RTCACF200 = (uint32_t)(int32_t)((pclk_mul * 0x320000));
+  RTC->ACF200 = (uint32_t)(int32_t)((pclk_mul * 0x320000));
+
+  /* Enable RTC Registers write-protection */
+  RTC_WriteProtection(ENABLE);
+  /* Wait until the RTC registers be synchronized */
+  RTC_WaitForSynchro(); 
+  
+  return retval;
+}
+
+/**
+  * @breif  Gets Power/Clock Measure result.
+  * @param  [out]MEAResult   The pointer to struct NVR_PWRMEARES.
+  * @retval 0: Function succeeded.
+            1: Function failed(Checksum error). 
+  */
+uint32_t NVR_GetMISCGain(NVR_MISCGain *MEAResult)
+{
+  uint32_t avcc_data, dvcc_data, bgp_data, rcl_data, rch_data;
+  uint32_t checksum;
+  
+  avcc_data = *NVR_AVCC_MEA1;
+  dvcc_data = *NVR_DVCC_MEA1;
+  bgp_data   = *NVR_BGP_MEA1;
+  rcl_data   = *NVR_RCL_MEA1;
+  rch_data   = *NVR_RCH_MEA1;
+  /* Calculate checksum1 */
+  checksum = ~(avcc_data + dvcc_data + bgp_data + rcl_data + rch_data);
+  if (checksum == (*NVR_PWR_CHECKSUM1))
+  {
+    MEAResult->AVCCMEAResult = avcc_data;
+    MEAResult->DVCCMEAResult = dvcc_data;
+    MEAResult->BGPMEAResult   = bgp_data;
+    MEAResult->RCLMEAResult   = rcl_data;
+    MEAResult->RCHMEAResult   = rch_data;
+    return 0;
+  }
+  
+  avcc_data = *NVR_AVCC_MEA2;
+  dvcc_data = *NVR_DVCC_MEA2;
+  bgp_data   = *NVR_BGP_MEA2;
+  rcl_data   = *NVR_RCL_MEA2;
+  rch_data   = *NVR_RCH_MEA2;
+  /* Calculate checksum2 */
+  checksum = ~(avcc_data + dvcc_data + bgp_data + rcl_data + rch_data);
+  if (checksum == (*NVR_PWR_CHECKSUM2))
+  {
+    MEAResult->AVCCMEAResult = avcc_data;
+    MEAResult->DVCCMEAResult = dvcc_data;
+    MEAResult->BGPMEAResult   = bgp_data;
+    MEAResult->RCLMEAResult   = rcl_data;
+    MEAResult->RCHMEAResult   = rch_data;
+    return 0;    
+  }
+  else
+  {
+    return 1;
+  }
+}
+
+/**
+  * @breif  Gets Chip ID.
+  * @param  [out]ChipID   The pointer to struct NVR_CHIPID.
+  * @retval 0: Function succeeded.
+            1: Function failed(Checksum error). 
+  */
+uint32_t NVR_GetChipID(NVR_CHIPID *ChipID)
+{
+  uint32_t id0, id1;
+  uint32_t checksum;
+  
+  id0 = *NVR_CHIP1_ID0;
+  id1 = *NVR_CHIP1_ID1;
+  /* Calculate checksum1 */
+  checksum = ~(id0 + id1);
+  if (checksum == (*NVR_CHIP1_CHECKSUM))
+  {
+    ChipID->ChipID0 = id0;
+    ChipID->ChipID1 = id1;
+    return 0;  
+  }
+  
+  id0 = *NVR_CHIP2_ID0;
+  id1 = *NVR_CHIP2_ID1;
+  /* Calculate checksum2 */
+  checksum = ~(id0 + id1);
+  if (checksum == (*NVR_CHIP2_CHECKSUM))
+  {
+    ChipID->ChipID0 = id0;
+    ChipID->ChipID1 = id1;
+    return 0;  
+  } 
+  else 
+  {
+    return 1;
+  }
+}
+
+/*********************************** END OF FILE ******************************/

+ 198 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_cortex.c

@@ -0,0 +1,198 @@
+/**
+  ******************************************************************************
+  * @file    lib_cortex.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Cortex module driver.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "lib_cortex.h"
+#include "core_cm0.h"
+
+/**
+  * @brief  1. Clears Pending of a device specific External Interrupt.
+  *         2. Sets Priority of a device specific External Interrupt.
+  *         3. Enables a device specific External Interrupt. 
+  * @param  IRQn: External interrupt number .
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to target.h file)
+  * @param  Priority: The preemption priority for the IRQn channel.
+  *         This parameter can be a value between 0 and 3.
+  *         A lower priority value indicates a higher priority
+  * @retval None
+  */
+void CORTEX_SetPriority_ClearPending_EnableIRQ(IRQn_Type IRQn, uint32_t Priority)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  assert_parameters(IS_CORTEX_NVIC_PREEMPTION_PRIORITY(Priority));
+
+  /* Clear Pending Interrupt */
+  NVIC_ClearPendingIRQ(IRQn);
+  /* Set Interrupt Priority */
+  NVIC_SetPriority(IRQn, Priority);
+  /* Enable Interrupt in NVIC */
+  NVIC_EnableIRQ(IRQn);
+}
+
+/**
+  * @brief  Enables a device specific interrupt in the NVIC interrupt controller.
+  * @note   To configure interrupts priority correctly before calling it.
+  * @param  IRQn External interrupt number.
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval None
+  */
+void CORTEX_NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  /* Enable interrupt in NVIC */
+  NVIC_EnableIRQ(IRQn);
+}
+
+/**
+  * @brief  Disables a device specific interrupt in the NVIC interrupt controller.
+  * @param  IRQn External interrupt number.
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval None
+  */
+void CORTEX_NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  /* Disable interrupt in NVIC */
+  NVIC_DisableIRQ(IRQn); 
+}
+
+/**
+  * @brief  Initiates a system reset request to reset the MCU.
+  * @retval None
+  */
+void CORTEX_NVIC_SystemReset(void)
+{
+  /* System Reset */
+  NVIC_SystemReset();  
+}
+
+/**
+  * @brief  Gets the Pending bit of an interrupt.
+  * @param  IRQn: External interrupt number.
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval 0  Interrupt status is not pending.
+            1  Interrupt status is pending.
+  */
+uint32_t CORTEX_NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  /* Get priority for Cortex-M0 system or device specific interrupts */
+  return NVIC_GetPendingIRQ(IRQn);  
+}
+
+/**
+  * @brief  Sets Pending bit of an external interrupt.
+  * @param  IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval None
+  */
+void CORTEX_NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  /* Set interrupt pending */
+  NVIC_SetPendingIRQ(IRQn);
+}
+
+/**
+  * @brief  Clears the pending bit of an external interrupt.
+  * @param  IRQn External interrupt number.
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval None
+  */
+void CORTEX_NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_DEVICE_IRQ(IRQn));
+  /* Clear interrupt pending */
+  NVIC_ClearPendingIRQ(IRQn);  
+}
+
+/**
+  * @brief  Gets the priority of an interrupt.
+  * @param  IRQn: External interrupt number.
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to the appropriate CMSIS device file (target.h))
+  * @retval Interrupt Priority. Value is aligned automatically to the implemented
+  *         priority bits of the microcontroller.
+  */
+uint32_t CORTEX_NVIC_GetPriority(IRQn_Type IRQn)
+{
+  /* Get priority for Cortex-M0 system or device specific interrupts */
+  return NVIC_GetPriority(IRQn);
+}
+
+/**
+  * @brief  Sets the priority of an interrupt.
+  * @param  IRQn: External interrupt number .
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete target Devices IRQ Channels list, please refer to target.h file)
+  * @param  Priority: The preemption priority for the IRQn channel.
+  *         This parameter can be a value between 0 and 3.
+  *         A lower priority value indicates a higher priority  
+  * @retval None
+  */
+void CORTEX_NVIC_SetPriority(IRQn_Type IRQn, uint32_t Priority)
+{
+  /* Check parameters */
+  assert_parameters(IS_CORTEX_NVIC_PREEMPTION_PRIORITY(Priority));
+  /* Get priority for Cortex-M0 system or device specific interrupts */
+  NVIC_SetPriority(IRQn, Priority);
+}
+
+/**
+  * @brief  Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+  *         Counter is in free running mode to generate periodic interrupts.
+  * @param  TicksNumb: Specifies the ticks Number of ticks between two interrupts.
+  * @retval status:  - 0  Function succeeded.
+  *                  - 1  Function failed.
+  */
+uint32_t CORTEX_SystemTick_Config(uint32_t TicksNum)
+{
+  return SysTick_Config(TicksNum);
+}
+
+/**
+  * @brief  Delay N system-clock cycle.
+  * @param  nClock < 0x1000000
+  * @retval None
+  */
+void CORTEX_Delay_nSysClock(__IO uint32_t nClock)
+{
+  uint32_t tmp;
+  
+  SysTick->LOAD = nClock - 1;
+  SysTick->VAL  = 0; 
+  SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk \
+                 |SysTick_CTRL_ENABLE_Msk;
+  
+  do
+  {
+    tmp = SysTick->CTRL;
+  }
+  while (!(tmp & SysTick_CTRL_COUNTFLAG_Msk));
+  
+  SysTick->CTRL = 0;
+}
+
+/*********************************** END OF FILE ******************************/

+ 76 - 0
bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/system_target.c

@@ -0,0 +1,76 @@
+/**
+  ******************************************************************************
+  * @file    system_target.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   system source file.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#include "target.h"
+
+
+
+/**
+  * @brief  Setup the microcontroller system
+  * @note   This function should be used only after reset.
+  * @param  None
+  * @retval None
+  */
+void SystemInit(void)
+{
+  volatile uint32_t i;
+  uint32_t tmp[3];
+
+  ANA->REG0 = 0x30;
+  ANA->REG4 = 0x04;
+  ANA->REG7 = 0x84;
+  ANA->REGA = 0x02;
+  while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+  ANA->ADCCTRL0 = 0x300000;
+  ANA->ADCCTRL1 = 0xC2;
+  ANA->ADCCTRL2 = 0x8014;
+  LCD->CTRL = 0x84;
+
+  tmp[0] = 0x599A599A;
+  tmp[1] = 0x78000000;
+  tmp[2] = 0x80000000;
+  RTC_WriteRegisters((uint32_t)&RTC->ADCUCALK, tmp, 3);
+}
+
+/**
+  * @brief  Initializes registers.
+  * @param  None
+  * @retval None
+  */
+void SystemUpdate(void)
+{
+  uint32_t tmp[3];
+  
+  ANA->REG0 &= ~0xCE;
+  ANA->REG0 |= 0x30;
+  ANA->REG1 &= ~0x7F;
+  ANA->REG2 &= ~0xC0;
+  ANA->REG3 &= ~0x01;
+  ANA->REG4 |= 0x04;
+  ANA->REG4 &= ~0xFB;
+  ANA->REG5 &= ~0xB0;
+  ANA->REG6 &= ~0x3E;
+  ANA->REG7 |= 0x84;
+  ANA->REG7 &= ~0x7B;
+  ANA->REG8 &= ~0x0C;
+  ANA->REGA |= 0x02;
+  ANA->REGA &= ~0x7D;
+  
+  tmp[0] = 0x599A599A;
+  tmp[1] = RTC->ADCMACTL;
+  tmp[1] &= ~0XFF080000;
+  tmp[1] |= 0x78000000;
+  tmp[2] = 0x80000000;
+  RTC_WriteRegisters((uint32_t)&RTC->ADCUCALK, tmp, 3);
+}
+
+/*********************************** END OF FILE ******************************/

+ 894 - 0
bsp/v85xxp/Libraries/CMSIS/cmsis_armcc.h

@@ -0,0 +1,894 @@
+/**************************************************************************//**
+ * @file     cmsis_armcc.h
+ * @brief    CMSIS compiler ARMCC (Arm Compiler 5) header file
+ * @version  V5.1.0
+ * @date     08. May 2019
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CMSIS_ARMCC_H
+#define __CMSIS_ARMCC_H
+
+
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)
+  #error "Please use Arm Compiler Toolchain V4.0.677 or later!"
+#endif
+
+/* CMSIS compiler control architecture macros */
+#if ((defined (__TARGET_ARCH_6_M  ) && (__TARGET_ARCH_6_M   == 1)) || \
+     (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M  == 1))   )
+  #define __ARM_ARCH_6M__           1
+#endif
+
+#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M  == 1))
+  #define __ARM_ARCH_7M__           1
+#endif
+
+#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1))
+  #define __ARM_ARCH_7EM__          1
+#endif
+
+  /* __ARM_ARCH_8M_BASE__  not applicable */
+  /* __ARM_ARCH_8M_MAIN__  not applicable */
+
+/* CMSIS compiler control DSP macros */
+#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
+  #define __ARM_FEATURE_DSP         1
+#endif
+
+/* CMSIS compiler specific defines */
+#ifndef   __ASM
+  #define __ASM                                  __asm
+#endif
+#ifndef   __INLINE
+  #define __INLINE                               __inline
+#endif
+#ifndef   __STATIC_INLINE
+  #define __STATIC_INLINE                        static __inline
+#endif
+#ifndef   __STATIC_FORCEINLINE                 
+  #define __STATIC_FORCEINLINE                   static __forceinline
+#endif           
+#ifndef   __NO_RETURN
+  #define __NO_RETURN                            __declspec(noreturn)
+#endif
+#ifndef   __USED
+  #define __USED                                 __attribute__((used))
+#endif
+#ifndef   __WEAK
+  #define __WEAK                                 __attribute__((weak))
+#endif
+#ifndef   __PACKED
+  #define __PACKED                               __attribute__((packed))
+#endif
+#ifndef   __PACKED_STRUCT
+  #define __PACKED_STRUCT                        __packed struct
+#endif
+#ifndef   __PACKED_UNION
+  #define __PACKED_UNION                         __packed union
+#endif
+#ifndef   __UNALIGNED_UINT32        /* deprecated */
+  #define __UNALIGNED_UINT32(x)                  (*((__packed uint32_t *)(x)))
+#endif
+#ifndef   __UNALIGNED_UINT16_WRITE
+  #define __UNALIGNED_UINT16_WRITE(addr, val)    ((*((__packed uint16_t *)(addr))) = (val))
+#endif
+#ifndef   __UNALIGNED_UINT16_READ
+  #define __UNALIGNED_UINT16_READ(addr)          (*((const __packed uint16_t *)(addr)))
+#endif
+#ifndef   __UNALIGNED_UINT32_WRITE
+  #define __UNALIGNED_UINT32_WRITE(addr, val)    ((*((__packed uint32_t *)(addr))) = (val))
+#endif
+#ifndef   __UNALIGNED_UINT32_READ
+  #define __UNALIGNED_UINT32_READ(addr)          (*((const __packed uint32_t *)(addr)))
+#endif
+#ifndef   __ALIGNED
+  #define __ALIGNED(x)                           __attribute__((aligned(x)))
+#endif
+#ifndef   __RESTRICT
+  #define __RESTRICT                             __restrict
+#endif
+#ifndef   __COMPILER_BARRIER
+  #define __COMPILER_BARRIER()                   __memory_changed()
+#endif
+
+/* #########################  Startup and Lowlevel Init  ######################## */
+
+#ifndef __PROGRAM_START
+#define __PROGRAM_START           __main
+#endif
+
+#ifndef __INITIAL_SP
+#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit
+#endif
+
+#ifndef __STACK_LIMIT
+#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base
+#endif
+
+#ifndef __VECTOR_TABLE
+#define __VECTOR_TABLE            __Vectors
+#endif
+
+#ifndef __VECTOR_TABLE_ATTRIBUTE
+#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section("RESET")))
+#endif
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+/**
+  \brief   Enable IRQ Interrupts
+  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+/* intrinsic void __enable_irq();     */
+
+
+/**
+  \brief   Disable IRQ Interrupts
+  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+/* intrinsic void __disable_irq();    */
+
+/**
+  \brief   Get Control Register
+  \details Returns the content of the Control Register.
+  \return               Control Register value
+ */
+__STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+  register uint32_t __regControl         __ASM("control");
+  return(__regControl);
+}
+
+
+/**
+  \brief   Set Control Register
+  \details Writes the given value to the Control Register.
+  \param [in]    control  Control Register value to set
+ */
+__STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+  register uint32_t __regControl         __ASM("control");
+  __regControl = control;
+}
+
+
+/**
+  \brief   Get IPSR Register
+  \details Returns the content of the IPSR Register.
+  \return               IPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_IPSR(void)
+{
+  register uint32_t __regIPSR          __ASM("ipsr");
+  return(__regIPSR);
+}
+
+
+/**
+  \brief   Get APSR Register
+  \details Returns the content of the APSR Register.
+  \return               APSR Register value
+ */
+__STATIC_INLINE uint32_t __get_APSR(void)
+{
+  register uint32_t __regAPSR          __ASM("apsr");
+  return(__regAPSR);
+}
+
+
+/**
+  \brief   Get xPSR Register
+  \details Returns the content of the xPSR Register.
+  \return               xPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_xPSR(void)
+{
+  register uint32_t __regXPSR          __ASM("xpsr");
+  return(__regXPSR);
+}
+
+
+/**
+  \brief   Get Process Stack Pointer
+  \details Returns the current value of the Process Stack Pointer (PSP).
+  \return               PSP Register value
+ */
+__STATIC_INLINE uint32_t __get_PSP(void)
+{
+  register uint32_t __regProcessStackPointer  __ASM("psp");
+  return(__regProcessStackPointer);
+}
+
+
+/**
+  \brief   Set Process Stack Pointer
+  \details Assigns the given value to the Process Stack Pointer (PSP).
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+  register uint32_t __regProcessStackPointer  __ASM("psp");
+  __regProcessStackPointer = topOfProcStack;
+}
+
+
+/**
+  \brief   Get Main Stack Pointer
+  \details Returns the current value of the Main Stack Pointer (MSP).
+  \return               MSP Register value
+ */
+__STATIC_INLINE uint32_t __get_MSP(void)
+{
+  register uint32_t __regMainStackPointer     __ASM("msp");
+  return(__regMainStackPointer);
+}
+
+
+/**
+  \brief   Set Main Stack Pointer
+  \details Assigns the given value to the Main Stack Pointer (MSP).
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+  register uint32_t __regMainStackPointer     __ASM("msp");
+  __regMainStackPointer = topOfMainStack;
+}
+
+
+/**
+  \brief   Get Priority Mask
+  \details Returns the current state of the priority mask bit from the Priority Mask Register.
+  \return               Priority Mask value
+ */
+__STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+  register uint32_t __regPriMask         __ASM("primask");
+  return(__regPriMask);
+}
+
+
+/**
+  \brief   Set Priority Mask
+  \details Assigns the given value to the Priority Mask Register.
+  \param [in]    priMask  Priority Mask
+ */
+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+  register uint32_t __regPriMask         __ASM("primask");
+  __regPriMask = (priMask);
+}
+
+
+#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
+
+/**
+  \brief   Enable FIQ
+  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+#define __enable_fault_irq                __enable_fiq
+
+
+/**
+  \brief   Disable FIQ
+  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+#define __disable_fault_irq               __disable_fiq
+
+
+/**
+  \brief   Get Base Priority
+  \details Returns the current value of the Base Priority register.
+  \return               Base Priority register value
+ */
+__STATIC_INLINE uint32_t  __get_BASEPRI(void)
+{
+  register uint32_t __regBasePri         __ASM("basepri");
+  return(__regBasePri);
+}
+
+
+/**
+  \brief   Set Base Priority
+  \details Assigns the given value to the Base Priority register.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
+{
+  register uint32_t __regBasePri         __ASM("basepri");
+  __regBasePri = (basePri & 0xFFU);
+}
+
+
+/**
+  \brief   Set Base Priority with condition
+  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
+           or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)
+{
+  register uint32_t __regBasePriMax      __ASM("basepri_max");
+  __regBasePriMax = (basePri & 0xFFU);
+}
+
+
+/**
+  \brief   Get Fault Mask
+  \details Returns the current value of the Fault Mask register.
+  \return               Fault Mask register value
+ */
+__STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+  register uint32_t __regFaultMask       __ASM("faultmask");
+  return(__regFaultMask);
+}
+
+
+/**
+  \brief   Set Fault Mask
+  \details Assigns the given value to the Fault Mask register.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+  register uint32_t __regFaultMask       __ASM("faultmask");
+  __regFaultMask = (faultMask & (uint32_t)1U);
+}
+
+#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
+
+
+/**
+  \brief   Get FPSCR
+  \details Returns the current value of the Floating Point Status/Control register.
+  \return               Floating Point Status/Control register value
+ */
+__STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
+     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
+  register uint32_t __regfpscr         __ASM("fpscr");
+  return(__regfpscr);
+#else
+   return(0U);
+#endif
+}
+
+
+/**
+  \brief   Set FPSCR
+  \details Assigns the given value to the Floating Point Status/Control register.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
+     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
+  register uint32_t __regfpscr         __ASM("fpscr");
+  __regfpscr = (fpscr);
+#else
+  (void)fpscr;
+#endif
+}
+
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/**
+  \brief   No Operation
+  \details No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+#define __NOP                             __nop
+
+
+/**
+  \brief   Wait For Interrupt
+  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
+ */
+#define __WFI                             __wfi
+
+
+/**
+  \brief   Wait For Event
+  \details Wait For Event is a hint instruction that permits the processor to enter
+           a low-power state until one of a number of events occurs.
+ */
+#define __WFE                             __wfe
+
+
+/**
+  \brief   Send Event
+  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+#define __SEV                             __sev
+
+
+/**
+  \brief   Instruction Synchronization Barrier
+  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
+           so that all instructions following the ISB are fetched from cache or memory,
+           after the instruction has been completed.
+ */
+#define __ISB() do {\
+                   __schedule_barrier();\
+                   __isb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+/**
+  \brief   Data Synchronization Barrier
+  \details Acts as a special kind of Data Memory Barrier.
+           It completes when all explicit memory accesses before this instruction complete.
+ */
+#define __DSB() do {\
+                   __schedule_barrier();\
+                   __dsb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+/**
+  \brief   Data Memory Barrier
+  \details Ensures the apparent order of the explicit memory operations before
+           and after the instruction, without ensuring their completion.
+ */
+#define __DMB() do {\
+                   __schedule_barrier();\
+                   __dmb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+                  
+/**
+  \brief   Reverse byte order (32 bit)
+  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#define __REV                             __rev
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
+{
+  rev16 r0, r0
+  bx lr
+}
+#endif
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)
+{
+  revsh r0, r0
+  bx lr
+}
+#endif
+
+
+/**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    op1  Value to rotate
+  \param [in]    op2  Number of Bits to rotate
+  \return               Rotated value
+ */
+#define __ROR                             __ror
+
+
+/**
+  \brief   Breakpoint
+  \details Causes the processor to enter Debug state.
+           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
+  \param [in]    value  is ignored by the processor.
+                 If required, a debugger can use it to store additional information about the breakpoint.
+ */
+#define __BKPT(value)                       __breakpoint(value)
+
+
+/**
+  \brief   Reverse bit order of value
+  \details Reverses the bit order of the given value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
+  #define __RBIT                          __rbit
+#else
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+{
+  uint32_t result;
+  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */
+
+  result = value;                      /* r will be reversed bits of v; first get LSB of v */
+  for (value >>= 1U; value != 0U; value >>= 1U)
+  {
+    result <<= 1U;
+    result |= value & 1U;
+    s--;
+  }
+  result <<= s;                        /* shift when v's highest bits are zero */
+  return result;
+}
+#endif
+
+
+/**
+  \brief   Count leading zeros
+  \details Counts the number of leading zeros of a data value.
+  \param [in]  value  Value to count the leading zeros
+  \return             number of leading zeros in value
+ */
+#define __CLZ                             __clz
+
+
+#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
+
+/**
+  \brief   LDR Exclusive (8 bit)
+  \details Executes a exclusive LDR instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))
+#else
+  #define __LDREXB(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   LDR Exclusive (16 bit)
+  \details Executes a exclusive LDR instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))
+#else
+  #define __LDREXH(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   LDR Exclusive (32 bit)
+  \details Executes a exclusive LDR instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))
+#else
+  #define __LDREXW(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (8 bit)
+  \details Executes a exclusive STR instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXB(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXB(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (16 bit)
+  \details Executes a exclusive STR instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXH(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXH(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (32 bit)
+  \details Executes a exclusive STR instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXW(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXW(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   Remove the exclusive lock
+  \details Removes the exclusive lock which is created by LDREX.
+ */
+#define __CLREX                           __clrex
+
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+#define __SSAT                            __ssat
+
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+#define __USAT                            __usat
+
+
+/**
+  \brief   Rotate Right with Extend (32 bit)
+  \details Moves each bit of a bitstring right by one bit.
+           The carry input is shifted in at the left end of the bitstring.
+  \param [in]    value  Value to rotate
+  \return               Rotated value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)
+{
+  rrx r0, r0
+  bx lr
+}
+#endif
+
+
+/**
+  \brief   LDRT Unprivileged (8 bit)
+  \details Executes a Unprivileged LDRT instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))
+
+
+/**
+  \brief   LDRT Unprivileged (16 bit)
+  \details Executes a Unprivileged LDRT instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))
+
+
+/**
+  \brief   LDRT Unprivileged (32 bit)
+  \details Executes a Unprivileged LDRT instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))
+
+
+/**
+  \brief   STRT Unprivileged (8 bit)
+  \details Executes a Unprivileged STRT instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRBT(value, ptr)               __strt(value, ptr)
+
+
+/**
+  \brief   STRT Unprivileged (16 bit)
+  \details Executes a Unprivileged STRT instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRHT(value, ptr)               __strt(value, ptr)
+
+
+/**
+  \brief   STRT Unprivileged (32 bit)
+  \details Executes a Unprivileged STRT instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRT(value, ptr)                __strt(value, ptr)
+
+#else  /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)
+{
+  if ((sat >= 1U) && (sat <= 32U))
+  {
+    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
+    const int32_t min = -1 - max ;
+    if (val > max)
+    {
+      return max;
+    }
+    else if (val < min)
+    {
+      return min;
+    }
+  }
+  return val;
+}
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)
+{
+  if (sat <= 31U)
+  {
+    const uint32_t max = ((1U << sat) - 1U);
+    if (val > (int32_t)max)
+    {
+      return max;
+    }
+    else if (val < 0)
+    {
+      return 0U;
+    }
+  }
+  return (uint32_t)val;
+}
+
+#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
+           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
+
+#define __SADD8                           __sadd8
+#define __QADD8                           __qadd8
+#define __SHADD8                          __shadd8
+#define __UADD8                           __uadd8
+#define __UQADD8                          __uqadd8
+#define __UHADD8                          __uhadd8
+#define __SSUB8                           __ssub8
+#define __QSUB8                           __qsub8
+#define __SHSUB8                          __shsub8
+#define __USUB8                           __usub8
+#define __UQSUB8                          __uqsub8
+#define __UHSUB8                          __uhsub8
+#define __SADD16                          __sadd16
+#define __QADD16                          __qadd16
+#define __SHADD16                         __shadd16
+#define __UADD16                          __uadd16
+#define __UQADD16                         __uqadd16
+#define __UHADD16                         __uhadd16
+#define __SSUB16                          __ssub16
+#define __QSUB16                          __qsub16
+#define __SHSUB16                         __shsub16
+#define __USUB16                          __usub16
+#define __UQSUB16                         __uqsub16
+#define __UHSUB16                         __uhsub16
+#define __SASX                            __sasx
+#define __QASX                            __qasx
+#define __SHASX                           __shasx
+#define __UASX                            __uasx
+#define __UQASX                           __uqasx
+#define __UHASX                           __uhasx
+#define __SSAX                            __ssax
+#define __QSAX                            __qsax
+#define __SHSAX                           __shsax
+#define __USAX                            __usax
+#define __UQSAX                           __uqsax
+#define __UHSAX                           __uhsax
+#define __USAD8                           __usad8
+#define __USADA8                          __usada8
+#define __SSAT16                          __ssat16
+#define __USAT16                          __usat16
+#define __UXTB16                          __uxtb16
+#define __UXTAB16                         __uxtab16
+#define __SXTB16                          __sxtb16
+#define __SXTAB16                         __sxtab16
+#define __SMUAD                           __smuad
+#define __SMUADX                          __smuadx
+#define __SMLAD                           __smlad
+#define __SMLADX                          __smladx
+#define __SMLALD                          __smlald
+#define __SMLALDX                         __smlaldx
+#define __SMUSD                           __smusd
+#define __SMUSDX                          __smusdx
+#define __SMLSD                           __smlsd
+#define __SMLSDX                          __smlsdx
+#define __SMLSLD                          __smlsld
+#define __SMLSLDX                         __smlsldx
+#define __SEL                             __sel
+#define __QADD                            __qadd
+#define __QSUB                            __qsub
+
+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
+
+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
+
+#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \
+                                                      ((int64_t)(ARG3) << 32U)     ) >> 32U))
+
+#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#endif /* __CMSIS_ARMCC_H */

+ 266 - 0
bsp/v85xxp/Libraries/CMSIS/cmsis_compiler.h

@@ -0,0 +1,266 @@
+/**************************************************************************//**
+ * @file     cmsis_compiler.h
+ * @brief    CMSIS compiler generic header file
+ * @version  V5.0.4
+ * @date     10. January 2018
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CMSIS_COMPILER_H
+#define __CMSIS_COMPILER_H
+
+#include <stdint.h>
+
+/*
+ * Arm Compiler 4/5
+ */
+#if   defined ( __CC_ARM )
+  #include "cmsis_armcc.h"
+
+
+/*
+ * Arm Compiler 6 (armclang)
+ */
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #include "cmsis_armclang.h"
+
+
+/*
+ * GNU Compiler
+ */
+#elif defined ( __GNUC__ )
+  #include "cmsis_gcc.h"
+
+
+/*
+ * IAR Compiler
+ */
+#elif defined ( __ICCARM__ )
+  #include <cmsis_iccarm.h>
+
+
+/*
+ * TI Arm Compiler
+ */
+#elif defined ( __TI_ARM__ )
+  #include <cmsis_ccs.h>
+
+  #ifndef   __ASM
+    #define __ASM                                  __asm
+  #endif
+  #ifndef   __INLINE
+    #define __INLINE                               inline
+  #endif
+  #ifndef   __STATIC_INLINE
+    #define __STATIC_INLINE                        static inline
+  #endif
+  #ifndef   __STATIC_FORCEINLINE
+    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
+  #endif
+  #ifndef   __NO_RETURN
+    #define __NO_RETURN                            __attribute__((noreturn))
+  #endif
+  #ifndef   __USED
+    #define __USED                                 __attribute__((used))
+  #endif
+  #ifndef   __WEAK
+    #define __WEAK                                 __attribute__((weak))
+  #endif
+  #ifndef   __PACKED
+    #define __PACKED                               __attribute__((packed))
+  #endif
+  #ifndef   __PACKED_STRUCT
+    #define __PACKED_STRUCT                        struct __attribute__((packed))
+  #endif
+  #ifndef   __PACKED_UNION
+    #define __PACKED_UNION                         union __attribute__((packed))
+  #endif
+  #ifndef   __UNALIGNED_UINT32        /* deprecated */
+    struct __attribute__((packed)) T_UINT32 { uint32_t v; };
+    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT16_WRITE
+    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
+    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT16_READ
+    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
+    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT32_WRITE
+    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
+    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT32_READ
+    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
+    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __ALIGNED
+    #define __ALIGNED(x)                           __attribute__((aligned(x)))
+  #endif
+  #ifndef   __RESTRICT
+    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
+    #define __RESTRICT
+  #endif
+
+
+/*
+ * TASKING Compiler
+ */
+#elif defined ( __TASKING__ )
+  /*
+   * The CMSIS functions have been implemented as intrinsics in the compiler.
+   * Please use "carm -?i" to get an up to date list of all intrinsics,
+   * Including the CMSIS ones.
+   */
+
+  #ifndef   __ASM
+    #define __ASM                                  __asm
+  #endif
+  #ifndef   __INLINE
+    #define __INLINE                               inline
+  #endif
+  #ifndef   __STATIC_INLINE
+    #define __STATIC_INLINE                        static inline
+  #endif
+  #ifndef   __STATIC_FORCEINLINE
+    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
+  #endif
+  #ifndef   __NO_RETURN
+    #define __NO_RETURN                            __attribute__((noreturn))
+  #endif
+  #ifndef   __USED
+    #define __USED                                 __attribute__((used))
+  #endif
+  #ifndef   __WEAK
+    #define __WEAK                                 __attribute__((weak))
+  #endif
+  #ifndef   __PACKED
+    #define __PACKED                               __packed__
+  #endif
+  #ifndef   __PACKED_STRUCT
+    #define __PACKED_STRUCT                        struct __packed__
+  #endif
+  #ifndef   __PACKED_UNION
+    #define __PACKED_UNION                         union __packed__
+  #endif
+  #ifndef   __UNALIGNED_UINT32        /* deprecated */
+    struct __packed__ T_UINT32 { uint32_t v; };
+    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT16_WRITE
+    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
+    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT16_READ
+    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
+    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT32_WRITE
+    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
+    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT32_READ
+    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
+    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __ALIGNED
+    #define __ALIGNED(x)              __align(x)
+  #endif
+  #ifndef   __RESTRICT
+    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
+    #define __RESTRICT
+  #endif
+
+
+/*
+ * COSMIC Compiler
+ */
+#elif defined ( __CSMC__ )
+   #include <cmsis_csm.h>
+
+ #ifndef   __ASM
+    #define __ASM                                  _asm
+  #endif
+  #ifndef   __INLINE
+    #define __INLINE                               inline
+  #endif
+  #ifndef   __STATIC_INLINE
+    #define __STATIC_INLINE                        static inline
+  #endif
+  #ifndef   __STATIC_FORCEINLINE
+    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
+  #endif
+  #ifndef   __NO_RETURN
+    // NO RETURN is automatically detected hence no warning here
+    #define __NO_RETURN
+  #endif
+  #ifndef   __USED
+    #warning No compiler specific solution for __USED. __USED is ignored.
+    #define __USED
+  #endif
+  #ifndef   __WEAK
+    #define __WEAK                                 __weak
+  #endif
+  #ifndef   __PACKED
+    #define __PACKED                               @packed
+  #endif
+  #ifndef   __PACKED_STRUCT
+    #define __PACKED_STRUCT                        @packed struct
+  #endif
+  #ifndef   __PACKED_UNION
+    #define __PACKED_UNION                         @packed union
+  #endif
+  #ifndef   __UNALIGNED_UINT32        /* deprecated */
+    @packed struct T_UINT32 { uint32_t v; };
+    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT16_WRITE
+    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
+    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT16_READ
+    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
+    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __UNALIGNED_UINT32_WRITE
+    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
+    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
+  #endif
+  #ifndef   __UNALIGNED_UINT32_READ
+    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
+    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
+  #endif
+  #ifndef   __ALIGNED
+    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.
+    #define __ALIGNED(x)
+  #endif
+  #ifndef   __RESTRICT
+    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
+    #define __RESTRICT
+  #endif
+
+
+#else
+  #error Unknown compiler.
+#endif
+
+
+#endif /* __CMSIS_COMPILER_H */
+

+ 2085 - 0
bsp/v85xxp/Libraries/CMSIS/cmsis_gcc.h

@@ -0,0 +1,2085 @@
+/**************************************************************************//**
+ * @file     cmsis_gcc.h
+ * @brief    CMSIS compiler GCC header file
+ * @version  V5.0.4
+ * @date     09. April 2018
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CMSIS_GCC_H
+#define __CMSIS_GCC_H
+
+/* ignore some GCC warnings */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+
+/* Fallback for __has_builtin */
+#ifndef __has_builtin
+  #define __has_builtin(x) (0)
+#endif
+
+/* CMSIS compiler specific defines */
+#ifndef   __ASM
+  #define __ASM                                  __asm
+#endif
+#ifndef   __INLINE
+  #define __INLINE                               inline
+#endif
+#ifndef   __STATIC_INLINE
+  #define __STATIC_INLINE                        static inline
+#endif
+#ifndef   __STATIC_FORCEINLINE                 
+  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline
+#endif                                           
+#ifndef   __NO_RETURN
+  #define __NO_RETURN                            __attribute__((__noreturn__))
+#endif
+#ifndef   __USED
+  #define __USED                                 __attribute__((used))
+#endif
+#ifndef   __WEAK
+  #define __WEAK                                 __attribute__((weak))
+#endif
+#ifndef   __PACKED
+  #define __PACKED                               __attribute__((packed, aligned(1)))
+#endif
+#ifndef   __PACKED_STRUCT
+  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
+#endif
+#ifndef   __PACKED_UNION
+  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
+#endif
+#ifndef   __UNALIGNED_UINT32        /* deprecated */
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wpacked"
+  #pragma GCC diagnostic ignored "-Wattributes"
+  struct __attribute__((packed)) T_UINT32 { uint32_t v; };
+  #pragma GCC diagnostic pop
+  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
+#endif
+#ifndef   __UNALIGNED_UINT16_WRITE
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wpacked"
+  #pragma GCC diagnostic ignored "-Wattributes"
+  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
+  #pragma GCC diagnostic pop
+  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
+#endif
+#ifndef   __UNALIGNED_UINT16_READ
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wpacked"
+  #pragma GCC diagnostic ignored "-Wattributes"
+  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
+  #pragma GCC diagnostic pop
+  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
+#endif
+#ifndef   __UNALIGNED_UINT32_WRITE
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wpacked"
+  #pragma GCC diagnostic ignored "-Wattributes"
+  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
+  #pragma GCC diagnostic pop
+  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
+#endif
+#ifndef   __UNALIGNED_UINT32_READ
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wpacked"
+  #pragma GCC diagnostic ignored "-Wattributes"
+  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
+  #pragma GCC diagnostic pop
+  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
+#endif
+#ifndef   __ALIGNED
+  #define __ALIGNED(x)                           __attribute__((aligned(x)))
+#endif
+#ifndef   __RESTRICT
+  #define __RESTRICT                             __restrict
+#endif
+
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+/**
+  \brief   Enable IRQ Interrupts
+  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__STATIC_FORCEINLINE void __enable_irq(void)
+{
+  __ASM volatile ("cpsie i" : : : "memory");
+}
+
+
+/**
+  \brief   Disable IRQ Interrupts
+  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__STATIC_FORCEINLINE void __disable_irq(void)
+{
+  __ASM volatile ("cpsid i" : : : "memory");
+}
+
+
+/**
+  \brief   Get Control Register
+  \details Returns the content of the Control Register.
+  \return               Control Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, control" : "=r" (result) );
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Control Register (non-secure)
+  \details Returns the content of the non-secure Control Register when in secure mode.
+  \return               non-secure Control Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Control Register
+  \details Writes the given value to the Control Register.
+  \param [in]    control  Control Register value to set
+ */
+__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
+{
+  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Control Register (non-secure)
+  \details Writes the given value to the non-secure Control Register when in secure state.
+  \param [in]    control  Control Register value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
+{
+  __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
+}
+#endif
+
+
+/**
+  \brief   Get IPSR Register
+  \details Returns the content of the IPSR Register.
+  \return               IPSR Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get APSR Register
+  \details Returns the content of the APSR Register.
+  \return               APSR Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_APSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get xPSR Register
+  \details Returns the content of the xPSR Register.
+  \return               xPSR Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_xPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get Process Stack Pointer
+  \details Returns the current value of the Process Stack Pointer (PSP).
+  \return               PSP Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_PSP(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, psp"  : "=r" (result) );
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Process Stack Pointer (non-secure)
+  \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.
+  \return               PSP Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, psp_ns"  : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Process Stack Pointer
+  \details Assigns the given value to the Process Stack Pointer (PSP).
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
+{
+  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Process Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
+{
+  __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
+}
+#endif
+
+
+/**
+  \brief   Get Main Stack Pointer
+  \details Returns the current value of the Main Stack Pointer (MSP).
+  \return               MSP Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_MSP(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, msp" : "=r" (result) );
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Main Stack Pointer (non-secure)
+  \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.
+  \return               MSP Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Main Stack Pointer
+  \details Assigns the given value to the Main Stack Pointer (MSP).
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
+{
+  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Main Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
+{
+  __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
+}
+#endif
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Stack Pointer (non-secure)
+  \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
+  \return               SP Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
+  \param [in]    topOfStack  Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
+{
+  __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
+}
+#endif
+
+
+/**
+  \brief   Get Priority Mask
+  \details Returns the current state of the priority mask bit from the Priority Mask Register.
+  \return               Priority Mask value
+ */
+__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Priority Mask (non-secure)
+  \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.
+  \return               Priority Mask value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory");
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Priority Mask
+  \details Assigns the given value to the Priority Mask Register.
+  \param [in]    priMask  Priority Mask
+ */
+__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
+{
+  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Priority Mask (non-secure)
+  \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
+  \param [in]    priMask  Priority Mask
+ */
+__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
+{
+  __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
+}
+#endif
+
+
+#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
+/**
+  \brief   Enable FIQ
+  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__STATIC_FORCEINLINE void __enable_fault_irq(void)
+{
+  __ASM volatile ("cpsie f" : : : "memory");
+}
+
+
+/**
+  \brief   Disable FIQ
+  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__STATIC_FORCEINLINE void __disable_fault_irq(void)
+{
+  __ASM volatile ("cpsid f" : : : "memory");
+}
+
+
+/**
+  \brief   Get Base Priority
+  \details Returns the current value of the Base Priority register.
+  \return               Base Priority register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Base Priority (non-secure)
+  \details Returns the current value of the non-secure Base Priority register when in secure state.
+  \return               Base Priority register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Base Priority
+  \details Assigns the given value to the Base Priority register.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
+{
+  __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Base Priority (non-secure)
+  \details Assigns the given value to the non-secure Base Priority register when in secure state.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
+{
+  __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
+}
+#endif
+
+
+/**
+  \brief   Set Base Priority with condition
+  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
+           or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
+{
+  __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
+}
+
+
+/**
+  \brief   Get Fault Mask
+  \details Returns the current value of the Fault Mask register.
+  \return               Fault Mask register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
+  return(result);
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Fault Mask (non-secure)
+  \details Returns the current value of the non-secure Fault Mask register when in secure state.
+  \return               Fault Mask register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Fault Mask
+  \details Assigns the given value to the Fault Mask register.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Set Fault Mask (non-secure)
+  \details Assigns the given value to the non-secure Fault Mask register when in secure state.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
+{
+  __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
+}
+#endif
+
+#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
+
+
+#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
+
+/**
+  \brief   Get Process Stack Pointer Limit
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence zero is returned always in non-secure
+  mode.
+  
+  \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
+  \return               PSPLIM Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
+    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
+    // without main extensions, the non-secure PSPLIM is RAZ/WI
+  return 0U;
+#else
+  uint32_t result;
+  __ASM volatile ("MRS %0, psplim"  : "=r" (result) );
+  return result;
+#endif
+}
+
+#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
+/**
+  \brief   Get Process Stack Pointer Limit (non-secure)
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence zero is returned always.
+
+  \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
+  \return               PSPLIM Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
+  // without main extensions, the non-secure PSPLIM is RAZ/WI
+  return 0U;
+#else
+  uint32_t result;
+  __ASM volatile ("MRS %0, psplim_ns"  : "=r" (result) );
+  return result;
+#endif
+}
+#endif
+
+
+/**
+  \brief   Set Process Stack Pointer Limit
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence the write is silently ignored in non-secure
+  mode.
+  
+  \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
+  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
+ */
+__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
+    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
+  // without main extensions, the non-secure PSPLIM is RAZ/WI
+  (void)ProcStackPtrLimit;
+#else
+  __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
+#endif
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
+/**
+  \brief   Set Process Stack Pointer (non-secure)
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence the write is silently ignored.
+
+  \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
+  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
+  // without main extensions, the non-secure PSPLIM is RAZ/WI
+  (void)ProcStackPtrLimit;
+#else
+  __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
+#endif
+}
+#endif
+
+
+/**
+  \brief   Get Main Stack Pointer Limit
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence zero is returned always in non-secure
+  mode.
+
+  \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
+  \return               MSPLIM Register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
+    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
+  // without main extensions, the non-secure MSPLIM is RAZ/WI
+  return 0U;
+#else
+  uint32_t result;
+  __ASM volatile ("MRS %0, msplim" : "=r" (result) );
+  return result;
+#endif
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
+/**
+  \brief   Get Main Stack Pointer Limit (non-secure)
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence zero is returned always.
+
+  \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.
+  \return               MSPLIM Register value
+ */
+__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
+  // without main extensions, the non-secure MSPLIM is RAZ/WI
+  return 0U;
+#else
+  uint32_t result;
+  __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
+  return result;
+#endif
+}
+#endif
+
+
+/**
+  \brief   Set Main Stack Pointer Limit
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence the write is silently ignored in non-secure
+  mode.
+
+  \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
+  \param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set
+ */
+__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
+    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
+  // without main extensions, the non-secure MSPLIM is RAZ/WI
+  (void)MainStackPtrLimit;
+#else
+  __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
+#endif
+}
+
+
+#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
+/**
+  \brief   Set Main Stack Pointer Limit (non-secure)
+  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
+  Stack Pointer Limit register hence the write is silently ignored.
+
+  \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.
+  \param [in]    MainStackPtrLimit  Main Stack Pointer value to set
+ */
+__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
+{
+#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
+  // without main extensions, the non-secure MSPLIM is RAZ/WI
+  (void)MainStackPtrLimit;
+#else
+  __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
+#endif
+}
+#endif
+
+#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
+
+
+/**
+  \brief   Get FPSCR
+  \details Returns the current value of the Floating Point Status/Control register.
+  \return               Floating Point Status/Control register value
+ */
+__STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
+{
+#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
+     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
+#if __has_builtin(__builtin_arm_get_fpscr) 
+// Re-enable using built-in when GCC has been fixed
+// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
+  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
+  return __builtin_arm_get_fpscr();
+#else
+  uint32_t result;
+
+  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
+  return(result);
+#endif
+#else
+  return(0U);
+#endif
+}
+
+
+/**
+  \brief   Set FPSCR
+  \details Assigns the given value to the Floating Point Status/Control register.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
+     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
+#if __has_builtin(__builtin_arm_set_fpscr)
+// Re-enable using built-in when GCC has been fixed
+// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
+  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
+  __builtin_arm_set_fpscr(fpscr);
+#else
+  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory");
+#endif
+#else
+  (void)fpscr;
+#endif
+}
+
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/* Define macros for porting to both thumb1 and thumb2.
+ * For thumb1, use low register (r0-r7), specified by constraint "l"
+ * Otherwise, use general registers, specified by constraint "r" */
+#if defined (__thumb__) && !defined (__thumb2__)
+#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
+#define __CMSIS_GCC_RW_REG(r) "+l" (r)
+#define __CMSIS_GCC_USE_REG(r) "l" (r)
+#else
+#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
+#define __CMSIS_GCC_RW_REG(r) "+r" (r)
+#define __CMSIS_GCC_USE_REG(r) "r" (r)
+#endif
+
+/**
+  \brief   No Operation
+  \details No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+#define __NOP()                             __ASM volatile ("nop")
+
+/**
+  \brief   Wait For Interrupt
+  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
+ */
+#define __WFI()                             __ASM volatile ("wfi")
+
+
+/**
+  \brief   Wait For Event
+  \details Wait For Event is a hint instruction that permits the processor to enter
+           a low-power state until one of a number of events occurs.
+ */
+#define __WFE()                             __ASM volatile ("wfe")
+
+
+/**
+  \brief   Send Event
+  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+#define __SEV()                             __ASM volatile ("sev")
+
+
+/**
+  \brief   Instruction Synchronization Barrier
+  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
+           so that all instructions following the ISB are fetched from cache or memory,
+           after the instruction has been completed.
+ */
+__STATIC_FORCEINLINE void __ISB(void)
+{
+  __ASM volatile ("isb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Data Synchronization Barrier
+  \details Acts as a special kind of Data Memory Barrier.
+           It completes when all explicit memory accesses before this instruction complete.
+ */
+__STATIC_FORCEINLINE void __DSB(void)
+{
+  __ASM volatile ("dsb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Data Memory Barrier
+  \details Ensures the apparent order of the explicit memory operations before
+           and after the instruction, without ensuring their completion.
+ */
+__STATIC_FORCEINLINE void __DMB(void)
+{
+  __ASM volatile ("dmb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Reverse byte order (32 bit)
+  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__STATIC_FORCEINLINE uint32_t __REV(uint32_t value)
+{
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+  return __builtin_bswap32(value);
+#else
+  uint32_t result;
+
+  __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return result;
+#endif
+}
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return result;
+}
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__STATIC_FORCEINLINE int16_t __REVSH(int16_t value)
+{
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+  return (int16_t)__builtin_bswap16(value);
+#else
+  int16_t result;
+
+  __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return result;
+#endif
+}
+
+
+/**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    op1  Value to rotate
+  \param [in]    op2  Number of Bits to rotate
+  \return               Rotated value
+ */
+__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+{
+  op2 %= 32U;
+  if (op2 == 0U)
+  {
+    return op1;
+  }
+  return (op1 >> op2) | (op1 << (32U - op2));
+}
+
+
+/**
+  \brief   Breakpoint
+  \details Causes the processor to enter Debug state.
+           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
+  \param [in]    value  is ignored by the processor.
+                 If required, a debugger can use it to store additional information about the breakpoint.
+ */
+#define __BKPT(value)                       __ASM volatile ("bkpt "#value)
+
+
+/**
+  \brief   Reverse bit order of value
+  \details Reverses the bit order of the given value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)
+{
+  uint32_t result;
+
+#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
+   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
+#else
+  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */
+
+  result = value;                      /* r will be reversed bits of v; first get LSB of v */
+  for (value >>= 1U; value != 0U; value >>= 1U)
+  {
+    result <<= 1U;
+    result |= value & 1U;
+    s--;
+  }
+  result <<= s;                        /* shift when v's highest bits are zero */
+#endif
+  return result;
+}
+
+
+/**
+  \brief   Count leading zeros
+  \details Counts the number of leading zeros of a data value.
+  \param [in]  value  Value to count the leading zeros
+  \return             number of leading zeros in value
+ */
+#define __CLZ             (uint8_t)__builtin_clz
+
+
+#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
+/**
+  \brief   LDR Exclusive (8 bit)
+  \details Executes a exclusive LDR instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint8_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDR Exclusive (16 bit)
+  \details Executes a exclusive LDR instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint16_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDR Exclusive (32 bit)
+  \details Executes a exclusive LDR instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (8 bit)
+  \details Executes a exclusive STR instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (16 bit)
+  \details Executes a exclusive STR instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (32 bit)
+  \details Executes a exclusive STR instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
+   return(result);
+}
+
+
+/**
+  \brief   Remove the exclusive lock
+  \details Removes the exclusive lock which is created by LDREX.
+ */
+__STATIC_FORCEINLINE void __CLREX(void)
+{
+  __ASM volatile ("clrex" ::: "memory");
+}
+
+#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
+
+
+#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  ARG1  Value to be saturated
+  \param [in]  ARG2  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+#define __SSAT(ARG1,ARG2) \
+__extension__ \
+({                          \
+  int32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  ARG1  Value to be saturated
+  \param [in]  ARG2  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+#define __USAT(ARG1,ARG2) \
+ __extension__ \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/**
+  \brief   Rotate Right with Extend (32 bit)
+  \details Moves each bit of a bitstring right by one bit.
+           The carry input is shifted in at the left end of the bitstring.
+  \param [in]    value  Value to rotate
+  \return               Rotated value
+ */
+__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+
+
+/**
+  \brief   LDRT Unprivileged (8 bit)
+  \details Executes a Unprivileged LDRT instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );
+#endif
+   return ((uint8_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (16 bit)
+  \details Executes a Unprivileged LDRT instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );
+#endif
+   return ((uint16_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (32 bit)
+  \details Executes a Unprivileged LDRT instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return(result);
+}
+
+
+/**
+  \brief   STRT Unprivileged (8 bit)
+  \details Executes a Unprivileged STRT instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
+{
+   __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (16 bit)
+  \details Executes a Unprivileged STRT instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
+{
+   __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (32 bit)
+  \details Executes a Unprivileged STRT instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
+{
+   __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );
+}
+
+#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
+{
+  if ((sat >= 1U) && (sat <= 32U))
+  {
+    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
+    const int32_t min = -1 - max ;
+    if (val > max)
+    {
+      return max;
+    }
+    else if (val < min)
+    {
+      return min;
+    }
+  }
+  return val;
+}
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
+{
+  if (sat <= 31U)
+  {
+    const uint32_t max = ((1U << sat) - 1U);
+    if (val > (int32_t)max)
+    {
+      return max;
+    }
+    else if (val < 0)
+    {
+      return 0U;
+    }
+  }
+  return (uint32_t)val;
+}
+
+#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
+           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
+           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
+
+
+#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
+/**
+  \brief   Load-Acquire (8 bit)
+  \details Executes a LDAB instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint8_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire (16 bit)
+  \details Executes a LDAH instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint16_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire (32 bit)
+  \details Executes a LDA instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return(result);
+}
+
+
+/**
+  \brief   Store-Release (8 bit)
+  \details Executes a STLB instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
+{
+   __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Store-Release (16 bit)
+  \details Executes a STLH instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
+{
+   __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Store-Release (32 bit)
+  \details Executes a STL instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
+{
+   __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Load-Acquire Exclusive (8 bit)
+  \details Executes a LDAB exclusive instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint8_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire Exclusive (16 bit)
+  \details Executes a LDAH exclusive instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint16_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire Exclusive (32 bit)
+  \details Executes a LDA exclusive instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return(result);
+}
+
+
+/**
+  \brief   Store-Release Exclusive (8 bit)
+  \details Executes a STLB exclusive instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)
+{
+   uint32_t result;
+
+   __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   Store-Release Exclusive (16 bit)
+  \details Executes a STLH exclusive instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)
+{
+   uint32_t result;
+
+   __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   Store-Release Exclusive (32 bit)
+  \details Executes a STL exclusive instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)
+{
+   uint32_t result;
+
+   __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
+           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
+
+__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+#define __SSAT16(ARG1,ARG2) \
+({                          \
+  int32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+#define __USAT16(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+#if 0
+#define __PKHBT(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+
+#define __PKHTB(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  if (ARG3 == 0) \
+    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
+  else \
+    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+#endif
+
+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
+
+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
+
+__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
+{
+ int32_t result;
+
+ __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
+ return(result);
+}
+
+#endif /* (__ARM_FEATURE_DSP == 1) */
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#pragma GCC diagnostic pop
+
+#endif /* __CMSIS_GCC_H */

+ 39 - 0
bsp/v85xxp/Libraries/CMSIS/cmsis_version.h

@@ -0,0 +1,39 @@
+/**************************************************************************//**
+ * @file     cmsis_version.h
+ * @brief    CMSIS Core(M) Version definitions
+ * @version  V5.0.2
+ * @date     19. April 2017
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if   defined ( __ICCARM__ )
+  #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined (__clang__)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CMSIS_VERSION_H
+#define __CMSIS_VERSION_H
+
+/*  CMSIS Version definitions */
+#define __CM_CMSIS_VERSION_MAIN  ( 5U)                                      /*!< [31:16] CMSIS Core(M) main version */
+#define __CM_CMSIS_VERSION_SUB   ( 1U)                                      /*!< [15:0]  CMSIS Core(M) sub version */
+#define __CM_CMSIS_VERSION       ((__CM_CMSIS_VERSION_MAIN << 16U) | \
+                                   __CM_CMSIS_VERSION_SUB           )       /*!< CMSIS Core(M) version number */
+#endif

+ 949 - 0
bsp/v85xxp/Libraries/CMSIS/core_cm0.h

@@ -0,0 +1,949 @@
+/**************************************************************************//**
+ * @file     core_cm0.h
+ * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File
+ * @version  V5.0.5
+ * @date     28. May 2018
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if   defined ( __ICCARM__ )
+  #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined (__clang__)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM0_H_GENERIC
+#define __CORE_CM0_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M0
+  @{
+ */
+
+#include "cmsis_version.h"
+ 
+/*  CMSIS CM0 definitions */
+#define __CM0_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \deprecated [31:16] CMSIS HAL main version */
+#define __CM0_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \deprecated [15:0]  CMSIS HAL sub version */
+#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16U) | \
+                                    __CM0_CMSIS_VERSION_SUB           )  /*!< \deprecated CMSIS HAL version number */
+
+#define __CORTEX_M                (0U)                                   /*!< Cortex-M Core */
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TI_ARM__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "cmsis_compiler.h"               /* CMSIS compiler specific defines */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM0_H_DEPENDANT
+#define __CORE_CM0_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM0_REV
+    #define __CM0_REV               0x0000U
+    #warning "__CM0_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          2U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M0 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[31U];
+  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[31U];
+  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[31U];
+  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[31U];
+        uint32_t RESERVED4[64U];
+  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */
+}  NVIC_Type;
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+        uint32_t RESERVED0;
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+        uint32_t RESERVED1;
+  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.
+            Therefore they are not covered by the Cortex-M0 header file.
+  @{
+ */
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Core Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+#ifdef CMSIS_NVIC_VIRTUAL
+  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE
+    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"
+  #endif
+  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping
+  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping
+  #define NVIC_EnableIRQ              __NVIC_EnableIRQ
+  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ
+  #define NVIC_DisableIRQ             __NVIC_DisableIRQ
+  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ
+  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ
+  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ
+/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0 */
+  #define NVIC_SetPriority            __NVIC_SetPriority
+  #define NVIC_GetPriority            __NVIC_GetPriority
+  #define NVIC_SystemReset            __NVIC_SystemReset
+#endif /* CMSIS_NVIC_VIRTUAL */
+
+#ifdef CMSIS_VECTAB_VIRTUAL
+  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"
+  #endif
+  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetVector              __NVIC_SetVector
+  #define NVIC_GetVector              __NVIC_GetVector
+#endif  /* (CMSIS_VECTAB_VIRTUAL) */
+
+#define NVIC_USER_IRQ_OFFSET          16
+
+
+/* The following EXC_RETURN values are saved the LR on exception entry */
+#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */
+#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */
+#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */
+
+
+/* Interrupt Priorities are WORD accessible only under Armv6-M                  */
+/* The following MACROS handle generation of the register offset and byte masks */
+#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)
+#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )
+#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )
+
+#define __NVIC_SetPriorityGrouping(X) (void)(X)
+#define __NVIC_GetPriorityGrouping()  (0U)
+
+/**
+  \brief   Enable Interrupt
+  \details Enables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Enable status
+  \details Returns a device specific interrupt enable status from the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt is not enabled.
+  \return             1  Interrupt is enabled.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Disable Interrupt
+  \details Disables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+    __DSB();
+    __ISB();
+  }
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+  \note    The priority cannot be set for every processor exception.
+ */
+__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+  else
+  {
+    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+
+/**
+  \brief   Set Interrupt Vector
+  \details Sets an interrupt vector in SRAM based interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+           Address 0 must be mapped to SRAM.
+  \param [in]   IRQn      Interrupt number
+  \param [in]   vector    Address of interrupt handler function
+ */
+__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
+{
+  uint32_t *vectors = (uint32_t *)0x0U;
+  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;
+}
+
+
+/**
+  \brief   Get Interrupt Vector
+  \details Reads an interrupt vector from interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn      Interrupt number.
+  \return                 Address of interrupt handler function
+ */
+__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
+{
+  uint32_t *vectors = (uint32_t *)0x0U;
+  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                 SCB_AIRCR_SYSRESETREQ_Msk);
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+/* ##########################  FPU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_FpuFunctions FPU Functions
+  \brief    Function that provides FPU type.
+  @{
+ */
+
+/**
+  \brief   get FPU type
+  \details returns the FPU type
+  \returns
+   - \b  0: No FPU
+   - \b  1: Single precision FPU
+   - \b  2: Double + Single precision FPU
+ */
+__STATIC_INLINE uint32_t SCB_GetFPUType(void)
+{
+    return 0U;           /* No FPU */
+}
+
+
+/*@} end of CMSIS_Core_FpuFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */

+ 616 - 0
bsp/v85xxp/Libraries/CMSIS/core_cmFunc.h

@@ -0,0 +1,616 @@
+/**************************************************************************//**
+ * @file     core_cmFunc.h
+ * @brief    CMSIS Cortex-M Core Function Access Header File
+ * @version  V3.01
+ * @date     06. March 2012
+ *
+ * @note
+ * Copyright (C) 2009-2012 ARM Limited. All rights reserved.
+ *
+ * @par
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M
+ * processor based microcontrollers.  This file can be freely distributed
+ * within development tools that are supporting such ARM based processors.
+ *
+ * @par
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
+ *
+ ******************************************************************************/
+
+#ifndef __CORE_CMFUNC_H
+#define __CORE_CMFUNC_H
+
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
+/* ARM armcc specific functions */
+
+#if (__ARMCC_VERSION < 400677)
+    #error "Please use ARM Compiler Toolchain V4.0.677 or later!"
+#endif
+
+/* intrinsic void __enable_irq();     */
+/* intrinsic void __disable_irq();    */
+
+/** \brief  Get Control Register
+
+    This function returns the content of the Control Register.
+
+    \return               Control Register value
+ */
+__STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+    register uint32_t __regControl         __ASM("control");
+    return (__regControl);
+}
+
+
+/** \brief  Set Control Register
+
+    This function writes the given value to the Control Register.
+
+    \param [in]    control  Control Register value to set
+ */
+__STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+    register uint32_t __regControl         __ASM("control");
+    __regControl = control;
+}
+
+
+/** \brief  Get IPSR Register
+
+    This function returns the content of the IPSR Register.
+
+    \return               IPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_IPSR(void)
+{
+    register uint32_t __regIPSR          __ASM("ipsr");
+    return (__regIPSR);
+}
+
+
+/** \brief  Get APSR Register
+
+    This function returns the content of the APSR Register.
+
+    \return               APSR Register value
+ */
+__STATIC_INLINE uint32_t __get_APSR(void)
+{
+    register uint32_t __regAPSR          __ASM("apsr");
+    return (__regAPSR);
+}
+
+
+/** \brief  Get xPSR Register
+
+    This function returns the content of the xPSR Register.
+
+    \return               xPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_xPSR(void)
+{
+    register uint32_t __regXPSR          __ASM("xpsr");
+    return (__regXPSR);
+}
+
+
+/** \brief  Get Process Stack Pointer
+
+    This function returns the current value of the Process Stack Pointer (PSP).
+
+    \return               PSP Register value
+ */
+__STATIC_INLINE uint32_t __get_PSP(void)
+{
+    register uint32_t __regProcessStackPointer  __ASM("psp");
+    return (__regProcessStackPointer);
+}
+
+
+/** \brief  Set Process Stack Pointer
+
+    This function assigns the given value to the Process Stack Pointer (PSP).
+
+    \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+    register uint32_t __regProcessStackPointer  __ASM("psp");
+    __regProcessStackPointer = topOfProcStack;
+}
+
+
+/** \brief  Get Main Stack Pointer
+
+    This function returns the current value of the Main Stack Pointer (MSP).
+
+    \return               MSP Register value
+ */
+__STATIC_INLINE uint32_t __get_MSP(void)
+{
+    register uint32_t __regMainStackPointer     __ASM("msp");
+    return (__regMainStackPointer);
+}
+
+
+/** \brief  Set Main Stack Pointer
+
+    This function assigns the given value to the Main Stack Pointer (MSP).
+
+    \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+    register uint32_t __regMainStackPointer     __ASM("msp");
+    __regMainStackPointer = topOfMainStack;
+}
+
+
+/** \brief  Get Priority Mask
+
+    This function returns the current state of the priority mask bit from the Priority Mask Register.
+
+    \return               Priority Mask value
+ */
+__STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+    register uint32_t __regPriMask         __ASM("primask");
+    return (__regPriMask);
+}
+
+
+/** \brief  Set Priority Mask
+
+    This function assigns the given value to the Priority Mask Register.
+
+    \param [in]    priMask  Priority Mask
+ */
+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+    register uint32_t __regPriMask         __ASM("primask");
+    __regPriMask = (priMask);
+}
+
+
+#if       (__CORTEX_M >= 0x03)
+
+/** \brief  Enable FIQ
+
+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.
+    Can only be executed in Privileged modes.
+ */
+#define __enable_fault_irq                __enable_fiq
+
+
+/** \brief  Disable FIQ
+
+    This function disables FIQ interrupts by setting the F-bit in the CPSR.
+    Can only be executed in Privileged modes.
+ */
+#define __disable_fault_irq               __disable_fiq
+
+
+/** \brief  Get Base Priority
+
+    This function returns the current value of the Base Priority register.
+
+    \return               Base Priority register value
+ */
+__STATIC_INLINE uint32_t  __get_BASEPRI(void)
+{
+    register uint32_t __regBasePri         __ASM("basepri");
+    return (__regBasePri);
+}
+
+
+/** \brief  Set Base Priority
+
+    This function assigns the given value to the Base Priority register.
+
+    \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
+{
+    register uint32_t __regBasePri         __ASM("basepri");
+    __regBasePri = (basePri & 0xff);
+}
+
+
+/** \brief  Get Fault Mask
+
+    This function returns the current value of the Fault Mask register.
+
+    \return               Fault Mask register value
+ */
+__STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+    register uint32_t __regFaultMask       __ASM("faultmask");
+    return (__regFaultMask);
+}
+
+
+/** \brief  Set Fault Mask
+
+    This function assigns the given value to the Fault Mask register.
+
+    \param [in]    faultMask  Fault Mask value to set
+ */
+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+    register uint32_t __regFaultMask       __ASM("faultmask");
+    __regFaultMask = (faultMask & (uint32_t)1);
+}
+
+#endif /* (__CORTEX_M >= 0x03) */
+
+
+#if       (__CORTEX_M == 0x04)
+
+/** \brief  Get FPSCR
+
+    This function returns the current value of the Floating Point Status/Control register.
+
+    \return               Floating Point Status/Control register value
+ */
+__STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+    register uint32_t __regfpscr         __ASM("fpscr");
+    return (__regfpscr);
+#else
+    return (0);
+#endif
+}
+
+
+/** \brief  Set FPSCR
+
+    This function assigns the given value to the Floating Point Status/Control register.
+
+    \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+    register uint32_t __regfpscr         __ASM("fpscr");
+    __regfpscr = (fpscr);
+#endif
+}
+
+#endif /* (__CORTEX_M == 0x04) */
+
+
+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
+/* IAR iccarm specific functions */
+
+#include <cmsis_iar.h>
+
+
+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
+/* TI CCS specific functions */
+
+#include <cmsis_ccs.h>
+
+
+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
+/* GNU gcc specific functions */
+
+/** \brief  Enable IRQ Interrupts
+
+  This function enables IRQ interrupts by clearing the I-bit in the CPSR.
+  Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __enable_irq(void)
+{
+    __ASM volatile("cpsie i");
+}
+
+
+/** \brief  Disable IRQ Interrupts
+
+  This function disables IRQ interrupts by setting the I-bit in the CPSR.
+  Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __disable_irq(void)
+{
+    __ASM volatile("cpsid i");
+}
+
+
+/** \brief  Get Control Register
+
+    This function returns the content of the Control Register.
+
+    \return               Control Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, control" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Control Register
+
+    This function writes the given value to the Control Register.
+
+    \param [in]    control  Control Register value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+    __ASM volatile("MSR control, %0" : : "r"(control));
+}
+
+
+/** \brief  Get IPSR Register
+
+    This function returns the content of the IPSR Register.
+
+    \return               IPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_IPSR(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, ipsr" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Get APSR Register
+
+    This function returns the content of the APSR Register.
+
+    \return               APSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_APSR(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, apsr" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Get xPSR Register
+
+    This function returns the content of the xPSR Register.
+
+    \return               xPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_xPSR(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, xpsr" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Get Process Stack Pointer
+
+    This function returns the current value of the Process Stack Pointer (PSP).
+
+    \return               PSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSP(void)
+{
+    register uint32_t result;
+
+    __ASM volatile("MRS %0, psp\n"  : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Process Stack Pointer
+
+    This function assigns the given value to the Process Stack Pointer (PSP).
+
+    \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+    __ASM volatile("MSR psp, %0\n" : : "r"(topOfProcStack));
+}
+
+
+/** \brief  Get Main Stack Pointer
+
+    This function returns the current value of the Main Stack Pointer (MSP).
+
+    \return               MSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSP(void)
+{
+    register uint32_t result;
+
+    __ASM volatile("MRS %0, msp\n" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Main Stack Pointer
+
+    This function assigns the given value to the Main Stack Pointer (MSP).
+
+    \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+    __ASM volatile("MSR msp, %0\n" : : "r"(topOfMainStack));
+}
+
+
+/** \brief  Get Priority Mask
+
+    This function returns the current state of the priority mask bit from the Priority Mask Register.
+
+    \return               Priority Mask value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, primask" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Priority Mask
+
+    This function assigns the given value to the Priority Mask Register.
+
+    \param [in]    priMask  Priority Mask
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+    __ASM volatile("MSR primask, %0" : : "r"(priMask));
+}
+
+
+#if       (__CORTEX_M >= 0x03)
+
+/** \brief  Enable FIQ
+
+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.
+    Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __enable_fault_irq(void)
+{
+    __ASM volatile("cpsie f");
+}
+
+
+/** \brief  Disable FIQ
+
+    This function disables FIQ interrupts by setting the F-bit in the CPSR.
+    Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __disable_fault_irq(void)
+{
+    __ASM volatile("cpsid f");
+}
+
+
+/** \brief  Get Base Priority
+
+    This function returns the current value of the Base Priority register.
+
+    \return               Base Priority register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_BASEPRI(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, basepri_max" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Base Priority
+
+    This function assigns the given value to the Base Priority register.
+
+    \param [in]    basePri  Base Priority value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
+{
+    __ASM volatile("MSR basepri, %0" : : "r"(value));
+}
+
+
+/** \brief  Get Fault Mask
+
+    This function returns the current value of the Fault Mask register.
+
+    \return               Fault Mask register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+    uint32_t result;
+
+    __ASM volatile("MRS %0, faultmask" : "=r"(result));
+    return (result);
+}
+
+
+/** \brief  Set Fault Mask
+
+    This function assigns the given value to the Fault Mask register.
+
+    \param [in]    faultMask  Fault Mask value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+    __ASM volatile("MSR faultmask, %0" : : "r"(faultMask));
+}
+
+#endif /* (__CORTEX_M >= 0x03) */
+
+
+#if       (__CORTEX_M == 0x04)
+
+/** \brief  Get FPSCR
+
+    This function returns the current value of the Floating Point Status/Control register.
+
+    \return               Floating Point Status/Control register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+    uint32_t result;
+
+    __ASM volatile("VMRS %0, fpscr" : "=r"(result));
+    return (result);
+#else
+    return (0);
+#endif
+}
+
+
+/** \brief  Set FPSCR
+
+    This function assigns the given value to the Floating Point Status/Control register.
+
+    \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+    __ASM volatile("VMSR fpscr, %0" : : "r"(fpscr));
+#endif
+}
+
+#endif /* (__CORTEX_M == 0x04) */
+
+
+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
+/* TASKING carm specific functions */
+
+/*
+ * The CMSIS functions have been implemented as intrinsics in the compiler.
+ * Please use "carm -?i" to get an up to date list of all instrinsics,
+ * Including the CMSIS ones.
+ */
+
+#endif
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+#endif /* __CORE_CMFUNC_H */

+ 618 - 0
bsp/v85xxp/Libraries/CMSIS/core_cmInstr.h

@@ -0,0 +1,618 @@
+/**************************************************************************//**
+ * @file     core_cmInstr.h
+ * @brief    CMSIS Cortex-M Core Instruction Access Header File
+ * @version  V3.01
+ * @date     06. March 2012
+ *
+ * @note
+ * Copyright (C) 2009-2012 ARM Limited. All rights reserved.
+ *
+ * @par
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M
+ * processor based microcontrollers.  This file can be freely distributed
+ * within development tools that are supporting such ARM based processors.
+ *
+ * @par
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
+ *
+ ******************************************************************************/
+
+#ifndef __CORE_CMINSTR_H
+#define __CORE_CMINSTR_H
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
+/* ARM armcc specific functions */
+
+#if (__ARMCC_VERSION < 400677)
+    #error "Please use ARM Compiler Toolchain V4.0.677 or later!"
+#endif
+
+
+/** \brief  No Operation
+
+    No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+#define __NOP                             __nop
+
+
+/** \brief  Wait For Interrupt
+
+    Wait For Interrupt is a hint instruction that suspends execution
+    until one of a number of events occurs.
+ */
+#define __WFI                             __wfi
+
+
+/** \brief  Wait For Event
+
+    Wait For Event is a hint instruction that permits the processor to enter
+    a low-power state until one of a number of events occurs.
+ */
+#define __WFE                             __wfe
+
+
+/** \brief  Send Event
+
+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+#define __SEV                             __sev
+
+
+/** \brief  Instruction Synchronization Barrier
+
+    Instruction Synchronization Barrier flushes the pipeline in the processor,
+    so that all instructions following the ISB are fetched from cache or
+    memory, after the instruction has been completed.
+ */
+#define __ISB()                           __isb(0xF)
+
+
+/** \brief  Data Synchronization Barrier
+
+    This function acts as a special kind of Data Memory Barrier.
+    It completes when all explicit memory accesses before this instruction complete.
+ */
+#define __DSB()                           __dsb(0xF)
+
+
+/** \brief  Data Memory Barrier
+
+    This function ensures the apparent order of the explicit memory operations before
+    and after the instruction, without ensuring their completion.
+ */
+#define __DMB()                           __dmb(0xF)
+
+
+/** \brief  Reverse byte order (32 bit)
+
+    This function reverses the byte order in integer value.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+#define __REV                             __rev
+
+
+/** \brief  Reverse byte order (16 bit)
+
+    This function reverses the byte order in two unsigned short values.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
+{
+    rev16 r0, r0
+    bx lr
+}
+
+
+/** \brief  Reverse byte order in signed short value
+
+    This function reverses the byte order in a signed short value with sign extension to integer.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
+{
+    revsh r0, r0
+    bx lr
+}
+
+
+/** \brief  Rotate Right in unsigned value (32 bit)
+
+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+
+    \param [in]    value  Value to rotate
+    \param [in]    value  Number of Bits to rotate
+    \return               Rotated value
+ */
+#define __ROR                             __ror
+
+
+#if       (__CORTEX_M >= 0x03)
+
+    /** \brief  Reverse bit order of value
+
+    This function reverses the bit order of the given value.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+    */
+    #define __RBIT                            __rbit
+
+
+    /** \brief  LDR Exclusive (8 bit)
+
+    This function performs a exclusive LDR command for 8 bit value.
+
+    \param [in]    ptr  Pointer to data
+    \return             value of type uint8_t at (*ptr)
+    */
+    #define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))
+
+
+    /** \brief  LDR Exclusive (16 bit)
+
+    This function performs a exclusive LDR command for 16 bit values.
+
+    \param [in]    ptr  Pointer to data
+    \return        value of type uint16_t at (*ptr)
+    */
+    #define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))
+
+
+    /** \brief  LDR Exclusive (32 bit)
+
+    This function performs a exclusive LDR command for 32 bit values.
+
+    \param [in]    ptr  Pointer to data
+    \return        value of type uint32_t at (*ptr)
+    */
+    #define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))
+
+
+    /** \brief  STR Exclusive (8 bit)
+
+    This function performs a exclusive STR command for 8 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+    */
+    #define __STREXB(value, ptr)              __strex(value, ptr)
+
+
+    /** \brief  STR Exclusive (16 bit)
+
+    This function performs a exclusive STR command for 16 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+    */
+    #define __STREXH(value, ptr)              __strex(value, ptr)
+
+
+    /** \brief  STR Exclusive (32 bit)
+
+    This function performs a exclusive STR command for 32 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+    */
+    #define __STREXW(value, ptr)              __strex(value, ptr)
+
+
+    /** \brief  Remove the exclusive lock
+
+    This function removes the exclusive lock which is created by LDREX.
+
+    */
+    #define __CLREX                           __clrex
+
+
+    /** \brief  Signed Saturate
+
+    This function saturates a signed value.
+
+    \param [in]  value  Value to be saturated
+    \param [in]    sat  Bit position to saturate to (1..32)
+    \return             Saturated value
+    */
+    #define __SSAT                            __ssat
+
+
+    /** \brief  Unsigned Saturate
+
+    This function saturates an unsigned value.
+
+    \param [in]  value  Value to be saturated
+    \param [in]    sat  Bit position to saturate to (0..31)
+    \return             Saturated value
+    */
+    #define __USAT                            __usat
+
+
+    /** \brief  Count leading zeros
+
+    This function counts the number of leading zeros of a data value.
+
+    \param [in]  value  Value to count the leading zeros
+    \return             number of leading zeros in value
+    */
+    #define __CLZ                             __clz
+
+#endif /* (__CORTEX_M >= 0x03) */
+
+
+
+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
+/* IAR iccarm specific functions */
+
+#include <cmsis_iar.h>
+
+
+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
+/* TI CCS specific functions */
+
+#include <cmsis_ccs.h>
+
+
+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
+/* GNU gcc specific functions */
+
+/** \brief  No Operation
+
+    No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __NOP(void)
+{
+    __ASM volatile("nop");
+}
+
+
+/** \brief  Wait For Interrupt
+
+    Wait For Interrupt is a hint instruction that suspends execution
+    until one of a number of events occurs.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)
+{
+    __ASM volatile("wfi");
+}
+
+
+/** \brief  Wait For Event
+
+    Wait For Event is a hint instruction that permits the processor to enter
+    a low-power state until one of a number of events occurs.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __WFE(void)
+{
+    __ASM volatile("wfe");
+}
+
+
+/** \brief  Send Event
+
+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __SEV(void)
+{
+    __ASM volatile("sev");
+}
+
+
+/** \brief  Instruction Synchronization Barrier
+
+    Instruction Synchronization Barrier flushes the pipeline in the processor,
+    so that all instructions following the ISB are fetched from cache or
+    memory, after the instruction has been completed.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __ISB(void)
+{
+    __ASM volatile("isb");
+}
+
+
+/** \brief  Data Synchronization Barrier
+
+    This function acts as a special kind of Data Memory Barrier.
+    It completes when all explicit memory accesses before this instruction complete.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __DSB(void)
+{
+    __ASM volatile("dsb");
+}
+
+
+/** \brief  Data Memory Barrier
+
+    This function ensures the apparent order of the explicit memory operations before
+    and after the instruction, without ensuring their completion.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __DMB(void)
+{
+    __ASM volatile("dmb");
+}
+
+
+/** \brief  Reverse byte order (32 bit)
+
+    This function reverses the byte order in integer value.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV(uint32_t value)
+{
+    uint32_t result;
+
+    __ASM volatile("rev %0, %1" : "=r"(result) : "r"(value));
+    return (result);
+}
+
+
+/** \brief  Reverse byte order (16 bit)
+
+    This function reverses the byte order in two unsigned short values.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value)
+{
+    uint32_t result;
+
+    __ASM volatile("rev16 %0, %1" : "=r"(result) : "r"(value));
+    return (result);
+}
+
+
+/** \brief  Reverse byte order in signed short value
+
+    This function reverses the byte order in a signed short value with sign extension to integer.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value)
+{
+    uint32_t result;
+
+    __ASM volatile("revsh %0, %1" : "=r"(result) : "r"(value));
+    return (result);
+}
+
+
+/** \brief  Rotate Right in unsigned value (32 bit)
+
+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+
+    \param [in]    value  Value to rotate
+    \param [in]    value  Number of Bits to rotate
+    \return               Rotated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+{
+
+    __ASM volatile("ror %0, %0, %1" : "+r"(op1) : "r"(op2));
+    return (op1);
+}
+
+
+#if       (__CORTEX_M >= 0x03)
+
+/** \brief  Reverse bit order of value
+
+    This function reverses the bit order of the given value.
+
+    \param [in]    value  Value to reverse
+    \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+{
+    uint32_t result;
+
+    __ASM volatile("rbit %0, %1" : "=r"(result) : "r"(value));
+    return (result);
+}
+
+
+/** \brief  LDR Exclusive (8 bit)
+
+    This function performs a exclusive LDR command for 8 bit value.
+
+    \param [in]    ptr  Pointer to data
+    \return             value of type uint8_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
+{
+    uint8_t result;
+
+    __ASM volatile("ldrexb %0, [%1]" : "=r"(result) : "r"(addr));
+    return (result);
+}
+
+
+/** \brief  LDR Exclusive (16 bit)
+
+    This function performs a exclusive LDR command for 16 bit values.
+
+    \param [in]    ptr  Pointer to data
+    \return        value of type uint16_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
+{
+    uint16_t result;
+
+    __ASM volatile("ldrexh %0, [%1]" : "=r"(result) : "r"(addr));
+    return (result);
+}
+
+
+/** \brief  LDR Exclusive (32 bit)
+
+    This function performs a exclusive LDR command for 32 bit values.
+
+    \param [in]    ptr  Pointer to data
+    \return        value of type uint32_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
+{
+    uint32_t result;
+
+    __ASM volatile("ldrex %0, [%1]" : "=r"(result) : "r"(addr));
+    return (result);
+}
+
+
+/** \brief  STR Exclusive (8 bit)
+
+    This function performs a exclusive STR command for 8 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
+{
+    uint32_t result;
+
+    __ASM volatile("strexb %0, %2, [%1]" : "=&r"(result) : "r"(addr), "r"(value));
+    return (result);
+}
+
+
+/** \brief  STR Exclusive (16 bit)
+
+    This function performs a exclusive STR command for 16 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
+{
+    uint32_t result;
+
+    __ASM volatile("strexh %0, %2, [%1]" : "=&r"(result) : "r"(addr), "r"(value));
+    return (result);
+}
+
+
+/** \brief  STR Exclusive (32 bit)
+
+    This function performs a exclusive STR command for 32 bit values.
+
+    \param [in]  value  Value to store
+    \param [in]    ptr  Pointer to location
+    \return          0  Function succeeded
+    \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
+{
+    uint32_t result;
+
+    __ASM volatile("strex %0, %2, [%1]" : "=&r"(result) : "r"(addr), "r"(value));
+    return (result);
+}
+
+
+/** \brief  Remove the exclusive lock
+
+    This function removes the exclusive lock which is created by LDREX.
+
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __CLREX(void)
+{
+    __ASM volatile("clrex");
+}
+
+
+/** \brief  Signed Saturate
+
+    This function saturates a signed value.
+
+    \param [in]  value  Value to be saturated
+    \param [in]    sat  Bit position to saturate to (1..32)
+    \return             Saturated value
+ */
+#define __SSAT(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/** \brief  Unsigned Saturate
+
+    This function saturates an unsigned value.
+
+    \param [in]  value  Value to be saturated
+    \param [in]    sat  Bit position to saturate to (0..31)
+    \return             Saturated value
+ */
+#define __USAT(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/** \brief  Count leading zeros
+
+    This function counts the number of leading zeros of a data value.
+
+    \param [in]  value  Value to count the leading zeros
+    \return             number of leading zeros in value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
+{
+    uint8_t result;
+
+    __ASM volatile("clz %0, %1" : "=r"(result) : "r"(value));
+    return (result);
+}
+
+#endif /* (__CORTEX_M >= 0x03) */
+
+
+
+
+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
+/* TASKING carm specific functions */
+
+/*
+ * The CMSIS functions have been implemented as intrinsics in the compiler.
+ * Please use "carm -?i" to get an up to date list of all intrinsics,
+ * Including the CMSIS ones.
+ */
+
+#endif
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+#endif /* __CORE_CMINSTR_H */

+ 30 - 0
bsp/v85xxp/Libraries/SConscript

@@ -0,0 +1,30 @@
+import rtconfig
+from building import *
+
+# get current directory
+cwd = GetCurrentDir()
+
+# The set of source files associated with this SConscript file.
+
+src = Glob('VangoV85xxP_standard_peripheral/Source/*.c')
+src += [cwd + '/CMSIS/Vango/V85xxP/Source/system_target.c']
+src += [cwd + '/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c']
+src += [cwd + '/CMSIS/Vango/V85xxP/Source/lib_cortex.c']
+src += [cwd + '/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c']
+
+#add for startup script
+if rtconfig.CROSS_TOOL == 'gcc':
+    src += [cwd + '/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S']
+if rtconfig.CROSS_TOOL == 'keil':
+    src += [cwd + '/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S']
+
+path = [
+    cwd + '/CMSIS/Vango/V85xxP/Include',
+    cwd + '/CMSIS',
+    cwd + '/VangoV85xxP_standard_peripheral/Include',]
+
+CPPDEFINES = ['USE_STDPERIPH_DRIVER', 'V85XXP','USE_TARGET_DRIVER']
+
+group = DefineGroup('Vango_Lib', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
+
+Return('group')

+ 308 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc.h

@@ -0,0 +1,308 @@
+/**
+  ******************************************************************************
+  * @file    lib_adc.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   ADC library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_ADC_H
+#define __LIB_ADC_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+typedef struct
+{
+  uint32_t Mode;
+  uint32_t ClockSource;
+  uint32_t ClockFrq;
+  uint32_t SkipSample;
+  uint32_t AverageSample;
+  uint32_t TriggerSource;
+  uint32_t Channel;
+  uint32_t ResDivEnable;
+  uint32_t AverageEnable;
+} ADC_InitType;
+
+typedef struct
+{
+  uint32_t THDChannel;
+  uint8_t UpperTHD; 
+  uint8_t LowerTHD;
+  uint32_t TriggerSel;  
+  uint32_t THDSource;
+} ADCTHD_InitType;
+
+/* Exported constants --------------------------------------------------------*/
+//Mode
+#define ADC_MODE_DC             (0UL)
+#define ADC_MODE_AC             (1UL)
+#define ADC_MODE_TEMP           (2UL)
+#define IS_ADC_MODE(__MODE__)  (((__MODE__) == ADC_MODE_DC) ||\
+                                ((__MODE__) == ADC_MODE_AC) ||\
+                                ((__MODE__) == ADC_MODE_TEMP))
+//ClockSource
+#define ADC_CLKSRC_RCH    (0)
+#define ADC_CLKSRC_PLLL   ANA_ADCCTRL0_CLKSRCSEL
+#define IS_ADC_CLKSRC(__CLKSRC__)  (((__CLKSRC__) == ADC_CLKSRC_RCH) ||\
+                                    ((__CLKSRC__) == ADC_CLKSRC_PLLL))
+//ClockFrq
+#define ADC_CLKFRQ_HIGH  (0UL)
+#define ADC_CLKFRQ_LOW   (1UL)
+#define IS_ADC_CLKFRQ(__CLKFRQ__)  (((__CLKFRQ__) == ADC_CLKFRQ_HIGH) ||\
+                                    ((__CLKFRQ__) == ADC_CLKFRQ_LOW))
+//SkipSample
+#define ADC_SKIP_0         (0x0UL << RTC_ADCMACTL_SKIP_SAMPLE_Pos)
+#define ADC_SKIP_4         (0x4UL << RTC_ADCMACTL_SKIP_SAMPLE_Pos)
+#define ADC_SKIP_8         (0x7UL << RTC_ADCMACTL_SKIP_SAMPLE_Pos)
+#define ADC_SKIP_12        (0x12UL << RTC_ADCMACTL_SKIP_SAMPLE_Pos)
+#define IS_ADC_SKIP(__SKIP__)  (((__SKIP__) == ADC_SKIP_0)  ||\
+                                ((__SKIP__) == ADC_SKIP_4)  ||\
+                                ((__SKIP__) == ADC_SKIP_8)  ||\
+                                ((__SKIP__) == ADC_SKIP_12))
+//AverageSample
+#define ADC_AVERAGE_2     (0x0UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define ADC_AVERAGE_4     (0x1UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define ADC_AVERAGE_8     (0x2UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define ADC_AVERAGE_16    (0x3UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define ADC_AVERAGE_32    (0x4UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define ADC_AVERAGE_64    (0x5UL << RTC_ADCMACTL_AVERAGE_SAMPLE_Pos)
+#define IS_ADC_AVERAG(__AVERAG__)  (((__AVERAG__) == ADC_AVERAGE_2)   ||\
+                                    ((__AVERAG__) == ADC_AVERAGE_4)   ||\
+                                    ((__AVERAG__) == ADC_AVERAGE_8)   ||\
+                                    ((__AVERAG__) == ADC_AVERAGE_16)  ||\
+                                    ((__AVERAG__) == ADC_AVERAGE_32)  ||\
+                                    ((__AVERAG__) == ADC_AVERAGE_64))
+//TriggerSource
+#define ADC_TRIGSOURCE_OFF      (0x0UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_ITVSITV  (0x1UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_WKUSEC   (0x2UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_ALARM    (0x3UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_TMR0     (0x4UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_TMR1     (0x5UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_TMR2     (0x6UL << ANA_ADCCTRL0_AEN_Pos)
+#define ADC_TRIGSOURCE_TMR3     (0x7UL << ANA_ADCCTRL0_AEN_Pos)
+#define IS_ADC_TRIGSOURCE(__TRIGSOURCE__)  (((__TRIGSOURCE__) == ADC_TRIGSOURCE_OFF)     ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_ITVSITV) ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_WKUSEC)  ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_ALARM)   ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_TMR0)    ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_TMR1)    ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_TMR2)    ||\
+                                            ((__TRIGSOURCE__) == ADC_TRIGSOURCE_TMR3))
+//Channel
+#define ADC_CHANNEL_NONE      (0 << 0UL)
+#define ADC_CHANNEL_GND0      (1 << 0UL)
+#define ADC_CHANNEL_BAT1      (1 << 1UL)
+#define ADC_CHANNEL_BATRTC    (1 << 2UL)
+#define ADC_CHANNEL_CH3       (1 << 3UL)
+#define ADC_CHANNEL_CH4       (1 << 4UL)
+#define ADC_CHANNEL_CH5       (1 << 5UL)
+#define ADC_CHANNEL_CH6       (1 << 6UL)
+#define ADC_CHANNEL_CH7       (1 << 7UL)
+#define ADC_CHANNEL_CH8       (1 << 8UL)
+#define ADC_CHANNEL_CH9       (1 << 9UL)
+#define ADC_CHANNEL_TEMP      (1 << 10UL)
+#define ADC_CHANNEL_CH11      (1 << 11UL)
+#define ADC_CHANNEL_DVCC      (1 << 12UL)
+#define ADC_CHANNEL_GND13     (1 << 13UL)
+#define ADC_CHANNEL_GND14     (1 << 14UL)
+#define ADC_CHANNEL_GND15     (1 << 15UL)
+#define ADC_CHANNEL_DC_Msk    (0xFBFFUL)
+#define ADC_CHANNEL_DC_ALL     ADC_CHANNEL_DC_Msk
+#define ADC_CHANNEL_AC_Msk    (0x0BF8UL)
+#define ADC_CHANNEL_AC_ALL     ADC_CHANNEL_AC_Msk
+#define IS_ADC_CHANNEL_GETDATA(__CHANNEL__)  (((__CHANNEL__) == ADC_CHANNEL_GND0)   ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_BAT1)   ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_BATRTC) ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH3)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH4)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH5)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH6)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH7)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH8)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH9)    ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_TEMP)   ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_CH11)   ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_DVCC)   ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_GND13)  ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_GND14)  ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_GND15))
+#define IS_ADC_CHANNEL_AC(__CHANNEL__)  ((((__CHANNEL__) & ADC_CHANNEL_AC_Msk) != 0UL) &&\
+                                         (((__CHANNEL__) & ~ADC_CHANNEL_AC_Msk) == 0UL))
+#define IS_ADC_CHANNEL_DC(__CHANNEL__)  ((((__CHANNEL__) & ADC_CHANNEL_DC_Msk) != 0UL) &&\
+                                         (((__CHANNEL__) & ~ADC_CHANNEL_DC_Msk) == 0UL))
+#define IS_ADC_CHANNEL_TEMP(__CHANNEL__)  ((__CHANNEL__) == ADC_CHANNEL_TEMP)
+#define IS_ADC_CHANNEL_EN_DC(__CHANNEL__)  (((((__CHANNEL__) & ADC_CHANNEL_DC_Msk) != 0UL) && (((__CHANNEL__) & ~ADC_CHANNEL_DC_Msk) == 0UL)) ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_NONE))
+#define IS_ADC_CHANNEL_EN_AC(__CHANNEL__)  (((((__CHANNEL__) & ADC_CHANNEL_AC_Msk) != 0UL) && (((__CHANNEL__) & ~ADC_CHANNEL_AC_Msk) == 0UL)) ||\
+                                              ((__CHANNEL__) == ADC_CHANNEL_NONE))
+
+#define ADC_CHANNEL_Pos       (0UL)
+#define ADC_CHANNEL_SHIFT     (ANA_ADCCTRL2_SCAN_CHx_Pos     - ADC_CHANNEL_Pos)
+#define ADC_AVERAGECH_SHIFT   (RTC_ADCMACTL_AVERAGE_CHx_Pos  - ADC_CHANNEL_Pos)
+#define ADC_RESDIVCH_SHIFT    (ANA_ADCCTRL1_RESDIV_CHx_Pos   - ADC_CHANNEL_Pos)
+
+//THDChannel
+#define ADC_THDCHANNEL0       (0UL)
+#define ADC_THDCHANNEL1       (1UL)
+#define ADC_THDCHANNEL2       (2UL)
+#define ADC_THDCHANNEL3       (3UL)
+#define IS_ADC_THDCHANNEL(THDCHANNEL)         (((THDCHANNEL) == ADC_THDCHANNEL0)  ||\
+                                              ((THDCHANNEL) == ADC_THDCHANNEL1)  ||\
+                                              ((THDCHANNEL) == ADC_THDCHANNEL2)  ||\
+                                              ((THDCHANNEL) == ADC_THDCHANNEL3))
+
+//TriggerSel
+#define ADC_THDSEL_HIGH            (0UL)
+#define ADC_THDSEL_RISING          (1UL)
+#define ADC_THDSEL_FALLING         (2UL)
+#define ADC_THDSEL_BOTH            (3UL)
+#define IS_ADC_THDSEL(__THDSEL__)  (((__THDSEL__) == ADC_THDSEL_HIGH)      ||\
+                                    ((__THDSEL__) == ADC_THDSEL_RISING)   ||\
+                                    ((__THDSEL__) == ADC_THDSEL_FALLING)  ||\
+                                    ((__THDSEL__) == ADC_THDSEL_BOTH))
+
+//INTMask
+#define ADC_INT_UPPER_TH3   ANA_INTEN_INTEN21
+#define ADC_INT_LOWER_TH3   ANA_INTEN_INTEN20
+#define ADC_INT_UPPER_TH2   ANA_INTEN_INTEN19
+#define ADC_INT_LOWER_TH2   ANA_INTEN_INTEN18
+#define ADC_INT_UPPER_TH1   ANA_INTEN_INTEN17
+#define ADC_INT_LOWER_TH1   ANA_INTEN_INTEN16
+#define ADC_INT_UPPER_TH0   ANA_INTEN_INTEN15
+#define ADC_INT_LOWER_TH0   ANA_INTEN_INTEN14
+#define ADC_INT_AUTODONE    ANA_INTEN_INTEN1
+#define ADC_INT_MANUALDONE  ANA_INTEN_INTEN0
+#define ADC_INT_Msk         (0x3FC003UL)
+#define IS_ADC_INT(__INT__)  ((((__INT__) & ADC_INT_Msk) != 0UL) &&\
+                              (((__INT__) & ~ADC_INT_Msk) == 0UL))
+
+//INTSTS
+#define ADC_INTSTS_UPPER_TH3   ANA_INTSTS_INTSTS21
+#define ADC_INTSTS_LOWER_TH3   ANA_INTSTS_INTSTS20
+#define ADC_INTSTS_UPPER_TH2   ANA_INTSTS_INTSTS19
+#define ADC_INTSTS_LOWER_TH2   ANA_INTSTS_INTSTS18
+#define ADC_INTSTS_UPPER_TH1   ANA_INTSTS_INTSTS17
+#define ADC_INTSTS_LOWER_TH1   ANA_INTSTS_INTSTS16
+#define ADC_INTSTS_UPPER_TH0   ANA_INTSTS_INTSTS15
+#define ADC_INTSTS_LOWER_TH0   ANA_INTSTS_INTSTS14
+#define ADC_INTSTS_AUTODONE    ANA_INTSTS_INTSTS1
+#define ADC_INTSTS_MANUALDONE  ANA_INTSTS_INTSTS0
+#define ADC_INTSTS_Msk            (0x3FC003UL)
+#define IS_ADC_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & ADC_INTSTS_Msk) != 0U) &&\
+                                        (((__INTFLAGC__) & ~ADC_INTSTS_Msk) == 0U))
+                                        
+#define IS_ADC_INTFLAGR(__INTFLAGR__)  (((__INTFLAGR__) == ADC_INTSTS_UPPER_TH3)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_LOWER_TH3)    ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_UPPER_TH2)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_LOWER_TH2)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_UPPER_TH1)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_LOWER_TH1)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_UPPER_TH0)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_LOWER_TH0)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_AUTODONE)   ||\
+                                        ((__INTFLAGR__) == ADC_INTSTS_MANUALDONE))
+
+#define ADC_FLAG_CONV_ERR     (0x1U << ANA_ADCCTRL2_CONV_ERR_Pos)
+#define ADC_FLAG_CAL_ERR      (0x1U << ANA_ADCCTRL2_CAL_ERR_Pos)
+#define ADC_FLAG_CAL_DONE     (0x1U << ANA_ADCCTRL2_RTC_CAL_DONE_Pos)
+#define ADC_FLAG_BUSY         (0x1U << ANA_ADCCTRL2_BUSY_Pos)
+#define IS_ADC_ADCFLAG(__ADCFLAG__)  (((__ADCFLAG__) == ADC_FLAG_CONV_ERR)   ||\
+                                      ((__ADCFLAG__) == ADC_FLAG_CAL_ERR)    ||\
+                                      ((__ADCFLAG__) == ADC_FLAG_CAL_DONE)   ||\
+                                      ((__ADCFLAG__) == ADC_FLAG_BUSY))
+
+#define ADC_FLAG_RCMsk  (ADC_FLAG_CONV_ERR|ADC_FLAG_CAL_ERR)
+#define IS_ADC_ADCFLAGC(__ADCFLAG__)  ((((__ADCFLAG__) & ADC_FLAG_RCMsk) != 0U) &&\
+                                       (((__ADCFLAG__) & ~ADC_FLAG_RCMsk) == 0U))
+
+//THDFlag
+#define ADC_THDFLAG_UPPER3    (0x1U << ANA_ADCDATATHD_CH_UPPER_THD3_TRGED_Pos)
+#define ADC_THDFLAG_LOWER3    (0x1U << ANA_ADCDATATHD_CH_LOWER_THD3_TRGED_Pos)
+#define ADC_THDFLAG_UPPER2    (0x1U << ANA_ADCDATATHD_CH_UPPER_THD2_TRGED_Pos)
+#define ADC_THDFLAG_LOWER2    (0x1U << ANA_ADCDATATHD_CH_LOWER_THD2_TRGED_Pos)
+#define ADC_THDFLAG_UPPER1    (0x1U << ANA_ADCDATATHD_CH_UPPER_THD1_TRGED_Pos)
+#define ADC_THDFLAG_LOWER1    (0x1U << ANA_ADCDATATHD_CH_LOWER_THD1_TRGED_Pos)
+#define ADC_THDFLAG_UPPER0    (0x1U << ANA_ADCDATATHD_CH_UPPER_THD0_TRGED_Pos)
+#define ADC_THDFLAG_LOWER0    (0x1U << ANA_ADCDATATHD_CH_LOWER_THD0_TRGED_Pos)
+#define IS_ADC_THDFLAG(__THDFLAG__)  (((__THDFLAG__) == ADC_THDFLAG_UPPER3)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_LOWER3)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_UPPER2)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_LOWER2)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_UPPER1)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_LOWER1)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_UPPER0)   ||\
+                                      ((__THDFLAG__) == ADC_THDFLAG_LOWER0))
+
+#define IS_ADC_BATDIV(__BATDIV__)  (((__BATDIV__) == ADC_BAT_CAPDIV) ||\
+                                    ((__BATDIV__) == ADC_BAT_RESDIV))
+
+/* ADC_GetVoltage */
+//Mode
+#define ADC_3V_ADCCHx_NODIV    (0x000UL)    // Power supply: 3.3V;    Channel: External;    Divider modeL: None
+#define ADC_3V_ADCCHx_RESDIV   (0x001UL)    // Power supply: 3.3V;    Channel: External;    Divider modeL: Resistive
+#define ADC_3V_BAT1_RESDIV     (0x002UL)    // Power supply: 3.3V;    Channel: VDD;         Divider modeL: Resistive
+#define ADC_3V_BATRTC_RESDIV   (0x003UL)    // Power supply: 3.3V;    Channel: BATRTC;      Divider modeL: Resistive
+#define ADC_5V_ADCCHx_NODIV    (0x100UL)    // Power supply: 5V;      Channel: External;    Divider modeL: None
+#define ADC_5V_ADCCHx_RESDIV   (0x101UL)    // Power supply: 5V;      Channel: External;    Divider modeL: Resistive
+#define ADC_5V_BAT1_RESDIV     (0x102UL)    // Power supply: 5V;      Channel: VDD;         Divider modeL: Resistive
+#define ADC_5V_BATRTC_RESDIV   (0x103UL)    // Power supply: 5V;      Channel: BATRTC;      Divider modeL: Resistive
+#define ADC_TEMP               (0x1000UL)   // Temperature ;          Channel: ADC_CHANNEL_TEMP
+#define IS_ADCVOL_MODE(__MODE__)      (((__MODE__) == ADC_3V_ADCCHx_NODIV)   ||\
+                                       ((__MODE__) == ADC_3V_ADCCHx_RESDIV)  ||\
+                                       ((__MODE__) == ADC_3V_BAT1_RESDIV)       ||\
+                                       ((__MODE__) == ADC_3V_BATRTC_RESDIV)    ||\
+                                       ((__MODE__) == ADC_5V_ADCCHx_NODIV)   ||\
+                                       ((__MODE__) == ADC_5V_ADCCHx_RESDIV)  ||\
+                                       ((__MODE__) == ADC_5V_BAT1_RESDIV)       ||\
+                                       ((__MODE__) == ADC_5V_BATRTC_RESDIV)    ||\
+                                       ((__MODE__) == ADC_TEMP))
+
+/* Exported Functions ------------------------------------------------------- */
+/* ADC Exported Functions Group1: 
+                                  (De)Initialization -------------------------*/
+void ADC_DeInit(void);
+void ADC_StructInit(ADC_InitType* ADC_InitStruct);
+void ADC_Init(ADC_InitType* ADC_InitStruct);
+/* ADC Exported Functions Group2: 
+                                  ADC Configuration --------------*/
+void ADC_THDInit(ADCTHD_InitType* ADC_THDStruct);
+void ADC_THDStructInit(ADCTHD_InitType* ADC_THDStruct);
+void ADC_Calibration(void);
+/* ADC Exported Functions Group3: 
+                                  Get NVR Info, Calculate datas --------------*/
+uint32_t ADC_CalculateValue(uint32_t Mode, int16_t adc_data, int16_t *value);
+/* ADC Exported Functions Group4: 
+                                  Interrupt (flag) ---------------------------*/
+int16_t ADC_GetADCConversionValue(uint32_t Channel);
+void ADC_INTConfig(uint32_t INTMask, uint32_t NewState);
+uint8_t ADC_GetFlag(uint32_t FlagMask);
+void ADC_ClearFlag(uint32_t FlagMask);
+uint8_t ADC_GetINTStatus(uint32_t INTMask);
+void ADC_ClearINTStatus(uint32_t INTMask);
+uint8_t ADC_GetTHDFlag(uint32_t THDFlagMask);
+
+/* ADC Exported Functions Group5: 
+                                  MISC Configuration -------------------------*/
+void ADC_Cmd(uint32_t NewState);
+void ADC_LowerTHDCmd(uint32_t THDChannel,uint32_t NewState);
+void ADC_UpperTHDCmd(uint32_t THDChannel,uint32_t NewState);
+void ADC_StartManual(void);
+void ADC_WaitForManual(void);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_ADC_H */
+
+/*********************************** END OF FILE ******************************/

+ 81 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc_tiny.h

@@ -0,0 +1,81 @@
+/**
+  ******************************************************************************
+  * @file    lib_adc_tiny.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   ADC_TINY library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_ADC_TINY_H
+#define __LIB_ADC_TINY_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+typedef struct
+{
+  uint32_t SignalSel; 
+  uint32_t ADTREF1;
+  uint32_t ADTREF2;  
+  uint32_t ADTREF3;
+} TADCInitType;
+
+//SelADT
+#define ADCTINY_SIGNALSEL_IOE6   0
+#define ADCTINY_SIGNALSEL_IOE7   ANA_REGF_ADTSEL
+#define IS_ADCTINY_SELADT(__SELADT__)  (((__SELADT__) == ADCTINY_SIGNALSEL_IOE6) ||\
+                                        ((__SELADT__) == ADCTINY_SIGNALSEL_IOE7))
+
+//ADTREF1
+#define ADCTINY_REF1_0_9   0
+#define ADCTINY_REF1_0_7   ANA_REGF_ADTREF1SEL
+#define IS_ADCTINY_ADTREF1(__ADTREF1__)  (((__ADTREF1__) == ADCTINY_REF1_0_9) ||\
+                                          ((__ADTREF1__) == ADCTINY_REF1_0_7))
+
+//ADTREF2
+#define ADCTINY_REF2_1_8   0
+#define ADCTINY_REF2_1_6   ANA_REGF_ADTREF2SEL
+#define IS_ADCTINY_ADTREF2(__ADTREF2__)  (((__ADTREF2__) == ADCTINY_REF2_1_8) ||\
+                                          ((__ADTREF2__) == ADCTINY_REF2_1_6))
+
+//ADTREF3
+#define ADCTINY_REF3_2_7   0
+#define ADCTINY_REF3_2_5   ANA_REGF_ADTREF3SEL
+#define IS_ADCTINY_ADTREF3(__ADTREF3__)  (((__ADTREF3__) == ADCTINY_REF3_2_7) ||\
+                                          ((__ADTREF3__) == ADCTINY_REF3_2_5))
+
+//THSel
+#define ADCTINY_THSEL_0  (0x00UL << ANA_MISC_TADCTH_Pos)
+#define ADCTINY_THSEL_1  (0x01UL << ANA_MISC_TADCTH_Pos)
+#define ADCTINY_THSEL_2  (0x02UL << ANA_MISC_TADCTH_Pos)
+#define ADCTINY_THSEL_3  (0x03UL << ANA_MISC_TADCTH_Pos)
+#define IS_ADCTINY_THSEL(__THSEL__)  (((__THSEL__) == ADCTINY_THSEL_0) ||\
+                                      ((__THSEL__) == ADCTINY_THSEL_1) ||\
+                                      ((__THSEL__) == ADCTINY_THSEL_2) ||\
+                                      ((__THSEL__) == ADCTINY_THSEL_3))
+
+/* Exported Functions ------------------------------------------------------- */
+void TADC_DeInit(void);
+void TADC_StructInit(TADCInitType* TADC_InitStruct);
+void TADC_Init(TADCInitType* TADC_InitStruct);
+void TADC_Cmd(uint32_t NewState);
+uint8_t TADC_GetOutput(void);
+void TADC_IntTHConfig(uint32_t THSel);
+void TADC_INTConfig(uint32_t NewState);
+uint8_t TADC_GetINTStatus(void);
+void TADC_ClearINTStatus(void);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_ADC_TINY_H */
+
+/*********************************** END OF FILE ******************************/

+ 118 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_ana.h

@@ -0,0 +1,118 @@
+/**
+  ******************************************************************************
+  * @file    lib_ana.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Analog library.
+  ******************************************************************************
+  * @attention
+  *
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_ANA_H
+#define __LIB_ANA_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+/***** StatusMask (ANA_GetStatus) *****/
+#define ANA_STATUS_AVCCLV       ANA_CMPOUT_AVCCLV
+#define ANA_STATUS_VDCINDROP    ANA_CMPOUT_VDCINDROP
+#define ANA_STATUS_VDDALARM     ANA_CMPOUT_VDDALARM
+#define ANA_STATUS_COMP2        ANA_CMPOUT_CMP2
+#define ANA_STATUS_COMP1        ANA_CMPOUT_CMP1
+#define ANA_STATUS_LOCKL        ANA_CMPOUT_LOCKL
+#define ANA_STATUS_LOCKH        ANA_CMPOUT_LOCKH
+
+/***** IntMask (ANA_GetINTStatus / ANA_ClearINTStatus / ANA_INTConfig) *****/
+#define ANA_INT_UPPER_TH3       ANA_INTEN_INTEN21
+#define ANA_INT_LOWER_TH3       ANA_INTEN_INTEN20
+#define ANA_INT_UPPER_TH2       ANA_INTEN_INTEN19
+#define ANA_INT_LOWER_TH2       ANA_INTEN_INTEN18
+#define ANA_INT_UPPER_TH1       ANA_INTEN_INTEN17
+#define ANA_INT_LOWER_TH1       ANA_INTEN_INTEN16
+#define ANA_INT_UPPER_TH0       ANA_INTEN_INTEN15
+#define ANA_INT_LOWER_TH0       ANA_INTEN_INTEN14
+#define ANA_INT_TADC_OVER       ANA_INTEN_INTEN13
+#define ANA_INT_REGERR          ANA_INTEN_INTEN12
+#define ANA_INT_SLPFAIL_VDCIN   ANA_INTEN_INTEN11
+#define ANA_INT_AVCCLV          ANA_INTEN_INTEN10
+#define ANA_INT_VDCINDROP       ANA_INTEN_INTEN8
+#define ANA_INT_VDDALARM        ANA_INTEN_INTEN7
+#define ANA_INT_COMP2           ANA_INTEN_INTEN3
+#define ANA_INT_COMP1           ANA_INTEN_INTEN2
+#define ANA_INT_ADCA            ANA_INTEN_INTEN1
+#define ANA_INT_ADCM            ANA_INTEN_INTEN0
+#define ANA_INT_Msk             (ANA_INTSTS_INTSTS21     \
+                                |ANA_INTSTS_INTSTS20    \
+                                |ANA_INTSTS_INTSTS19    \
+                                |ANA_INTSTS_INTSTS18    \
+                                |ANA_INTSTS_INTSTS17    \
+                                |ANA_INTSTS_INTSTS16    \
+                                |ANA_INTSTS_INTSTS15    \
+                                |ANA_INTSTS_INTSTS14    \
+                                |ANA_INTSTS_INTSTS13    \
+                                |ANA_INTSTS_INTSTS12   \
+                                |ANA_INTSTS_INTSTS11   \
+                                |ANA_INTSTS_INTSTS10   \
+                                |ANA_INTSTS_INTSTS8    \
+                                |ANA_INTSTS_INTSTS7    \
+                                |ANA_INTSTS_INTSTS3    \
+                                |ANA_INTSTS_INTSTS2    \
+                                |ANA_INTSTS_INTSTS1    \
+                                |ANA_INTSTS_INTSTS0)
+
+/****************************** ANA Instances *********************************/
+#define IS_ANA_ALL_INSTANCE(INSTANCE) ((INSTANCE) == ANA)
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_ANA_STATUS(__STATUS__)  (((__STATUS__) == ANA_STATUS_AVCCLV)    ||\
+                                    ((__STATUS__) == ANA_STATUS_VDCINDROP) ||\
+                                    ((__STATUS__) == ANA_STATUS_VDDALARM)  ||\
+                                    ((__STATUS__) == ANA_STATUS_COMP2)     ||\
+                                    ((__STATUS__) == ANA_STATUS_COMP1)     ||\
+                                    ((__STATUS__) == ANA_STATUS_LOCKL)     ||\
+                                    ((__STATUS__) == ANA_STATUS_LOCKH))
+
+#define IS_ANA_INTSTSR(__INTSTSR__)  (((__INTSTSR__) == ANA_INT_UPPER_TH3)     ||\
+                                      ((__INTSTSR__) == ANA_INT_LOWER_TH3)     ||\
+                                      ((__INTSTSR__) == ANA_INT_UPPER_TH2)     ||\
+                                      ((__INTSTSR__) == ANA_INT_LOWER_TH2)     ||\
+                                      ((__INTSTSR__) == ANA_INT_UPPER_TH1)     ||\
+                                      ((__INTSTSR__) == ANA_INT_LOWER_TH1)     ||\
+                                      ((__INTSTSR__) == ANA_INT_UPPER_TH0)     ||\
+                                      ((__INTSTSR__) == ANA_INT_LOWER_TH0)     ||\
+                                      ((__INTSTSR__) == ANA_INT_TADC_OVER)     ||\
+                                      ((__INTSTSR__) == ANA_INT_REGERR)        ||\
+                                      ((__INTSTSR__) == ANA_INT_SLPFAIL_VDCIN) ||\
+                                      ((__INTSTSR__) == ANA_INT_AVCCLV)        ||\
+                                      ((__INTSTSR__) == ANA_INT_VDCINDROP)     ||\
+                                      ((__INTSTSR__) == ANA_INT_VDDALARM)      ||\
+                                      ((__INTSTSR__) == ANA_INT_COMP2)         ||\
+                                      ((__INTSTSR__) == ANA_INT_COMP1)         ||\
+                                      ((__INTSTSR__) == ANA_INT_ADCA)          ||\
+                                      ((__INTSTSR__) == ANA_INT_ADCM))
+
+#define IS_ANA_INTSTSC(__INTSTSC__)  ((((__INTSTSC__) & ANA_INT_Msk) != 0U) &&\
+                                      (((__INTSTSC__) & ~ANA_INT_Msk) == 0U))
+
+#define IS_ANA_INT(__INT__)  IS_ANA_INTSTSC(__INT__)
+
+/* Exported Functions ------------------------------------------------------- */
+uint8_t ANA_GetStatus(uint32_t StatusMask);
+uint8_t ANA_GetINTStatus(uint32_t IntMask);
+void ANA_ClearINTStatus(uint32_t IntMask);
+void ANA_INTConfig(uint32_t IntMask, uint32_t NewState);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_ANA_H */
+
+/*********************************** END OF FILE ******************************/

+ 338 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_clk.h

@@ -0,0 +1,338 @@
+/**
+  ******************************************************************************
+  * @file    lib_clk.c 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Clock library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_CLK_H
+#define __LIB_CLK_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+/* PLLL Configure */
+typedef struct
+{
+  uint32_t Source;
+  uint32_t State;
+  uint32_t Frequency;
+} PLLL_ConfTypeDef;
+
+/* PLLH Configure */
+typedef struct
+{
+  uint32_t Source;
+  uint32_t State;
+  uint32_t Frequency;
+} PLLH_ConfTypeDef;
+
+/* RCH Configure */
+typedef struct
+{
+  uint32_t State;
+} RCH_ConfTypeDef;
+
+/* XTALH Configure */
+typedef struct
+{
+  uint32_t State;
+} XTALH_ConfTypeDef;
+
+/* RTCCLK Configure */
+typedef struct
+{
+  uint32_t Source;
+  uint32_t Divider;
+} RTCCLK_ConfTypeDef;
+
+/* HCLK Configure */
+typedef struct
+{
+  uint32_t Divider;   /* 1 ~ 256 */
+} HCLK_ConfTypeDef;
+
+/* PCLK Configure */
+typedef struct
+{
+  uint32_t Divider;   /* 1 ~ 256 */
+} PCLK_ConfTypeDef;
+
+/* Clock Configure */
+typedef struct 
+{
+  uint32_t            ClockType;       /* The clock to be configured */ 
+  
+  uint32_t            AHBSource;
+  
+  PLLL_ConfTypeDef    PLLL;
+  
+  PLLH_ConfTypeDef    PLLH;
+  
+  XTALH_ConfTypeDef   XTALH;
+  
+  RTCCLK_ConfTypeDef  RTCCLK;
+  
+  HCLK_ConfTypeDef    HCLK;  
+  
+  PCLK_ConfTypeDef    PCLK;         
+  
+} CLK_InitTypeDef;
+
+/**************  Bits definition for ANA_REG9 register       ******************/
+#define ANA_REG9_PLLLSEL_26M          (0x0U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_13M          (0x1U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_6_5M         (0x2U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_3_2M         (0x3U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_1_6M         (0x4U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_800K         (0x5U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_400K         (0x6U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLLSEL_200K         (0x7U << ANA_REG9_PLLLSEL_Pos)
+#define ANA_REG9_PLLHSEL_X2           (0xCU << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X2_5         (0xDU << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X3           (0xEU << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X3_5         (0xFU << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X4           (0x0U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X4_5         (0x1U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X5           (0x2U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X5_5         (0x3U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X6           (0x4U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X6_5         (0x5U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X7           (0x6U << ANA_REG9_PLLHSEL_Pos)
+#define ANA_REG9_PLLHSEL_X7_5         (0x7U << ANA_REG9_PLLHSEL_Pos)
+
+/**************  Bits definition for MISC2_CLKSEL register   ******************/
+#define MISC2_CLKSEL_CLKSEL_RCOH      (0x0U << MISC2_CLKSEL_CLKSEL_Pos)        /*!< 0x00000000 */
+#define MISC2_CLKSEL_CLKSEL_XOH       (0x1U << MISC2_CLKSEL_CLKSEL_Pos)        /*!< 0x00000001 */
+#define MISC2_CLKSEL_CLKSEL_PLLH      (0x2U << MISC2_CLKSEL_CLKSEL_Pos)        /*!< 0x00000002 */
+#define MISC2_CLKSEL_CLKSEL_RTCCLK    (0x3U << MISC2_CLKSEL_CLKSEL_Pos)        /*!< 0x00000003 */
+#define MISC2_CLKSEL_CLKSEL_PLLL      (0x4U << MISC2_CLKSEL_CLKSEL_Pos)        /*!< 0x00000004 */
+
+/*****  ClockType *****/
+#define CLK_TYPE_MSk      (0xFFUL)
+#define CLK_TYPE_ALL       CLK_TYPE_MSk
+#define CLK_TYPE_AHBSRC   (0x01UL)   /* AHB Clock source to configure */
+#define CLK_TYPE_PLLL     (0x02UL)   /* PLLL to configure */
+#define CLK_TYPE_PLLH     (0x04UL)   /* PLLH to configure */
+#define CLK_TYPE_XTALH    (0x08UL)   /* XTALH to configure */
+#define CLK_TYPE_RTCCLK   (0x20UL)   /* RTCCLK to configure */
+#define CLK_TYPE_HCLK     (0x40UL)   /* AHB Clock to configure */
+#define CLK_TYPE_PCLK     (0x80UL)   /* APB Clock to configure */
+
+/*****  AHBSource *****/
+#define CLK_AHBSEL_6_5MRC     (0x0U << MISC2_CLKSEL_CLKSEL_Pos)
+#define CLK_AHBSEL_6_5MXTAL   (0x1U << MISC2_CLKSEL_CLKSEL_Pos)
+#define CLK_AHBSEL_HSPLL      (0x2U << MISC2_CLKSEL_CLKSEL_Pos)
+#define CLK_AHBSEL_RTCCLK     (0x3U << MISC2_CLKSEL_CLKSEL_Pos)
+#define CLK_AHBSEL_LSPLL      (0x4U << MISC2_CLKSEL_CLKSEL_Pos)
+
+/*****  PLLL_ConfTypeDef PLLL *****/
+/* PLLL.Source */
+#define CLK_PLLLSRC_RCL       PMU_CONTROL_PLLL_SEL
+#define CLK_PLLLSRC_XTALL    (0)
+/* PLLL.State */
+#define CLK_PLLL_ON           ANA_REG3_PLLLPDN 
+#define CLK_PLLL_OFF         (0) 
+/* PLLL.Frequency */
+#define CLK_PLLL_26_2144MHz   ANA_REG9_PLLLSEL_26M
+#define CLK_PLLL_13_1072MHz   ANA_REG9_PLLLSEL_13M
+#define CLK_PLLL_6_5536MHz    ANA_REG9_PLLLSEL_6_5M
+#define CLK_PLLL_3_2768MHz    ANA_REG9_PLLLSEL_3_2M
+#define CLK_PLLL_1_6384MHz    ANA_REG9_PLLLSEL_1_6M
+#define CLK_PLLL_0_8192MHz    ANA_REG9_PLLLSEL_800K
+#define CLK_PLLL_0_4096MHz    ANA_REG9_PLLLSEL_400K
+#define CLK_PLLL_0_2048MHz    ANA_REG9_PLLLSEL_200K
+
+/*****  PLLH_ConfTypeDef PLLH *****/
+/* PLLH.Source */
+#define CLK_PLLHSRC_RCH      (0)
+#define CLK_PLLHSRC_XTALH     PMU_CONTROL_PLLH_SEL
+/* PLLH.State */
+#define CLK_PLLH_ON           ANA_REG3_PLLHPDN 
+#define CLK_PLLH_OFF         (0) 
+/* PLLH.Frequency */
+#define CLK_PLLH_13_1072MHz       ANA_REG9_PLLHSEL_X2
+#define CLK_PLLH_16_384MHz        ANA_REG9_PLLHSEL_X2_5
+#define CLK_PLLH_19_6608MHz       ANA_REG9_PLLHSEL_X3
+#define CLK_PLLH_22_9376MHz       ANA_REG9_PLLHSEL_X3_5
+#define CLK_PLLH_26_2144MHz       ANA_REG9_PLLHSEL_X4
+#define CLK_PLLH_29_4912MHz       ANA_REG9_PLLHSEL_X4_5
+#define CLK_PLLH_32_768MHz        ANA_REG9_PLLHSEL_X5
+#define CLK_PLLH_36_0448MHz       ANA_REG9_PLLHSEL_X5_5
+#define CLK_PLLH_39_3216MHz       ANA_REG9_PLLHSEL_X6
+#define CLK_PLLH_42_5984MHz       ANA_REG9_PLLHSEL_X6_5
+#define CLK_PLLH_45_8752MHz       ANA_REG9_PLLHSEL_X7
+#define CLK_PLLH_49_152MHz        ANA_REG9_PLLHSEL_X7_5
+
+/* XTALH_ConfTypeDef XTALH */
+/* XTALH.State */
+#define CLK_XTALH_ON         ANA_REG3_XOHPDN
+#define CLK_XTALH_OFF       (0)
+
+/* RTCCLK Configure */
+/* RTCCLK.Source */
+#define CLK_RTCCLKSRC_XTALL     (0)
+#define CLK_RTCCLKSRC_RCL       (PMU_CONTROL_RTCCLK_SEL)
+/* RTCCLK.Divider */
+#define CLK_RTCCLKDIV_1         (RTC_PSCA_PSCA_0)
+#define CLK_RTCCLKDIV_4         (RTC_PSCA_PSCA_1)
+
+//AHB Periphral
+#define CLK_AHBPERIPHRAL_DMA        MISC2_HCLKEN_DMA
+#define CLK_AHBPERIPHRAL_GPIO       MISC2_HCLKEN_GPIO
+#define CLK_AHBPERIPHRAL_LCD        MISC2_HCLKEN_LCD
+#define CLK_AHBPERIPHRAL_CRYPT      MISC2_HCLKEN_CRYPT    
+#define CLK_AHBPERIPHRAL_ALL       (MISC2_HCLKEN_DMA \
+                                   |MISC2_HCLKEN_GPIO \
+                                   |MISC2_HCLKEN_LCD \
+                                   |MISC2_HCLKEN_CRYPT)
+
+//APB Periphral  
+#define CLK_APBPERIPHRAL_DMA        MISC2_PCLKEN_DMA       
+#define CLK_APBPERIPHRAL_I2C        MISC2_PCLKEN_I2C       
+#define CLK_APBPERIPHRAL_SPI1       MISC2_PCLKEN_SPI1      
+#define CLK_APBPERIPHRAL_UART0      MISC2_PCLKEN_UART0     
+#define CLK_APBPERIPHRAL_UART1      MISC2_PCLKEN_UART1     
+#define CLK_APBPERIPHRAL_UART2      MISC2_PCLKEN_UART2     
+#define CLK_APBPERIPHRAL_UART3      MISC2_PCLKEN_UART3     
+#define CLK_APBPERIPHRAL_UART4      MISC2_PCLKEN_UART4     
+#define CLK_APBPERIPHRAL_UART5      MISC2_PCLKEN_UART5     
+#define CLK_APBPERIPHRAL_ISO78160   MISC2_PCLKEN_ISO78160     
+#define CLK_APBPERIPHRAL_ISO78161   MISC2_PCLKEN_ISO78161     
+#define CLK_APBPERIPHRAL_TIMER      MISC2_PCLKEN_TIMER     
+#define CLK_APBPERIPHRAL_MISC       MISC2_PCLKEN_MISC      
+#define CLK_APBPERIPHRAL_MISC2      MISC2_PCLKEN_MISC2 
+#define CLK_APBPERIPHRAL_PMU        MISC2_PCLKEN_PMU       
+#define CLK_APBPERIPHRAL_RTC        MISC2_PCLKEN_RTC       
+#define CLK_APBPERIPHRAL_ANA        MISC2_PCLKEN_ANA       
+#define CLK_APBPERIPHRAL_U32K0      MISC2_PCLKEN_U32K0     
+#define CLK_APBPERIPHRAL_U32K1      MISC2_PCLKEN_U32K1 
+#define CLK_APBPERIPHRAL_SPI2       MISC2_PCLKEN_SPI2 
+#define CLK_APBPERIPHRAL_ALL       (MISC2_PCLKEN_DMA \
+                                   |MISC2_PCLKEN_I2C \
+                                   |MISC2_PCLKEN_SPI1 \
+                                   |MISC2_PCLKEN_UART0 \
+                                   |MISC2_PCLKEN_UART1 \
+                                   |MISC2_PCLKEN_UART2 \
+                                   |MISC2_PCLKEN_UART3 \
+                                   |MISC2_PCLKEN_UART4 \
+                                   |MISC2_PCLKEN_UART5 \
+                                   |MISC2_PCLKEN_ISO78160 \
+                                   |MISC2_PCLKEN_ISO78161 \
+                                   |MISC2_PCLKEN_TIMER \
+                                   |MISC2_PCLKEN_MISC1 \
+                                   |MISC2_PCLKEN_MISC2 \
+                                   |MISC2_PCLKEN_PMU \
+                                   |MISC2_PCLKEN_RTC \
+                                   |MISC2_PCLKEN_ANA \
+                                   |MISC2_PCLKEN_U32K0 \
+                                   |MISC2_PCLKEN_U32K1 \
+                                   |MISC2_PCLKEN_SPI2  \
+                                   |MISC2_PCLKEN_SPI3)
+
+/***** PLLStatus (CLK_GetPLLLockStatus) *****/
+#define CLK_STATUS_LOCKL      ANA_CMPOUT_LOCKL
+#define CLK_STATUS_LOCKH      ANA_CMPOUT_LOCKH
+
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_CLK_TYPE(__TYPE__)   ((((__TYPE__) & CLK_TYPE_MSk) != 0UL) &&\
+                                 (((__TYPE__) & ~CLK_TYPE_MSk) == 0UL))
+
+#define IS_CLK_AHBSRC(__AHBSRC__)  (((__AHBSRC__) == CLK_AHBSEL_6_5MRC)   ||\
+                                    ((__AHBSRC__) == CLK_AHBSEL_6_5MXTAL) ||\
+                                    ((__AHBSRC__) == CLK_AHBSEL_HSPLL)    ||\
+                                    ((__AHBSRC__) == CLK_AHBSEL_RTCCLK)   ||\
+                                    ((__AHBSRC__) == CLK_AHBSEL_LSPLL))
+
+#define IS_CLK_PLLLSRC(__PLLLSRC__)  (((__PLLLSRC__) == CLK_PLLLSRC_RCL) ||\
+                                      ((__PLLLSRC__) == CLK_PLLLSRC_XTALL))
+
+#define IS_CLK_PLLLSTA(__PLLLSTA__)  (((__PLLLSTA__) == CLK_PLLL_ON) ||\
+                                      ((__PLLLSTA__) == CLK_PLLL_OFF))
+
+#define IS_CLK_PLLLFRQ(__PLLLFRQ__)  (((__PLLLFRQ__) == CLK_PLLL_26_2144MHz) ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_13_1072MHz) ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_6_5536MHz)  ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_3_2768MHz)  ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_1_6384MHz)  ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_0_8192MHz)  ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_0_4096MHz)  ||\
+                                      ((__PLLLFRQ__) == CLK_PLLL_0_2048MHz))
+
+#define IS_CLK_PLLHSRC(__PLLHSRC__)  (((__PLLHSRC__) == CLK_PLLHSRC_RCH) ||\
+                                      ((__PLLHSRC__) == CLK_PLLHSRC_XTALH))
+
+#define IS_CLK_PLLHSTA(__PLLHSTA__)  (((__PLLHSTA__) == CLK_PLLH_ON) ||\
+                                      ((__PLLHSTA__) == CLK_PLLH_OFF))
+
+#define IS_CLK_PLLHFRQ(__PLLHSRC__)  (((__PLLHSRC__) == CLK_PLLH_13_1072MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_16_384MHz)  ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_19_6608MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_22_9376MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_26_2144MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_29_4912MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_32_768MHz)  ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_36_0448MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_39_3216MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_42_5984MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_45_8752MHz) ||\
+                                      ((__PLLHSRC__) == CLK_PLLH_49_152MHz))
+
+#define IS_CLK_XTALHSTA(__XTALHSTA__)  (((__XTALHSTA__) == CLK_XTALH_ON) ||\
+                                        ((__XTALHSTA__) == CLK_XTALH_OFF))
+
+#define IS_CLK_RTCSRC(__RTCSRC__)  (((__RTCSRC__) == CLK_RTCCLKSRC_XTALL) ||\
+                                    ((__RTCSRC__) == CLK_RTCCLKSRC_RCL))
+
+#define IS_CLK_RTCDIV(__RTCDIV__)  (((__RTCDIV__) == CLK_RTCCLKDIV_1) ||\
+                                    ((__RTCDIV__) == CLK_RTCCLKDIV_4))
+
+#define IS_CLK_HCLKDIV(__HCLKDIV__)  (((__HCLKDIV__) > 0UL) &&\
+                                      ((__HCLKDIV__) < 257UL))
+
+#define IS_CLK_PCLKDIV(__PCLKDIV__)  (((__PCLKDIV__) > 0UL) &&\
+                                      ((__PCLKDIV__) < 257UL))
+
+#define IS_CLK_AHBPERIPHRAL(__AHBPERIPHRAL__)  ((((__AHBPERIPHRAL__) & CLK_AHBPERIPHRAL_ALL) != 0UL) &&\
+                                                (((__AHBPERIPHRAL__) & ~CLK_AHBPERIPHRAL_ALL) == 0UL))
+
+#define IS_CLK_APBPERIPHRAL(__APBPERIPHRAL__)  ((((__APBPERIPHRAL__) & CLK_APBPERIPHRAL_ALL) != 0UL) &&\
+                                                (((__APBPERIPHRAL__) & ~CLK_APBPERIPHRAL_ALL) == 0UL))
+
+#define IS_CLK_PLLLOCK(__PLLLOCK__)  (((__PLLLOCK__) == ANA_CMPOUT_LOCKL) ||\
+                                      ((__PLLLOCK__) == ANA_CMPOUT_LOCKH))
+/* Exported Functions ------------------------------------------------------- */
+/* CLK Exported Functions Group1: 
+                                  Initialization and functions ---------------*/
+void CLK_ClockConfig(CLK_InitTypeDef *CLK_ClkInitStruct);
+
+/* CLK Exported Functions Group2: 
+                                  Peripheral Control -------------------------*/
+void CLK_AHBPeriphralCmd(uint32_t Periphral, uint32_t NewState);
+void CLK_APBPeriphralCmd(uint32_t Periphral, uint32_t NewState);
+/* CLK Exported Functions Group3: 
+                                  Get clock/configuration information --------*/
+uint32_t CLK_GetHCLKFreq(void);
+uint32_t CLK_GetPCLKFreq(void);
+uint32_t CLK_GetPLLLFreq(void);
+void CLK_GetClockConfig(CLK_InitTypeDef *CLK_ClkInitStruct);
+uint8_t CLK_GetXTALHStatus(void);
+uint8_t CLK_GetXTALLStatus(void);
+uint8_t CLK_GetPLLLockStatus(uint32_t PLLStatus);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif /* __LIB_CLK_H */
+
+/*********************************** END OF FILE ******************************/

+ 205 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_cmp.h

@@ -0,0 +1,205 @@
+/**
+  ******************************************************************************
+  * @file    lib_cmp.h
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   CMP library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_CMP_H
+#define __LIB_CMP_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+/* CMP Time struct */
+typedef struct
+{
+  uint32_t DebSel;
+  uint32_t SignalSourceSel;
+  uint32_t BiasSel;
+} CMP_TypeDef;
+
+typedef struct
+{
+  uint32_t ModeSel;
+  uint32_t CheckPeriod;
+  uint32_t CheckNum;
+} CMP_CountTypeDef;
+
+typedef struct
+{
+  uint32_t DebSel;
+  uint32_t OutputSel;
+} CMP_OutputTypeDef;
+
+typedef struct
+{
+  uint32_t INTNumSel;
+  uint32_t SubSel;
+  uint32_t THRNum;
+} CMP_INTTypeDef;
+
+/* Macros --------------------------------------------------------------------*/
+
+/***** CMP_DEBConfig *****/
+//CMPx
+#define CMP_1                   (0x00U)
+#define CMP_2                   (0x02U)
+#define IS_CMP(__CMP__)  (((__CMP__) == CMP_1) || ((__CMP__) == CMP_2))
+/**************  Bits definition for ANA_REG2 register       ******************/
+#define ANA_REG2_CMP1SEL_0           (0x0U << ANA_REG2_CMP1SEL_Pos)
+#define ANA_REG2_CMP1SEL_1           (0x1U << ANA_REG2_CMP1SEL_Pos)
+#define ANA_REG2_CMP1SEL_2           (0x2U << ANA_REG2_CMP1SEL_Pos)
+#define ANA_REG2_CMP1SEL_3           (0x3U << ANA_REG2_CMP1SEL_Pos)
+#define ANA_REG2_CMP2SEL_0           (0x0U << ANA_REG2_CMP2SEL_Pos)
+#define ANA_REG2_CMP2SEL_1           (0x1U << ANA_REG2_CMP2SEL_Pos)
+#define ANA_REG2_CMP2SEL_2           (0x2U << ANA_REG2_CMP2SEL_Pos)
+#define ANA_REG2_CMP2SEL_3           (0x3U << ANA_REG2_CMP2SEL_Pos)
+/**************  Bits definition for ANA_REG5 register       ******************/
+#define ANA_REG5_CMP1IT_0            (0x0U << ANA_REG5_CMP1IT_Pos)
+#define ANA_REG5_CMP1IT_1            (0x1U << ANA_REG5_CMP1IT_Pos)
+#define ANA_REG5_CMP1IT_2            (0x2U << ANA_REG5_CMP1IT_Pos)
+#define ANA_REG5_CMP1IT_3            (0x3U << ANA_REG5_CMP1IT_Pos)
+#define ANA_REG5_CMP2IT_0            (0x0U << ANA_REG5_CMP2IT_Pos)
+#define ANA_REG5_CMP2IT_1            (0x1U << ANA_REG5_CMP2IT_Pos)
+#define ANA_REG5_CMP2IT_2            (0x2U << ANA_REG5_CMP2IT_Pos)
+#define ANA_REG5_CMP2IT_3            (0x3U << ANA_REG5_CMP2IT_Pos)
+/**************  Bits definition for ANA_CTRL register       ******************/
+//Debounce
+#define CMP_DEB_NONE                    (0x0U)
+#define CMP_DEB_RTCCLK_2                (0x1U)
+#define CMP_DEB_RTCCLK_3                (0x2U)
+#define CMP_DEB_RTCCLK_4                (0x3U)
+#define IS_CMP_DEB(__DEB__)           (((__DEB__) == CMP_DEB_NONE)     ||\
+                                       ((__DEB__) == CMP_DEB_RTCCLK_2) ||\
+                                       ((__DEB__) == CMP_DEB_RTCCLK_3) ||\
+                                       ((__DEB__) == CMP_DEB_RTCCLK_4))
+
+/***** SourceSelect (CMP_ConfigSignalSource) *****/
+#define CMP_SIGNALSRC_PPIN_TO_VREF       0x00
+#define CMP_SIGNALSRC_PPIN_TO_BGPREF     0x01
+#define CMP_SIGNALSRC_PBAT_TO_VREF       0x80
+#define CMP_SIGNALSRC_PBAT_TO_BGPREF     0x81
+#define CMP_SIGNALSRC_NPIN_TO_VREF       0x10
+#define CMP_SIGNALSRC_NPIN_TO_BGPREF     0x11
+#define CMP_SIGNALSRC_PPIN_TO_NPIN       0x20
+#define CMP_SIGNALSRC_PBAT_TO_NPIN       0xA0
+
+#define IS_CMP_SIGNALSRC(__SIGNALSRC__)  (((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_VREF)   ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_BGPREF) ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_NPIN)   ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_NPIN)   ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_VREF)   ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_BGPREF) ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_NPIN_TO_VREF)   ||\
+                                          ((__SIGNALSRC__) == CMP_SIGNALSRC_NPIN_TO_BGPREF))
+
+/***** BiasSel (CMP_BiasConfig) *****/
+#define CMP_BIAS_20nA             (0x0U)
+#define CMP_BIAS_100nA            (0x1U)
+#define CMP_BIAS_500nA            (0x2U)
+#define IS_CMP_BIAS(__BIAS__)  (((__BIAS__) == CMP_BIAS_20nA)   ||\
+                                ((__BIAS__) == CMP_BIAS_100nA)  ||\
+                                ((__BIAS__) == CMP_BIAS_500nA))
+
+/***** CheckPeriod (CMP_CheckFrequecnyConfig) *****/
+#define CMP_PERIOD_30US                0
+#define CMP_PERIOD_7_8125MS            1
+#define CMP_PERIOD_125MS               2
+#define CMP_PERIOD_250MS               3
+#define CMP_PERIOD_500MS               4
+#define IS_CMP_CHECKPERIOD(__CHECKPERIOD__)  (((__CHECKPERIOD__) == CMP_PERIOD_30US)    ||\
+                                              ((__CHECKPERIOD__) == CMP_PERIOD_7_8125MS)||\
+                                              ((__CHECKPERIOD__) == CMP_PERIOD_125MS)   ||\
+                                              ((__CHECKPERIOD__) == CMP_PERIOD_250MS)   ||\
+                                              ((__CHECKPERIOD__) == CMP_PERIOD_500MS))
+
+/***** Mode (CMP_ModeConfig) *****/
+#define CMP_MODE_OFF             (0x0U)
+#define CMP_MODE_RISING          (0x1U)
+#define CMP_MODE_FALLING         (0x2U)
+#define CMP_MODE_BOTH            (0x3U)
+#define IS_CMP_MODE(__MODE__)   (((__MODE__) == CMP_MODE_OFF)     ||\
+                                 ((__MODE__) == CMP_MODE_RISING)  ||\
+                                 ((__MODE__) == CMP_MODE_FALLING) ||\
+                                 ((__MODE__) == CMP_MODE_BOTH))
+
+//CountSel
+#define CMP_COUNT_NOSUB                0
+#define CMP_COUNT_SUB                  1
+#define IS_CMP_COUNT(__COUNT__)  (((__COUNT__) == CMP_COUNT_NOSUB)  ||\
+                                  ((__COUNT__) == CMP_COUNT_SUB))
+
+//SubSel
+#define CMP_INTNUM_EVERY                0
+#define CMP_INTNUM_1                    1
+#define IS_CMP_INTNUM(__INTNUM__)   (((__INTNUM__) == CMP_INTNUM_EVERY)  ||\
+                                     ((__INTNUM__) == CMP_INTNUM_1))
+
+//THRNum
+#define IS_CMP_THRNUM(__THRNUM__)  ((__THRNUM__) < 65536UL)
+
+#define CMP_CHKNUM_1                   0
+#define CMP_CHKNUM_2                   1
+#define CMP_CHKNUM_3                   2
+#define CMP_CHKNUM_4                   3
+#define CMP_CHKNUM_5                   4
+#define CMP_CHKNUM_6                   5
+#define CMP_CHKNUM_7                   6
+#define CMP_CHKNUM_8                   7
+#define CMP_CHKNUM_9                   8
+#define CMP_CHKNUM_10                  9
+#define CMP_CHKNUM_11                  10
+#define CMP_CHKNUM_12                  11
+#define CMP_CHKNUM_13                  12
+#define CMP_CHKNUM_14                  13
+#define CMP_CHKNUM_15                  14
+#define CMP_CHKNUM_16                  15
+#define IS_CMP_CHKNUM(__CHKNUM__)  (__CHKNUM__ < 16)
+
+//DebSel
+//SubSel
+#define CMP_OUTPUT_DEB                0
+#define CMP_OUTPUT_NODEB              1
+#define IS_CMP_OUTPUTDEB(__OUTPUTDEB__)   (((__OUTPUTDEB__) == CMP_OUTPUT_DEB)  ||\
+                                           ((__OUTPUTDEB__) == CMP_OUTPUT_NODEB))
+
+/* Exported Functions ------------------------------------------------------- */
+/* CMP Exported Functions Group1: 
+                                   (De)Initialization ------------------------*/
+void CMP_DeInit(uint32_t CMPx);
+void CMP_Init(uint32_t CMPx, CMP_TypeDef *InitStruct);
+void CMP_StructInit(CMP_TypeDef *InitStruct);
+void CMP_CountStructInit(CMP_CountTypeDef *InitStruct);
+void CMP_CountInit(uint32_t CMPx, CMP_CountTypeDef *InitStruct);
+void CMP_INTStructInit(CMP_INTTypeDef *InitStruct);
+void CMP_INTInit(uint32_t CMPx, CMP_INTTypeDef *InitStruct);
+void CMP_OutputStructInit(CMP_OutputTypeDef *InitStruct);
+void CMP_OutputInit(uint32_t CMPx, CMP_OutputTypeDef *InitStruct);
+/* CMP Exported Functions Group2: 
+                                   Interrupt (flag) --------------------------*/
+void CMP_INTConfig(uint32_t CMPx, uint32_t NewState);
+uint8_t CMP_GetINTStatus(uint32_t CMPx);
+void CMP_ClearINTStatus(uint32_t CMPx);
+/* CMP Exported Functions Group3:
+                                   MISC Configuration ------------------------*/
+void CMP_Cmd(uint32_t CMPx, uint32_t NewState);
+uint32_t CMP_GetCNTValue(uint32_t CMPx);
+void CMP_ClearCNTValue(uint32_t CMPx);
+uint8_t CMP_GetOutputValue(uint32_t CMPx);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_CMP_H */
+
+/*********************************** END OF FILE ******************************/

+ 107 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_crypt.h

@@ -0,0 +1,107 @@
+/**
+  ******************************************************************************
+  * @file    lib_crypt.h
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   CRYPT library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_CRYPT_H
+#define __LIB_CRYPT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+/**************  Bits definition for CRYPT_CTRL register     ******************/
+#define CRYPT_CTRL_MODE_MULTIPLY      (0x0U << CRYPT_CTRL_MODE_Pos) 
+#define CRYPT_CTRL_MODE_ADD           (0x1U << CRYPT_CTRL_MODE_Pos)
+#define CRYPT_CTRL_MODE_SUB           (0x2U << CRYPT_CTRL_MODE_Pos)
+#define CRYPT_CTRL_MODE_RSHIFT1       (0x3U << CRYPT_CTRL_MODE_Pos)
+#define CRYPT_CTRL_LENGTH_32          (0x0U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_64          (0x1U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_96          (0x2U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_128         (0x3U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_160         (0x4U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_192         (0x5U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_224         (0x6U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_256         (0x7U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_288         (0x8U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_320         (0x9U << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_352         (0xAU << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_384         (0xBU << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_416         (0xCU << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_448         (0xDU << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_480         (0xEU << CRYPT_CTRL_LENGTH_Pos)
+#define CRYPT_CTRL_LENGTH_512         (0xFU << CRYPT_CTRL_LENGTH_Pos)   
+//Length
+#define CRYPT_LENGTH_32    CRYPT_CTRL_LENGTH_32
+#define CRYPT_LENGTH_64    CRYPT_CTRL_LENGTH_64
+#define CRYPT_LENGTH_96    CRYPT_CTRL_LENGTH_96
+#define CRYPT_LENGTH_128   CRYPT_CTRL_LENGTH_128
+#define CRYPT_LENGTH_160   CRYPT_CTRL_LENGTH_160
+#define CRYPT_LENGTH_192   CRYPT_CTRL_LENGTH_192
+#define CRYPT_LENGTH_224   CRYPT_CTRL_LENGTH_224
+#define CRYPT_LENGTH_256   CRYPT_CTRL_LENGTH_256                
+#define CRYPT_LENGTH_288   CRYPT_CTRL_LENGTH_288
+#define CRYPT_LENGTH_320   CRYPT_CTRL_LENGTH_320
+#define CRYPT_LENGTH_352   CRYPT_CTRL_LENGTH_352  
+#define CRYPT_LENGTH_384   CRYPT_CTRL_LENGTH_384
+#define CRYPT_LENGTH_416   CRYPT_CTRL_LENGTH_416
+#define CRYPT_LENGTH_448   CRYPT_CTRL_LENGTH_448
+#define CRYPT_LENGTH_480   CRYPT_CTRL_LENGTH_480
+#define CRYPT_LENGTH_512   CRYPT_CTRL_LENGTH_512
+//Nostop
+#define CRYPT_STOPCPU     (0)
+#define CRYPT_NOSTOPCPU    CRYPT_CTRL_NOSTOP 
+   
+/* Private macros ------------------------------------------------------------*/
+#define IS_CRYPT_ADDR(__ADDR__)  (((__ADDR__) & 0x3U) == 0U)
+
+#define IS_CRYPT_LENGTH(__LENGTH__)  (((__LENGTH__) == CRYPT_LENGTH_32)  ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_64)  ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_32)  ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_96)  ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_128) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_160) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_192) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_224) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_256) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_288) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_320) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_352) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_384) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_416) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_448) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_480) ||\
+                                      ((__LENGTH__) == CRYPT_LENGTH_512))
+
+#define IS_CRYPT_NOSTOP(__NOSTOP__)  (((__NOSTOP__) == CRYPT_STOPCPU) || ((__NOSTOP__) == CRYPT_NOSTOPCPU))
+
+/****************************** CRYPT Instances *******************************/
+#define IS_CRYPT_ALL_INSTANCE(INSTANCE) ((INSTANCE) == CRYPT)
+
+/* Exported Functions ------------------------------------------------------- */
+void CRYPT_AddressAConfig(uint16_t AddrA);
+void CRYPT_AddressBConfig(uint16_t AddrB);
+void CRYPT_AddressOConfig(uint16_t AddrO);
+uint8_t CRYPT_GetCarryBorrowBit(void);
+void CRYPT_StartAdd(uint32_t Length, uint32_t Nostop);
+void CRYPT_StartMultiply(uint32_t Length, uint32_t Nostop);
+void CRYPT_StartSub(uint32_t Length, uint32_t Nostop);
+void CRYPT_StartRShift1(uint32_t Length, uint32_t Nostop);
+void CRYPT_WaitForLastOperation(void);
+
+                           
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_CRYPT_H */
+
+/*********************************** END OF FILE ******************************/

+ 267 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_dma.h

@@ -0,0 +1,267 @@
+/**
+  ******************************************************************************
+  * @file    lib_dma.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   DMA library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_DMA_H
+#define __LIB_DMA_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+//Channel
+#define DMA_CHANNEL_0       (0)
+#define DMA_CHANNEL_1       (1)
+#define DMA_CHANNEL_2       (2)
+#define DMA_CHANNEL_3       (3)
+   
+typedef struct
+{
+  uint32_t DestAddr;          /* destination address */
+  uint32_t SrcAddr;           /* source address */
+  uint8_t  FrameLen;          /* Frame length */
+  uint8_t  PackLen;           /* Package length */
+  uint32_t ContMode;          /* Continuous mode */
+  uint32_t TransMode;         /* Transfer mode */  
+  uint32_t ReqSrc;            /* DMA request source */
+  uint32_t DestAddrMode;      /* Destination address mode */
+  uint32_t SrcAddrMode;       /* Source address mode */
+  uint32_t TransSize;         /* Transfer size mode */
+} DMA_InitType;
+
+/**************  Bits definition for DMA_CxCTL register      ******************/
+
+
+
+/**************  Bits definition for DMA_AESCTL register     ******************/
+/****************************** DMA Instances *********************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) ((INSTANCE) == DMA)
+
+//ContMode
+#define DMA_CONTMODE_ENABLE     DMA_CCTL_CONT
+#define DMA_CONTMODE_DISABLE    0
+#define IS_DMA_CONTMOD(__CONTMOD__)  (((__CONTMOD__) == DMA_CONTMODE_ENABLE) ||\
+                                      ((__CONTMOD__) == DMA_CONTMODE_DISABLE))
+
+//TransMode
+#define DMA_TRANSMODE_SINGLE    0
+#define DMA_TRANSMODE_PACK      DMA_CCTL_TMODE
+#define IS_DMA_TRANSMOD(__TRANSMOD__)  (((__TRANSMOD__) == DMA_TRANSMODE_SINGLE) ||\
+                                        ((__TRANSMOD__) == DMA_TRANSMODE_PACK))
+
+//ReqSrc
+#define DMA_REQSRC_SOFT           (0x0U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000000 */
+#define DMA_REQSRC_ADC            (0x1U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000080 */
+#define DMA_REQSRC_UART0TX        (0x2U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000100 */
+#define DMA_REQSRC_UART0RX        (0x3U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000180 */
+#define DMA_REQSRC_UART1TX        (0x4U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000200 */
+#define DMA_REQSRC_UART1RX        (0x5U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000280 */
+#define DMA_REQSRC_UART2TX        (0x6U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000300 */
+#define DMA_REQSRC_UART2RX        (0x7U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000380 */
+#define DMA_REQSRC_UART3TX        (0x8U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000400 */
+#define DMA_REQSRC_UART3RX        (0x9U << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000480 */
+#define DMA_REQSRC_UART4TX        (0xAU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000500 */
+#define DMA_REQSRC_UART4RX        (0xBU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000580 */
+#define DMA_REQSRC_UART5TX        (0xCU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000600 */
+#define DMA_REQSRC_UART5RX        (0xDU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000680 */
+#define DMA_REQSRC_ISO78160TX     (0xEU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000700 */
+#define DMA_REQSRC_ISO78160RX     (0xFU << DMA_CCTL_DMASEL_Pos)             /*!< 0x00000780 */
+#define DMA_REQSRC_ISO78161TX     (0x10U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000800 */
+#define DMA_REQSRC_ISO78161RX     (0x11U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000880 */
+#define DMA_REQSRC_TIMER0         (0x12U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000900 */
+#define DMA_REQSRC_TIMER1         (0x13U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000980 */
+#define DMA_REQSRC_TIMER2         (0x14U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000A00 */
+#define DMA_REQSRC_TIMER3         (0x15U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000A80 */
+#define DMA_REQSRC_SPI1TX         (0x16U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000B00 */
+#define DMA_REQSRC_SPI1RX         (0x17U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000B80 */
+#define DMA_REQSRC_U32K0          (0x18U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000C00 */
+#define DMA_REQSRC_U32K1          (0x19U << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000C80 */
+#define DMA_REQSRC_CMP1           (0x1AU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000D00 */
+#define DMA_REQSRC_CMP2           (0x1BU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000D80 */
+#define DMA_REQSRC_SPI3TX         (0x1CU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000E00 */
+#define DMA_REQSRC_SPI3RX         (0x1DU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000E80 */
+#define DMA_REQSRC_SPI2TX         (0x1EU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000F00 */
+#define DMA_REQSRC_SPI2RX         (0x1FU << DMA_CCTL_DMASEL_Pos)            /*!< 0x00000F80 */
+
+#define IS_DMA_REQSRC(__REQSRC__)  (((__REQSRC__) == DMA_REQSRC_SOFT)       ||\
+                                    ((__REQSRC__) == DMA_REQSRC_ADC)        ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART0TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART0RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART1TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART1RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART2TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART2RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART3TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART3RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART4TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART4RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART5TX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_UART5RX)    ||\
+                                    ((__REQSRC__) == DMA_REQSRC_ISO78160TX) ||\
+                                    ((__REQSRC__) == DMA_REQSRC_ISO78160RX) ||\
+                                    ((__REQSRC__) == DMA_REQSRC_ISO78161TX) ||\
+                                    ((__REQSRC__) == DMA_REQSRC_ISO78161RX) ||\
+                                    ((__REQSRC__) == DMA_REQSRC_TIMER0)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_TIMER1)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_TIMER2)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_TIMER3)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI1TX)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI1RX)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_U32K0)      ||\
+                                    ((__REQSRC__) == DMA_REQSRC_U32K1)      ||\
+                                    ((__REQSRC__) == DMA_REQSRC_CMP1)       ||\
+                                    ((__REQSRC__) == DMA_REQSRC_CMP2)       ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI3TX)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI3RX)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI2TX)     ||\
+                                    ((__REQSRC__) == DMA_REQSRC_SPI2RX))
+
+
+//DestAddrMode
+#define DMA_DESTADDRMODE_FIX          (0x0U << DMA_CCTL_DMODE_Pos)            /*!< 0x00000000 */
+#define DMA_DESTADDRMODE_PEND         (0x1U << DMA_CCTL_DMODE_Pos)            /*!< 0x00000020 */
+#define DMA_DESTADDRMODE_FEND         (0x2U << DMA_CCTL_DMODE_Pos)            /*!< 0x00000040 */
+#define IS_DMA_DESTADDRMOD(__DAM__)  (((__DAM__) == DMA_DESTADDRMODE_FIX)  ||\
+                                      ((__DAM__) == DMA_DESTADDRMODE_PEND) ||\
+                                      ((__DAM__) == DMA_DESTADDRMODE_FEND))
+
+//SrcAddrMode
+#define DMA_SRCADDRMODE_FIX          (0x0U << DMA_CCTL_SMODE_Pos)            /*!< 0x00000000 */
+#define DMA_SRCADDRMODE_PEND         (0x1U << DMA_CCTL_SMODE_Pos)            /*!< 0x00000008 */
+#define DMA_SRCADDRMODE_FEND         (0x2U << DMA_CCTL_SMODE_Pos)            /*!< 0x00000010 */
+#define IS_DMA_SRCADDRMOD(__SAM__)  (((__SAM__) == DMA_SRCADDRMODE_FIX)  ||\
+                                     ((__SAM__) == DMA_SRCADDRMODE_PEND) ||\
+                                     ((__SAM__) == DMA_SRCADDRMODE_FEND))
+
+//TransSize
+#define DMA_TRANSSIZE_BYTE           (0x0U << DMA_CCTL_SIZE_Pos) 
+#define DMA_TRANSSIZE_HWORD          (0x1U << DMA_CCTL_SIZE_Pos)
+#define DMA_TRANSSIZE_WORD           (0x2U << DMA_CCTL_SIZE_Pos) 
+#define IS_DMA_TRANSSIZE(__TSIZE__)  (((__TSIZE__) == DMA_TRANSSIZE_BYTE)  ||\
+                                      ((__TSIZE__) == DMA_TRANSSIZE_HWORD) ||\
+                                      ((__TSIZE__) == DMA_TRANSSIZE_WORD))
+
+#define IS_DMA_ALIGNEDADDR_WORD(__ADDRW__)    (((__ADDRW__) & 0x3U) == 0U)
+#define IS_DMA_ALIGNEDADDR_HWORD(__ADDRHW__)  (((__ADDRHW__) & 0x1U) == 0U)
+
+typedef struct
+{
+  uint32_t Mode;       /* AES mode */
+  uint32_t Direction;  /* Direction */
+  uint32_t *KeyStr;    /* AES key */
+} DMA_AESInitType;
+
+//AES MODE
+#define DMA_AESMODE_128        (0x0U << DMA_AESCTL_MODE_Pos)            /*!< 0x00000000 */
+#define DMA_AESMODE_192        (0x1U << DMA_AESCTL_MODE_Pos)            /*!< 0x00000004 */
+#define DMA_AESMODE_256        (0x2U << DMA_AESCTL_MODE_Pos)            /*!< 0x00000008 */
+#define IS_DMA_AESMOD(__AESMOD__)  (((__AESMOD__) == DMA_AESMODE_128) ||\
+                                    ((__AESMOD__) == DMA_AESMODE_192) ||\
+                                    ((__AESMOD__) == DMA_AESMODE_256))
+
+//AES Direction
+#define DMA_AESDIRECTION_ENCODE         DMA_AESCTL_ENC
+#define DMA_AESDIRECTION_DECODE         0
+#define IS_DMA_AESDIR(__AESDIR__)  (((__AESDIR__) == DMA_AESDIRECTION_ENCODE) ||\
+                                    ((__AESDIR__) == DMA_AESDIRECTION_DECODE))
+
+//INT
+#define DMA_INT_C3DA        DMA_IE_C3DAIE
+#define DMA_INT_C2DA        DMA_IE_C2DAIE
+#define DMA_INT_C1DA        DMA_IE_C1DAIE
+#define DMA_INT_C0DA        DMA_IE_C0DAIE
+#define DMA_INT_C3FE        DMA_IE_C3FEIE
+#define DMA_INT_C2FE        DMA_IE_C2FEIE
+#define DMA_INT_C1FE        DMA_IE_C1FEIE
+#define DMA_INT_C0FE        DMA_IE_C0FEIE
+#define DMA_INT_C3PE        DMA_IE_C3PEIE
+#define DMA_INT_C2PE        DMA_IE_C2PEIE
+#define DMA_INT_C1PE        DMA_IE_C1PEIE
+#define DMA_INT_C0PE        DMA_IE_C0PEIE
+#define DMA_INT_Msk        (0xFFFUL)
+#define IS_DMA_INT(__INT__)  ((((__INT__) & DMA_INT_Msk) != 0U) &&\
+                              (((__INT__) & ~DMA_INT_Msk) == 0U))
+
+//INTSTS
+#define DMA_INTSTS_C3DA         DMA_STS_C3DA   
+#define DMA_INTSTS_C2DA         DMA_STS_C2DA   
+#define DMA_INTSTS_C1DA         DMA_STS_C1DA   
+#define DMA_INTSTS_C0DA         DMA_STS_C0DA   
+#define DMA_INTSTS_C3FE         DMA_STS_C3FE   
+#define DMA_INTSTS_C2FE         DMA_STS_C2FE   
+#define DMA_INTSTS_C1FE         DMA_STS_C1FE   
+#define DMA_INTSTS_C0FE         DMA_STS_C0FE   
+#define DMA_INTSTS_C3PE         DMA_STS_C3PE   
+#define DMA_INTSTS_C2PE         DMA_STS_C2PE   
+#define DMA_INTSTS_C1PE         DMA_STS_C1PE   
+#define DMA_INTSTS_C0PE         DMA_STS_C0PE   
+#define DMA_INTSTS_C3BUSY       DMA_STS_C3BUSY 
+#define DMA_INTSTS_C2BUSY       DMA_STS_C2BUSY 
+#define DMA_INTSTS_C1BUSY       DMA_STS_C1BUSY 
+#define DMA_INTSTS_C0BUSY       DMA_STS_C0BUSY
+#define DMA_INTSTS_Msk         (0xFFF0UL)
+
+#define IS_DMA_INTFLAGR(__INTFLAGR__)  (((__INTFLAGR__) == DMA_INTSTS_C3DA) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C2DA) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C1DA) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C0DA) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C3FE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C2FE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C1FE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C0FE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C3PE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C2PE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C1PE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C0PE) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C3BUSY) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C2BUSY) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C1BUSY) ||\
+                                        ((__INTFLAGR__) == DMA_INTSTS_C0BUSY))
+
+#define IS_DMA_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & DMA_INTSTS_Msk) != 0U) &&\
+                                        (((__INTFLAGC__) & ~DMA_INTSTS_Msk) == 0U))
+
+#define IS_DMA_CHANNEL(__CH__)  (((__CH__) == DMA_CHANNEL_0) ||\
+                                 ((__CH__) == DMA_CHANNEL_1) ||\
+                                 ((__CH__) == DMA_CHANNEL_2) ||\
+                                 ((__CH__) == DMA_CHANNEL_3))
+
+/* Exported Functions ------------------------------------------------------- */
+/* DMA Exported Functions Group1: 
+                                   (De)Initialization ------------------------*/
+void DMA_DeInit(uint32_t Channel);
+void DMA_Init(DMA_InitType *InitStruct, uint32_t Channel);
+void DMA_StructInit(DMA_InitType *InitStruct);
+void DMA_ASEDeInit(void);
+void DMA_AESInit(DMA_AESInitType *InitStruct);
+/* DMA Exported Functions Group2: 
+                                   Interrupt (flag) --------------------------*/
+void DMA_INTConfig(uint32_t INTMask, uint32_t NewState);
+uint8_t DMA_GetINTStatus(uint32_t INTMask);
+void DMA_ClearINTStatus(uint32_t INTMask);
+/* DMA Exported Functions Group3:
+                                   MISC Configuration ------------------------*/
+void DMA_Cmd(uint32_t Channel, uint32_t NewState);
+void DMA_AESCmd(uint32_t NewState);
+void DMA_StopTransmit(uint32_t Channel, uint32_t NewState);
+uint8_t DMA_GetFrameLenTransferred(uint32_t Channel);
+uint8_t DMA_GetPackLenTransferred(uint32_t Channel);
+
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_DMA_H */
+
+/*********************************** END OF FILE ******************************/

+ 159 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_flash.h

@@ -0,0 +1,159 @@
+/**
+  ******************************************************************************
+  * @file    lib_flash.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   FLASH library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_FLASH_H
+#define __LIB_FLASH_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+#define FLASH_BLOCK_0             (0x00000001UL)
+#define FLASH_BLOCK_1             (0x00000002UL)
+#define FLASH_BLOCK_2             (0x00000004UL)
+#define FLASH_BLOCK_3             (0x00000008UL)
+#define FLASH_BLOCK_4             (0x00000010UL)
+#define FLASH_BLOCK_5             (0x00000020UL)
+#define FLASH_BLOCK_6             (0x00000040UL)
+#define FLASH_BLOCK_7             (0x00000080UL)
+#define FLASH_BLOCK_8             (0x00000100UL)
+#define FLASH_BLOCK_9             (0x00000200UL)
+#define FLASH_BLOCK_10            (0x00000400UL)
+#define FLASH_BLOCK_11            (0x00000800UL)
+#define FLASH_BLOCK_12            (0x00001000UL)
+#define FLASH_BLOCK_13            (0x00002000UL)
+#define FLASH_BLOCK_14            (0x00004000UL)
+#define FLASH_BLOCK_15            (0x00008000UL)
+#define FLASH_BLOCK_16            (0x00010000UL)
+#define FLASH_BLOCK_17            (0x00020000UL)
+#define FLASH_BLOCK_18            (0x00040000UL)
+#define FLASH_BLOCK_19            (0x00080000UL)
+#define FLASH_BLOCK_20            (0x00100000UL)
+#define FLASH_BLOCK_21            (0x00200000UL)
+#define FLASH_BLOCK_22            (0x00400000UL)
+#define FLASH_BLOCK_23            (0x00800000UL)
+#define FLASH_BLOCK_24            (0x01000000UL)
+#define FLASH_BLOCK_25            (0x02000000UL)
+#define FLASH_BLOCK_26            (0x04000000UL)
+#define FLASH_BLOCK_27            (0x08000000UL)
+#define FLASH_BLOCK_28            (0x10000000UL)
+#define FLASH_BLOCK_29            (0x20000000UL)
+#define FLASH_BLOCK_30            (0x40000000UL)
+#define FLASH_BLOCK_31            (0x80000000UL)
+#define FLASH_BLOCK_Msk           (0xFFFFFFFFUL)
+#define FLASH_BLOCK_ALL           FLASH_BLOCK_Msk
+#define IS_FLASH_RWBLOCK(__BLOCK__)  ((((__BLOCK__) & FLASH_BLOCK_Msk) != 0UL) &&\
+                                      (((__BLOCK__) & ~FLASH_BLOCK_Msk) == 0UL))
+
+#define IS_FLASH_BLOCK(__BLOCK__)         (((__BLOCK__) == FLASH_BLOCK_0)      ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_1)      ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_2)      ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_3)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_4)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_5)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_6)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_7)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_8)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_9)    ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_10)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_11)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_12)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_13)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_14)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_15)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_16)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_17)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_18)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_19)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_20)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_21)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_22)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_23)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_24)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_25)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_26)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_27)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_28)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_29)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_30)   ||\
+                                           ((__BLOCK__) == FLASH_BLOCK_31))
+
+#define FLASH_READ                    (0)
+#define FLASH_WRITE                   (1)
+#define IS_FLASH_OPERATION(__OPERATION__)    (((__OPERATION__) == FLASH_READ)  ||\
+                                              ((__OPERATION__) == FLASH_WRITE))
+
+/**************  Bits definition for FLASH_CTRL register     ******************/
+#define FLASH_CTRL_CSMODE_DISABLE     (0x0U << FLASH_CTRL_CSMODE_Pos)          /*!< 0x00000000 */
+#define FLASH_CTRL_CSMODE_ALWAYSON    (0x1U << FLASH_CTRL_CSMODE_Pos)          /*!< 0x00000001 */
+#define FLASH_CTRL_CSMODE_TIM2OV      (0x2U << FLASH_CTRL_CSMODE_Pos)          /*!< 0x00000002 */
+#define FLASH_CTRL_CSMODE_RTC         (0x3U << FLASH_CTRL_CSMODE_Pos)          /*!< 0x00000003 */
+
+//CSMode
+#define FLASH_CSMODE_DISABLE        FLASH_CTRL_CSMODE_DISABLE
+#define FLASH_CSMODE_ALWAYSON       FLASH_CTRL_CSMODE_ALWAYSON
+#define FLASH_CSMODE_TMR2OF         FLASH_CTRL_CSMODE_TIM2OV
+#define FLASH_CSMODE_RTC            FLASH_CTRL_CSMODE_RTC
+#define IS_FLASH_CSMODE(__CSMODE__)  (((__CSMODE__) == FLASH_CSMODE_DISABLE)  ||\
+                                      ((__CSMODE__) == FLASH_CSMODE_ALWAYSON) ||\
+                                      ((__CSMODE__) == FLASH_CSMODE_TMR2OF)   ||\
+                                      ((__CSMODE__) == FLASH_CSMODE_RTC))
+
+//INT
+#define FLASH_INT_CS                FLASH_CTRL_CSINTEN
+#define IS_FLASH_INT(__INT__)  ((__INT__) == FLASH_INT_CS)
+
+//WriteStatus
+#define FLASH_WSTA_BUSY         0
+#define FLASH_WRITE_FINISH      1
+#define FLASH_WSTA_FINISH       FLASH_WRITE_FINISH
+
+#define IS_FLASH_ADDRESS(__ADDRESS__) ((__ADDRESS__) < 0x80000UL)
+
+#define IS_FLASH_ADRRW(__ADDRW__)  (((__ADDRW__) < 0x80000UL) &&\
+                                    (((__ADDRW__) & 0x3U) == 0U))
+
+#define IS_FLASH_ADRRHW(__ADDRHW__)  (((__ADDRHW__) < 0x80000UL) &&\
+                                      (((__ADDRHW__) & 0x1U) == 0U))
+
+#define IS_FLASH_CHECKSUMADDR(__ADDRESS1__,__ADDRESS2__) (((__ADDRESS1__) < 0x80000) && ((__ADDRESS2__) < 0x80000) && ((__ADDRESS1__) < (__ADDRESS2__)))
+
+/* Exported Functions ------------------------------------------------------- */
+
+void FLASH_Init(uint32_t CSMode);
+void FLASH_INTConfig(uint32_t IntMask, uint32_t NewState);
+void FLASH_CycleInit(void);
+void FLASH_SectorErase(uint32_t SectorAddr);
+void FLASH_ChipErase(void);
+void FLASH_ProgramWord(uint32_t Addr, uint32_t *WordBuffer, uint32_t Length);
+void FLASH_ProgramHWord(uint32_t Addr, uint16_t *HWordBuffer, uint32_t Length);
+void FLASH_ProgramByte(uint32_t Addr, uint8_t *ByteBuffer, uint32_t Length);
+void FLASH_SetReadProtection(uint32_t Block);
+void FLASH_WriteProtection(uint32_t Block, uint32_t NewState);
+void FLASH_ICEProtection(uint32_t NewState);
+uint8_t FLASH_GetProtectionStatus(uint32_t Block, uint32_t Operation);
+uint32_t FLASH_GetAllProtectionStatus(uint32_t Operation);
+void FLASH_SetCheckSumRange(uint32_t AddrStart, uint32_t AddrEnd);
+void FLASH_SetCheckSumCompValue(uint32_t Checksum);
+uint32_t FLASH_GetCheckSum(void);
+uint8_t FLASH_GetINTStatus(uint32_t IntMask);
+void FLASH_ClearINTStatus(uint32_t IntMask);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_FLASH_H */
+
+/*********************************** END OF FILE ******************************/

+ 225 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_gpio.h

@@ -0,0 +1,225 @@
+/**
+  ******************************************************************************
+  * @file    lib_gpio.h
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   GPIO library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_GPIO_H
+#define __LIB_GPIO_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+#define GET_BITBAND_ADDR(addr, bitnum)  ((((uint32_t)addr) & 0xF0000000) + \
+                                        0x2000000 + ((((uint32_t)addr) & 0xFFFFF) << 5) + (bitnum << 2))
+
+typedef struct
+{
+  uint32_t GPIO_Pin;
+  uint32_t GPIO_Mode;
+} GPIO_InitType;
+
+typedef struct
+{
+  __IO uint32_t DATBitBand[16];
+} GPIO_DATInitType;
+
+/**
+  * @brief Bit_State_enumeration
+  */
+typedef enum {
+    Bit_RESET = 0,
+    Bit_SET
+} BitState;
+
+#define GPIO_A  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x40014018,0)))
+#define GPIO_B  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x40000028,0)))
+#define GPIO_C  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x40000048,0)))
+#define GPIO_D  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x40000068,0)))
+#define GPIO_E  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x40000088,0)))
+#define GPIO_F  ((GPIO_DATInitType*) (uint32_t)(GET_BITBAND_ADDR(0x400000A8,0)))
+#define IS_GPIO_DAT(__GPIODAT__) (((__GPIODAT__) == GPIO_A)   ||\
+                                  ((__GPIODAT__) == GPIO_B)   ||\
+                                  ((__GPIODAT__) == GPIO_C)   ||\
+                                  ((__GPIODAT__) == GPIO_D)   ||\
+                                  ((__GPIODAT__) == GPIO_E)   ||\
+                                  ((__GPIODAT__) == GPIO_F))
+
+#define IS_GPIO_PINNUM(__PINNUM__)  ((__PINNUM__) < 16U)
+
+#define IS_GPIO_BITVAL(__BITVAL__)  (((__BITVAL__) == 1U) || ((__BITVAL__) == 0U))
+
+//GPIO_Pin
+#define GPIO_Pin_0                 ((uint16_t)0x0001)
+#define GPIO_Pin_1                 ((uint16_t)0x0002)
+#define GPIO_Pin_2                 ((uint16_t)0x0004)
+#define GPIO_Pin_3                 ((uint16_t)0x0008)
+#define GPIO_Pin_4                 ((uint16_t)0x0010)
+#define GPIO_Pin_5                 ((uint16_t)0x0020)
+#define GPIO_Pin_6                 ((uint16_t)0x0040)
+#define GPIO_Pin_7                 ((uint16_t)0x0080)
+#define GPIO_Pin_8                 ((uint16_t)0x0100)
+#define GPIO_Pin_9                 ((uint16_t)0x0200)
+#define GPIO_Pin_10                ((uint16_t)0x0400)
+#define GPIO_Pin_11                ((uint16_t)0x0800)
+#define GPIO_Pin_12                ((uint16_t)0x1000)
+#define GPIO_Pin_13                ((uint16_t)0x2000)
+#define GPIO_Pin_14                ((uint16_t)0x4000)
+#define GPIO_Pin_15                ((uint16_t)0x8000)
+#define GPIO_Pin_All               ((uint16_t)0xFFFF)
+#define IS_GPIO_PIN(__PIN__)  ((((__PIN__) & GPIO_Pin_All) != 0UL) &&\
+                               (((__PIN__) & ~GPIO_Pin_All) == 0UL))
+#define IS_GPIO_PINR(__PINR__)  (((__PINR__) == GPIO_Pin_0) ||\
+                                 ((__PINR__) == GPIO_Pin_1) ||\
+                                 ((__PINR__) == GPIO_Pin_2) ||\
+                                 ((__PINR__) == GPIO_Pin_3) ||\
+                                 ((__PINR__) == GPIO_Pin_4) ||\
+                                 ((__PINR__) == GPIO_Pin_5) ||\
+                                 ((__PINR__) == GPIO_Pin_6) ||\
+                                 ((__PINR__) == GPIO_Pin_7) ||\
+                                 ((__PINR__) == GPIO_Pin_8) ||\
+                                 ((__PINR__) == GPIO_Pin_9) ||\
+                                 ((__PINR__) == GPIO_Pin_10) ||\
+                                 ((__PINR__) == GPIO_Pin_11) ||\
+                                 ((__PINR__) == GPIO_Pin_12) ||\
+                                 ((__PINR__) == GPIO_Pin_13) ||\
+                                 ((__PINR__) == GPIO_Pin_14) ||\
+                                 ((__PINR__) == GPIO_Pin_15))
+
+//GPIO_Mode
+#define GPIO_MODE_INPUT           (0xCU)
+#define GPIO_MODE_OUTPUT_CMOS     (0x2U)
+#define GPIO_MODE_OUTPUT_OD       (0x3U)
+#define GPIO_MODE_INOUT_OD        (0xBU)
+#define GPIO_MODE_INOUT_CMOS      (0xAU)
+#define GPIO_MODE_FORBIDDEN       (0x4U)
+#define IS_GPIO_MODE(__MODE__)  (((__MODE__) ==  GPIO_MODE_INPUT)       ||\
+                                 ((__MODE__) ==  GPIO_MODE_OUTPUT_CMOS) ||\
+                                 ((__MODE__) ==  GPIO_MODE_OUTPUT_OD)   ||\
+                                 ((__MODE__) ==  GPIO_MODE_INOUT_OD)    ||\
+                                 ((__MODE__) ==  GPIO_MODE_INOUT_CMOS)  ||\
+                                 ((__MODE__) ==  GPIO_MODE_FORBIDDEN))
+
+/**************  Bits definition for IO_MISC register        ******************/
+#define IO_MISC_PLLHDIV_1             (0x0U << GPIOAF_IO_MISC_PLLHDIV_Pos)
+#define IO_MISC_PLLHDIV_2             (0x1U << GPIOAF_IO_MISC_PLLHDIV_Pos)
+#define IO_MISC_PLLHDIV_4             (0x2U << GPIOAF_IO_MISC_PLLHDIV_Pos)
+#define IO_MISC_PLLHDIV_8             (0x3U << GPIOAF_IO_MISC_PLLHDIV_Pos)
+#define IO_MISC_PLLHDIV_16            (0x4U << GPIOAF_IO_MISC_PLLHDIV_Pos)
+
+//GPIO AF
+#define GPIOB_AF_PLLHDIV     GPIOAF_IOB_SEL_SEL1
+#define GPIOB_AF_PLLLOUT     GPIOAF_IOB_SEL_SEL2
+#define GPIOB_AF_OSC         GPIOAF_IOB_SEL_SEL6
+#define GPIOE_AF_CMP1O       GPIOAF_IOE_SEL_SEL7
+#define IS_GPIO_GPIOAF(__GPIOAF__)  (((__GPIOAF__) == GPIOB_AF_PLLHDIV) ||\
+                                     ((__GPIOAF__) == GPIOB_AF_PLLLOUT) ||\
+                                     ((__GPIOAF__) == GPIOB_AF_OSC)     ||\
+                                     ((__GPIOAF__) == GPIOE_AF_CMP1O))
+
+#define IS_GPIOB_GPIOAF(__GPIOAF__)  (((__GPIOAF__) == GPIOB_AF_PLLHDIV) ||\
+                                      ((__GPIOAF__) == GPIOB_AF_PLLLOUT) ||\
+                                      ((__GPIOAF__) == GPIOB_AF_OSC))
+
+#define IS_GPIOE_GPIOAF(__GPIOAF__)  ((__GPIOAF__) == GPIOE_AF_CMP1O)
+
+
+//PMUIO AF
+#define PMUIO7_AF_PLLDIV     GPIOA_SEL_SEL7
+#define PMUIO6_AF_CMP2O      GPIOA_SEL_SEL6
+#define PMUIO3_AF_PLLDIV     GPIOA_SEL_SEL3
+#define PMUIO_AF_Msk        (PMUIO7_AF_PLLDIV | PMUIO6_AF_CMP2O | PMUIO3_AF_PLLDIV)
+
+//GPIO pin remap
+#define GPIO_REMAP_I2C       GPIOAF_IO_MISC_I2CIOC
+#define IS_GPIO_REMAP(__REMAP__)     ((__REMAP__) == GPIO_REMAP_I2C)
+
+//PLLDIV
+#define  GPIO_PLLDIV_1            IO_MISC_PLLHDIV_1
+#define  GPIO_PLLDIV_2            IO_MISC_PLLHDIV_2
+#define  GPIO_PLLDIV_4            IO_MISC_PLLHDIV_4
+#define  GPIO_PLLDIV_8            IO_MISC_PLLHDIV_8
+#define  GPIO_PLLDIV_16           IO_MISC_PLLHDIV_16
+#define IS_GPIO_PLLDIV(__PLLDIV__)  (((__PLLDIV__) == GPIO_PLLDIV_1) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_2) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_4) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_8) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_16))
+
+
+#define IS_GPIO_ALL_INSTANCE(INSTANCE)  (((INSTANCE) == GPIOB) || \
+                                         ((INSTANCE) == GPIOC) || \
+                                         ((INSTANCE) == GPIOD) || \
+                                         ((INSTANCE) == GPIOE) || \
+                                         ((INSTANCE) == GPIOF))
+
+#define IS_PMUIO_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == GPIOA)
+
+#define IS_GPIOAF_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOB) || \
+                                          ((INSTANCE) == GPIOE))
+
+#define IS_GPIOE_GPIOAF(__GPIOAF__)  ((__GPIOAF__) == GPIOE_AF_CMP1O)
+
+#define IS_GPIO_PMUIOAF(__PMUIOAF__)  ((((__PMUIOAF__) & PMUIO_AF_Msk) != 0U) &&\
+                                       (((__PMUIOAF__) & ~PMUIO_AF_Msk) == 0U))
+
+#define IS_GPIO_REMAP(__REMAP__)  ((__REMAP__) == GPIO_REMAP_I2C)
+
+#define IS_GPIO_PLLDIV(__PLLDIV__)  (((__PLLDIV__) == GPIO_PLLDIV_1) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_2) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_4) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_8) ||\
+                                     ((__PLLDIV__) == GPIO_PLLDIV_16))
+
+/* Exported Functions ------------------------------------------------------- */
+/* GPIO Exported Functions Group1:
+                                   Initialization and functions --------------*/
+void GPIOBToF_Init(GPIO_Type *GPIOx, GPIO_InitType *InitStruct);
+void GPIOA_Init(GPIOA_Type *GPIOx, GPIO_InitType *InitStruct);
+/* GPIO Exported Functions Group2:
+                                   Read input data ---------------------------*/
+uint8_t GPIOBToF_ReadInputDataBit(GPIO_Type *GPIOx, uint16_t GPIO_Pin);
+uint8_t GPIOA_ReadInputDataBit(GPIOA_Type *GPIOx, uint16_t GPIO_Pin);
+uint16_t GPIOBToF_ReadInputData(GPIO_Type* GPIOx);
+uint16_t GPIOA_ReadInputData(GPIOA_Type* GPIOx);
+/* GPIO Exported Functions Group3:
+                                   Read output data --------------------------*/
+uint8_t GPIOBToF_ReadOutputDataBit(GPIO_Type* GPIOx, uint16_t GPIO_Pin);
+uint8_t GPIOA_ReadOutputDataBit(GPIOA_Type* GPIOx, uint16_t GPIO_Pin);
+uint16_t GPIOBToF_ReadOutputData(GPIO_Type* GPIOx);
+uint16_t GPIOA_ReadOutputData(GPIOA_Type* GPIOx);
+/* GPIO Exported Functions Group4:
+                                   Write output data -------------------------*/
+void GPIO_WriteBit(GPIO_DATInitType* DATx, uint8_t PinNum, uint8_t val);
+void GPIOBToF_WriteBit(GPIO_Type* GPIOx, uint16_t GPIO_Pin, uint8_t val);
+void GPIOA_WriteBit(GPIOA_Type* GPIOx, uint16_t GPIO_Pin, uint8_t val);
+void GPIOBToF_Write(GPIO_Type* GPIOx, uint16_t val);
+void GPIOA_Write(GPIOA_Type* GPIOx, uint16_t val);
+/* GPIO Exported Functions Group5:
+                                   IO AF configure ---------------------------*/
+void GPIOBToF_AFConfig(GPIO_Type* GPIOx, uint32_t GPIO_AFx, uint8_t NewState);
+void GPIOA_AFConfig(uint32_t PMUIO_AFx, uint8_t NewState);
+/* GPIO Exported Functions Group6:
+                                   IO Remap configure ------------------------*/
+void GPIO_PinRemapConfig(uint32_t GPIO_Remap, uint8_t NewState);
+/* GPIO Exported Functions Group7:
+                                   Others ------------------------------------*/
+void GPIO_PLLDIVConfig(uint32_t Divider);
+void GPIOA_DeGlitchCmd( uint16_t GPIO_Pin, uint8_t NewState);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __LIB_GPIO_H */
+
+/*********************************** END OF FILE ******************************/

+ 164 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_i2c.h

@@ -0,0 +1,164 @@
+/**
+  ******************************************************************************
+  * @file    lib_i2c.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   IIC library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_I2C_H
+#define __LIB_I2C_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+typedef struct
+{
+  uint32_t SlaveAddr;
+  uint32_t GeneralCallAck;
+  uint32_t AssertAcknowledge;
+  uint32_t ClockSource;
+} I2C_InitType;
+
+/**************  Bits definition for I2C_CTRL register       ******************/
+#define I2C_CTRL_CR_0                 (0x0U << I2C_CTRL_CR0_Pos)                /*!< 0x0000000 */
+#define I2C_CTRL_CR_1                 (0x1U << I2C_CTRL_CR0_Pos)                /*!< 0x0000001 */
+#define I2C_CTRL_CR_2                 (0x2U << I2C_CTRL_CR0_Pos)                /*!< 0x0000002 */
+#define I2C_CTRL_CR_3                 (0x3U << I2C_CTRL_CR0_Pos)                /*!< 0x0000003 */
+#define I2C_CTRL_CR_4                 (0x80U << I2C_CTRL_CR0_Pos)               /*!< 0x0000080 */
+#define I2C_CTRL_CR_5                 (0x81U << I2C_CTRL_CR0_Pos)               /*!< 0x0000081 */
+#define I2C_CTRL_CR_6                 (0x82U << I2C_CTRL_CR0_Pos)               /*!< 0x0000082 */
+#define I2C_CTRL_CR_7                 (0x83U << I2C_CTRL_CR0_Pos)               /*!< 0x0000083 */
+                                  
+/**************  Bits definition for I2C_STS register        ******************/
+#define I2C_STS_STS_0x00              (0x0U << I2C_STS_STS_Pos)                /*!< 0x0000000 */
+#define I2C_STS_STS_0x08              (0x1U << I2C_STS_STS_Pos)                /*!< 0x0000008 */
+#define I2C_STS_STS_0x10              (0x2U << I2C_STS_STS_Pos)                /*!< 0x0000010 */
+#define I2C_STS_STS_0x18              (0x3U << I2C_STS_STS_Pos)                /*!< 0x0000018 */
+#define I2C_STS_STS_0x20              (0x4U << I2C_STS_STS_Pos)                /*!< 0x0000020 */
+#define I2C_STS_STS_0x28              (0x5U << I2C_STS_STS_Pos)                /*!< 0x0000028 */
+#define I2C_STS_STS_0x30              (0x6U << I2C_STS_STS_Pos)                /*!< 0x0000030 */
+#define I2C_STS_STS_0x38              (0x7U << I2C_STS_STS_Pos)                /*!< 0x0000038 */
+#define I2C_STS_STS_0x40              (0x8U << I2C_STS_STS_Pos)                /*!< 0x0000040 */
+#define I2C_STS_STS_0x48              (0x9U << I2C_STS_STS_Pos)                /*!< 0x0000048 */
+#define I2C_STS_STS_0x50              (0xAU << I2C_STS_STS_Pos)                /*!< 0x0000050 */
+#define I2C_STS_STS_0x58              (0xBU << I2C_STS_STS_Pos)                /*!< 0x0000058 */
+#define I2C_STS_STS_0x60              (0xCU << I2C_STS_STS_Pos)                /*!< 0x0000060 */
+#define I2C_STS_STS_0x68              (0xDU << I2C_STS_STS_Pos)                /*!< 0x0000068 */
+#define I2C_STS_STS_0x70              (0xEU << I2C_STS_STS_Pos)                /*!< 0x0000070 */
+#define I2C_STS_STS_0x78              (0xFU << I2C_STS_STS_Pos)                /*!< 0x0000078 */
+#define I2C_STS_STS_0x80              (0x10U << I2C_STS_STS_Pos)               /*!< 0x0000080 */
+#define I2C_STS_STS_0x88              (0x11U << I2C_STS_STS_Pos)               /*!< 0x0000088 */
+#define I2C_STS_STS_0x90              (0x12U << I2C_STS_STS_Pos)               /*!< 0x0000090 */
+#define I2C_STS_STS_0x98              (0x13U << I2C_STS_STS_Pos)               /*!< 0x0000098 */
+#define I2C_STS_STS_0xA0              (0x14U << I2C_STS_STS_Pos)               /*!< 0x00000A0 */
+#define I2C_STS_STS_0xA8              (0x15U << I2C_STS_STS_Pos)               /*!< 0x00000A8 */
+#define I2C_STS_STS_0xB0              (0x16U << I2C_STS_STS_Pos)               /*!< 0x00000B0 */
+#define I2C_STS_STS_0xB8              (0x17U << I2C_STS_STS_Pos)               /*!< 0x00000B8 */
+#define I2C_STS_STS_0xC0              (0x18U << I2C_STS_STS_Pos)               /*!< 0x00000C0 */
+#define I2C_STS_STS_0xC8              (0x19U << I2C_STS_STS_Pos)               /*!< 0x00000C8 */
+#define I2C_STS_STS_0xF8              (0x1FU << I2C_STS_STS_Pos)               /*!< 0x00000F8 */
+
+//GeneralCallAck
+#define I2C_GENERALCALLACK_ENABLE   I2C_ADDR_GC
+#define I2C_GENERALCALLACK_DISABLE  0
+//AssertAcknowledge
+#define I2C_ASSERTACKNOWLEDGE_ENABLE    I2C_CTRL_AA
+#define I2C_ASSERTACKNOWLEDGE_DISABLE   0
+//ClockSource
+#define I2C_CLOCKSOURCE_APBD256     I2C_CTRL_CR_0
+#define I2C_CLOCKSOURCE_APBD224     I2C_CTRL_CR_1
+#define I2C_CLOCKSOURCE_APBD192     I2C_CTRL_CR_2
+#define I2C_CLOCKSOURCE_APBD160     I2C_CTRL_CR_3
+#define I2C_CLOCKSOURCE_APBD960     I2C_CTRL_CR_4
+#define I2C_CLOCKSOURCE_APBD120     I2C_CTRL_CR_5
+#define I2C_CLOCKSOURCE_APBD60      I2C_CTRL_CR_6
+#define I2C_CLOCKSOURCE_TIM3OFD8    I2C_CTRL_CR_7
+
+#define I2C_CTRL_CR   (0x83)
+typedef struct
+{
+  uint16_t SlaveAddr;
+  uint8_t SubAddrType;
+  uint32_t PageRange;
+  uint32_t SubAddress;
+  uint8_t *pBuffer;
+  uint32_t Length;
+} I2C_WRType;
+//SubAddrType
+#define I2C_SUBADDR_1BYTE   (1)
+#define I2C_SUBADDR_2BYTE   (2)
+#define I2C_SUBADDR_OTHER   (3)
+
+//remap
+#define I2C_REMAP_ENABLE    (1)
+#define I2C_REMAP_DISABLE   (0)
+
+/* Private macros ------------------------------------------------------------*/
+
+#define IS_I2C_GC(__GC__)  (((__GC__) == I2C_GENERALCALLACK_ENABLE) ||\
+                            ((__GC__) == I2C_GENERALCALLACK_DISABLE))
+
+#define IS_I2C_AA(__AA__)  (((__AA__) == I2C_ASSERTACKNOWLEDGE_ENABLE) ||\
+                            ((__AA__) == I2C_ASSERTACKNOWLEDGE_DISABLE))
+
+#define IS_I2C_CLKSRC(__CLKSRC__)  (((__CLKSRC__) == I2C_CLOCKSOURCE_APBD256) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD224) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD192) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD160) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD960) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD120) ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD60)  ||\
+                                    ((__CLKSRC__) == I2C_CLOCKSOURCE_TIM3OFD8))
+
+#define I2C_SUBADDR_TYPE(__TYPE__)  (((__TYPE__) == I2C_SUBADDR_1BYTE) ||\
+                                     ((__TYPE__) == I2C_SUBADDR_2BYTE) ||\
+                                     ((__TYPE__) == I2C_SUBADDR_OTHER))
+
+/****************************** I2C Instances *********************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) ((INSTANCE) == I2C)
+
+
+/* Exported Functions ------------------------------------------------------- */
+/* I2C Exported Functions Group1: 
+                                   (De)Initialization ------------------------*/
+void I2C_DeInit(uint32_t remap);
+void I2C_StructInit(I2C_InitType *InitStruct);
+void I2C_Init(I2C_InitType *InitStruct);
+/* I2C Exported Functions Group2: 
+                                   Interrupt ---------------------------------*/
+void I2C_INTConfig(uint32_t NewState);
+uint8_t I2C_GetINTStatus(void);
+void I2C_ClearINTStatus(void);
+/* I2C Exported Functions Group3: 
+                                   Transfer datas ----------------------------*/
+uint16_t I2C_MasterReadBytes(I2C_WRType *InitStruct);
+uint16_t I2C_MasterWriteBytes(I2C_WRType *InitStruct);
+/* I2C Exported Functions Group4: 
+                                   MISC Configuration ------------------------*/
+void I2C_Cmd(uint32_t NewState);
+
+/* I2C Exported Functions Group5: 
+                                   Others ------------------------------------*/
+void I2C_AssertAcknowledgeConfig(uint32_t NewState);
+uint8_t I2C_ReceiveData(void);
+void I2C_SendData(uint8_t Dat);
+void I2C_GenerateSTART(uint32_t NewState);
+void I2C_GenerateSTOP(uint32_t NewState);
+uint8_t I2C_GetStatusCode(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_I2C_H */
+
+/*********************************** END OF FILE ******************************/

+ 174 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_iso7816.h

@@ -0,0 +1,174 @@
+/**
+  ******************************************************************************
+  * @file    lib_iso7816.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   ISO7816 library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_ISO7816_H
+#define __LIB_ISO7816_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+typedef struct
+{
+  uint32_t FirstBit;
+  uint32_t Parity;
+  uint32_t Baudrate;
+  uint32_t TXRetry;
+  uint32_t RXACKLength;
+  uint32_t TXNACKLength;
+} ISO7816_InitType;
+//FirstBit
+#define ISO7816_FIRSTBIT_MSB   (0UL)
+#define ISO7816_FIRSTBIT_LSB    ISO7816_CFG_LSB
+#define IS_ISO7816_FIRSTBIT(__FIRSTBIT__)  (((__FIRSTBIT__) == ISO7816_FIRSTBIT_MSB) ||\
+                                            ((__FIRSTBIT__) == ISO7816_FIRSTBIT_LSB))
+//Parity
+#define ISO7816_PARITY_EVEN    (0UL)
+#define ISO7816_PARITY_ODD      ISO7816_CFG_CHKP
+#define IS_ISO7816_PARITY(__PARITY__)  (((__PARITY__) == ISO7816_PARITY_EVEN) ||\
+                                        ((__PARITY__) == ISO7816_PARITY_ODD))
+//Baudrate
+#define IS_ISO7816_BAUDRATE(__BAUDRATE__) ((200UL <= (__BAUDRATE__)) &&\
+                                          ((__BAUDRATE__) <= 2625000UL))
+//TXRetry
+#define ISO7816_TXRTY_0            ((0x00U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_1            ((0x01U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_2            ((0x02U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_3            ((0x03U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_4            ((0x04U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_5            ((0x05U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_6            ((0x06U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_7            ((0x07U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_8            ((0x08U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_9            ((0x09U << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_10           ((0x0AU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_11           ((0x0BU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_12           ((0x0CU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_13           ((0x0DU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_14           ((0x0EU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define ISO7816_TXRTY_15           ((0x0FU << ISO7816_CFG_TXRTYCNT_Pos) \
+                                   | (1U << 10))
+#define IS_ISO7816_TXRTY(__TXRTY__)          (((__TXRTY__) == ISO7816_TXRTY_0)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_1)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_2)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_3)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_4)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_5)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_6)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_7)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_8)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_9)     || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_10)    || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_11)    || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_12)    || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_13)    || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_14)    || \
+                                              ((__TXRTY__) == ISO7816_TXRTY_15))
+//RXACKLength
+#define ISO7816_RXACKLEN_2    (0UL)
+#define ISO7816_RXACKLEN_1    (ISO7816_CFG_RXACKSET)
+#define IS_ISO7816_RXACKLEN(__RXACKLEN__)  (((__RXACKLEN__) == ISO7816_RXACKLEN_2) ||\
+                                            ((__RXACKLEN__) == ISO7816_RXACKLEN_1))
+//TXNACKLength
+#define ISO7816_TXNACKLEN_0  (0UL)
+#define ISO7816_TXNACKLEN_1  (ISO7816_CFG_AUTORXACK)
+#define ISO7816_TXNACKLEN_2  (ISO7816_CFG_AUTORXACK | ISO7816_CFG_ACKLEN)
+#define IS_ISO7816_TXNACKLEN(__TXNACKLEN__)  (((__TXNACKLEN__) == ISO7816_TXNACKLEN_0) ||\
+                                              ((__TXNACKLEN__) == ISO7816_TXNACKLEN_1) ||\
+                                              ((__TXNACKLEN__) == ISO7816_TXNACKLEN_2))
+
+#define IS_ISO7816_PRESCALER(__PRESCALER__)  ((__PRESCALER__) <= 0x80)
+
+//interrupt
+#define ISO7816_INT_TXRTYERR    ISO7816_CFG_TXRTYERRIE
+#define ISO7816_INT_RXOV        ISO7816_CFG_RXOVIE
+#define ISO7816_INT_TXDONE      ISO7816_CFG_TXDONEIE
+#define ISO7816_INT_RX          ISO7816_CFG_RXIE
+#define ISO7816_INT_RXERR       ISO7816_CFG_RXERRIE
+#define ISO7816_INT_Msk         (ISO7816_INT_TXRTYERR  \
+                                |ISO7816_INT_RXOV      \
+                                |ISO7816_INT_TXDONE    \
+                                |ISO7816_INT_RX        \
+                                |ISO7816_INT_RXERR)
+#define IS_ISO7816_INT(__INT__)  ((((__INT__) & ISO7816_INT_Msk) != 0U) &&\
+                                  (((__INT__) & ~ISO7816_INT_Msk) == 0U))   
+
+//INTStatus
+#define ISO7816_INTSTS_TXRTYERR ISO7816_INFO_TXRTYERRIF
+#define ISO7816_INTSTS_RXOV     ISO7816_INFO_RXOVIF
+#define ISO7816_INTSTS_TXDONE   ISO7816_INFO_TXDONEIF
+#define ISO7816_INTSTS_RX       ISO7816_INFO_RXIF
+#define ISO7816_INTSTS_RXERR    ISO7816_INFO_RXERRIF
+#define ISO7816_INTSTS_Msk     (ISO7816_INTSTS_TXRTYERR \
+                               |ISO7816_INTSTS_RXOV     \
+                               |ISO7816_INTSTS_TXDONE   \
+                               |ISO7816_INTSTS_RX       \
+                               |ISO7816_INTSTS_RXERR)
+#define IS_ISO7816_INTFLAGR(__INTFLAG__)  (((__INTFLAG__) == ISO7816_INTSTS_TXRTYERR) ||\
+                                           ((__INTFLAG__) == ISO7816_INTSTS_RXOV)     ||\
+                                           ((__INTFLAG__) == ISO7816_INTSTS_TXDONE)   ||\
+                                           ((__INTFLAG__) == ISO7816_INTSTS_RX)       ||\
+                                           ((__INTFLAG__) == ISO7816_INTSTS_RXERR))
+
+#define IS_ISO7816_INTFLAGC(__INTFLAG__)  ((((__INTFLAG__)&ISO7816_INTSTS_Msk) != 0U) &&\
+                                           (((__INTFLAG__)&(~ISO7816_INTSTS_Msk)) == 0U))
+//status
+#define ISO7816_FLAG_DMATXDONE      ISO7816_INFO_DMATXDONE
+#define IS_ISO7816_FLAGR(__FLAG__)  ((__FLAG__) == ISO7816_FLAG_DMATXDONE)
+#define IS_ISO7816_FLAGC(__FLAG__)  ((__FLAG__) == ISO7816_FLAG_DMATXDONE)
+
+/****************************** ISO7816 Instances *****************************/
+#define IS_ISO7816_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ISO78160) || \
+                                           ((INSTANCE) == ISO78161))
+
+/* Exported Functions ------------------------------------------------------- */
+void ISO7816_DeInit(ISO7816_Type *ISO7816x);
+void ISO7816_StructInit(ISO7816_InitType *InitStruct);
+void ISO7816_Init(ISO7816_Type *ISO7816x, ISO7816_InitType *Init_Struct);
+void ISO7816_Cmd(ISO7816_Type *ISO7816x, uint32_t NewState);
+void ISO7816_BaudrateConfig(ISO7816_Type *ISO7816x, uint32_t BaudRate);
+void ISO7816_CLKDIVConfig(ISO7816_Type *ISO7816x, uint32_t Prescaler);
+void ISO7816_CLKOutputCmd(ISO7816_Type *ISO7816x, uint32_t NewState);
+void ISO7816_SendData(ISO7816_Type *ISO7816x, uint8_t ch);
+uint8_t ISO7816_ReceiveData(ISO7816_Type *ISO7816x);
+void ISO7816_INTConfig(ISO7816_Type *ISO7816x, uint32_t INTMask, uint8_t NewState);
+uint8_t ISO7816_GetINTStatus(ISO7816_Type *ISO7816x, uint32_t INTMask);
+void ISO7816_ClearINTStatus(ISO7816_Type *ISO7816x, uint32_t INTMask);
+uint8_t ISO7816_GetFlag(ISO7816_Type *ISO7816x, uint32_t FlagMask);
+void ISO7816_ClearFlag(ISO7816_Type *ISO7816x, uint32_t FlagMask);
+uint8_t ISO7816_GetLastTransmitACK(ISO7816_Type *ISO7816x);
+uint8_t ISO7816_GetLastReceiveCHKSUM(ISO7816_Type *ISO7816x);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_ISO7816_H */
+
+/*********************************** END OF FILE ******************************/

+ 147 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_lcd.h

@@ -0,0 +1,147 @@
+/**
+  ******************************************************************************
+  * @file    lib_lcd.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   LCD library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_LCD_H
+#define __LIB_LCD_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+/* LCD COMx IO typedef */
+typedef struct 
+{
+  __IO uint32_t    *GPIO;
+       uint16_t     Pin;
+}LCD_COMIO;
+
+typedef struct 
+{
+  uint32_t Type;
+  uint32_t Drv;
+  uint32_t FRQ;
+  uint32_t SWPR;
+  uint32_t FBMODE;
+  uint32_t BKFILL;
+} LCD_InitType;
+
+typedef struct
+{
+  uint32_t SegCtrl0;
+  uint32_t SegCtrl1;
+  uint16_t SegCtrl2;
+  uint32_t COMMode;
+} LCD_IOInitType;
+
+/**************  Bits definition for ANA_REG6 register       ******************/
+#define ANA_REG6_VLCD_0               (0x0U << ANA_REG6_VLCD_Pos) 
+#define ANA_REG6_VLCD_1               (0x1U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_2               (0x2U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_3               (0x3U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_4               (0x4U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_5               (0x5U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_6               (0x6U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_7               (0x7U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_8               (0x8U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_9               (0x9U << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_A               (0xAU << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_B               (0xBU << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_C               (0xCU << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_D               (0xDU << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_E               (0xEU << ANA_REG6_VLCD_Pos)
+#define ANA_REG6_VLCD_F               (0xFU << ANA_REG6_VLCD_Pos)
+
+/**************  Bits definition for LCD_CTRL register       ******************/
+
+/**************  Bits definition for LCD_CTRL2 register      ******************/
+
+//Type
+#define LCD_TYPE_4COM          (0x0U << LCD_CTRL_TYPE_Pos)              /*!< 0x00000000 */
+#define LCD_TYPE_6COM          (0x1U << LCD_CTRL_TYPE_Pos)              /*!< 0x00000010 */
+#define LCD_TYPE_8COM          (0x2U << LCD_CTRL_TYPE_Pos)              /*!< 0x00000020 */
+#define IS_LCD_TYPE(__TYPE__)  (((__TYPE__) == LCD_TYPE_4COM) ||\
+                                ((__TYPE__) == LCD_TYPE_6COM) ||\
+                                ((__TYPE__) == LCD_TYPE_8COM))
+
+//DrivingRes
+#define LCD_DRV_300            (0x0U << LCD_CTRL_DRV_Pos)               /*!< 0x00000000 */
+#define LCD_DRV_600            (0x1U << LCD_CTRL_DRV_Pos)               /*!< 0x00000004 */
+#define LCD_DRV_150            (0x2U << LCD_CTRL_DRV_Pos)               /*!< 0x00000008 */
+#define LCD_DRV_200            (0x3U << LCD_CTRL_DRV_Pos)               /*!< 0x0000000C */
+#define IS_LCD_DRV(__DRV__)    (((__DRV__) == LCD_DRV_300) ||\
+                                ((__DRV__) == LCD_DRV_600) ||\
+                                ((__DRV__) == LCD_DRV_150) ||\
+                                ((__DRV__) == LCD_DRV_200)) 
+
+//ScanFRQ
+#define LCD_FRQ_64H            (0x0U << LCD_CTRL_FRQ_Pos)               /*!< 0x00000000 */
+#define LCD_FRQ_128H           (0x1U << LCD_CTRL_FRQ_Pos)               /*!< 0x00000001 */
+#define LCD_FRQ_256H           (0x2U << LCD_CTRL_FRQ_Pos)               /*!< 0x00000002 */
+#define LCD_FRQ_512H           (0x3U << LCD_CTRL_FRQ_Pos)               /*!< 0x00000003 */
+#define IS_LCD_FRQ(__FRQ__)    (((__FRQ__) == LCD_FRQ_64H)  ||\
+                                ((__FRQ__) == LCD_FRQ_128H) ||\
+                                ((__FRQ__) == LCD_FRQ_256H) ||\
+                                ((__FRQ__) == LCD_FRQ_512H))
+
+#define IS_LCD_SWPR(__SWPR__)  ((__SWPR__) <= 0xFFUL)   
+
+//SwitchMode
+#define LCD_FBMODE_BUFA            (0x0U << LCD_CTRL2_FBMODE_Pos)           /*!< 0x00000000 */
+#define LCD_FBMODE_BUFAB           (0x1U << LCD_CTRL2_FBMODE_Pos)           /*!< 0x00000040 */
+#define LCD_FBMODE_BUFABLANK       (0x2U << LCD_CTRL2_FBMODE_Pos)           /*!< 0x00000080 */
+#define IS_LCD_FBMODE(__FBMODE__)  (((__FBMODE__) == LCD_FBMODE_BUFA)  ||\
+                                    ((__FBMODE__) == LCD_FBMODE_BUFAB) ||\
+                                    ((__FBMODE__) == LCD_FBMODE_BUFABLANK))                                   
+
+//BlankFill
+#define LCD_BKFILL_1       LCD_CTRL2_BKFILL
+#define LCD_BKFILL_0       0 
+#define IS_LCD_BKFILL(__BKFILL__)  (((__BKFILL__) == LCD_BKFILL_1) || ((__BKFILL__) == LCD_BKFILL_0))
+
+//ComMode
+#define LCD_COMMOD_4COM     1
+#define LCD_COMMOD_6COM     3
+#define LCD_COMMOD_8COM     7
+#define IS_LCD_COMMOD(__COMMOD__)  (((__COMMOD__) == LCD_COMMOD_4COM) ||\
+                                    ((__COMMOD__) == LCD_COMMOD_6COM) ||\
+                                    ((__COMMOD__) == LCD_COMMOD_8COM))
+
+//BiasSelection
+#define LCD_BMODE_DIV3           0
+#define LCD_BMODE_DIV4           ANA_REG6_LCDBMODE
+#define IS_LCD_BMODE(__BMODE__)  (((__BMODE__) == LCD_BMODE_DIV3) ||\
+                                  ((__BMODE__) == LCD_BMODE_DIV4))
+
+/****************************** LCD Instances *********************************/
+#define IS_LCD_ALL_INSTANCE(INSTANCE) ((INSTANCE) == LCD)
+
+/* Exported Functions ------------------------------------------------------- */
+/* LCD Exported Functions Group1: 
+                                  (De)Initialization -------------------------*/
+void LCD_DeInit(void);
+void LCD_StructInit(LCD_InitType *LCD_InitStruct);
+void LCD_Init(LCD_InitType *InitStruct);
+/* LCD Exported Functions Group1: 
+                                  MISC Configuration -------------------------*/
+void LCD_Cmd(LCD_IOInitType *IOInitType, uint32_t NewState);
+void LCD_BiasModeConfig(uint32_t BiasSelection);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif /* __LIB_LCD_H */
+
+/*********************************** END OF FILE ******************************/
+

+ 85 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_misc.h

@@ -0,0 +1,85 @@
+/**
+  ******************************************************************************
+  * @file    lib_misc.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   MISC library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_MISC_H
+#define __LIB_MISC_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+//FlagMask
+#define MISC_FLAG_LOCKUP    MISC1_SRAMINT_LOCKUP
+#define MISC_FLAG_PIAC      MISC1_SRAMINT_PIAC
+#define MISC_FLAG_HIAC      MISC1_SRAMINT_HIAC
+#define MISC_FLAG_PERR      MISC1_SRAMINT_PERR
+#define MISC_FLAG_Msk      (MISC_FLAG_LOCKUP | MISC_FLAG_PIAC | MISC_FLAG_HIAC | MISC_FLAG_PERR)  
+  
+//MISC interrupt
+#define MISC_INT_LOCK       MISC1_SRAMINIT_LOCKIE
+#define MISC_INT_PIAC       MISC1_SRAMINIT_PIACIE
+#define MISC_INT_HIAC       MISC1_SRAMINIT_HIACIE
+#define MISC_INT_PERR       MISC1_SRAMINIT_PERRIE
+#define MISC_INT_Msk       (MISC_INT_LOCK | MISC_INT_PIAC | MISC_INT_HIAC | MISC_INT_PERR) 
+
+//IR
+#define MISC_IREN_TX0       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_TX1       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_TX2       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_TX3       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_TX4       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_TX5       (0x1U << MISC1_IREN_IREN_Pos)
+#define MISC_IREN_Msk      (0x3FUL)   
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_MISC_FLAGR(__FLAGR__) (((__FLAGR__) == MISC_FLAG_LOCKUP) ||\
+                                  ((__FLAGR__) == MISC_FLAG_PIAC)   ||\
+                                  ((__FLAGR__) == MISC_FLAG_HIAC)   ||\
+                                  ((__FLAGR__) == MISC_FLAG_PERR))
+
+#define IS_MISC_FLAGC(__FLAGC__)  ((((__FLAGC__) & MISC_FLAG_Msk) != 0U) &&\
+                                   (((__FLAGC__) & ~MISC_FLAG_Msk) == 0U))
+
+#define IS_MISC_INT(__INT__)  ((((__INT__) & MISC_INT_Msk) != 0U) &&\
+                               (((__INT__) &~MISC_INT_Msk) == 0U))
+
+#define IS_MISC_IREN(__IREN__)  ((((__IREN__) & MISC_IREN_Msk) != 0U) &&\
+                                 (((__IREN__) & ~MISC_IREN_Msk) == 0U))
+
+/****************************** MISC Instances ********************************/
+#define IS_MISC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == MISC1)
+
+#define IS_MISC2_ALL_INSTANCE(INSTANCE) ((INSTANCE) == MISC2)
+
+/* Exported Functions ------------------------------------------------------- */
+uint8_t MISC_GetFlag(uint32_t FlagMask);
+void MISC_ClearFlag(uint32_t FlagMask);
+void MISC_INTConfig(uint32_t INTMask, uint32_t NewState);
+void MISC_SRAMParityCmd(uint32_t NewState);
+uint32_t MISC_GetSRAMPEAddr(void);
+uint32_t MISC_GetAPBErrAddr(void);
+uint32_t MISC_GetAHBErrAddr(void);
+void MISC_IRCmd(uint32_t IRx, uint32_t NewState);
+void MISC_IRDutyConfig(uint16_t DutyHigh, uint16_t DutyLow);
+void MISC_HardFaultCmd(uint32_t NewState);
+void MISC_LockResetCmd(uint32_t NewState);
+void MISC_IRQLATConfig(uint8_t Latency);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_MISC_H */
+
+/*********************************** END OF FILE ******************************/

+ 362 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pmu.h

@@ -0,0 +1,362 @@
+/**
+  ******************************************************************************
+  * @file    lib_pmu.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   PMU library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_PMU_H
+#define __LIB_PMU_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+/**
+  * Deep-sleep low-power configuration
+*/
+typedef struct
+{
+  uint32_t COMP1Power;           /* Comparator 1 power control */
+  uint32_t COMP2Power;           /* Comparator 2 power control */
+  uint32_t TADCPower;            /* Tiny ADC power control */
+  uint32_t BGPPower;             /* BGP power control */
+  uint32_t AVCCPower;            /* AVCC power control */
+//  uint32_t LCDPower;             /* LCD controller power control */
+  uint32_t VDCINDetector;        /* VDCIN detector control */
+  uint32_t VDDDetector;          /* VDD detector control */
+  uint32_t AHBPeriphralDisable;  /* AHB Periphral clock disable selection */
+  uint32_t APBPeriphralDisable;  /* APB Periphral clock disable selection */
+} PMU_LowPWRTypeDef; 
+
+/**************  Bits definition for ANA_REG8 register       ******************/
+#define ANA_REG8_VDDPVDSEL_0         (0x0UL << ANA_REG8_VDDPVDSEL_Pos)   
+#define ANA_REG8_VDDPVDSEL_1         (0x1UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_2         (0x2UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_3         (0x3UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_4         (0x4UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_5         (0x5UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_6         (0x6UL << ANA_REG8_VDDPVDSEL_Pos)
+#define ANA_REG8_VDDPVDSEL_7         (0x7UL << ANA_REG8_VDDPVDSEL_Pos)
+
+/****************************** PMU Instances *********************************/
+#define IS_PMU_ALL_INSTANCE(INSTANCE) ((INSTANCE) == PMU)
+
+/****************************** PMU_RETRAM Instances **************************/
+#define IS_PMU_RETRAM_ALL_INSTANCE(INSTANCE) ((INSTANCE) == PMU_RETRAM)
+
+/* COMP1Power */
+#define PMU_COMP1PWR_ON         (ANA_REG3_CMP1PDN)
+#define PMU_COMP1PWR_OFF        (0UL)
+#define IS_PMU_COMP1PWR(__COMP1PWR__)  (((__COMP1PWR__) == PMU_COMP1PWR_ON) ||\
+                                        ((__COMP1PWR__) == PMU_COMP1PWR_OFF))
+/* COMP2Power */
+#define PMU_COMP2PWR_ON         (ANA_REG3_CMP2PDN)
+#define PMU_COMP2PWR_OFF        (0UL)
+#define IS_PMU_COMP2PWR(__COMP2PWR__)  (((__COMP2PWR__) == PMU_COMP2PWR_ON) ||\
+                                        ((__COMP2PWR__) == PMU_COMP2PWR_OFF))
+/* TADCPower */
+#define PMU_TADCPWR_ON          (ANA_REGF_ADTPDN)
+#define PMU_TADCPWR_OFF         (0UL)
+#define IS_PMU_TADCPWR(__TADCPWR__)  (((__TADCPWR__) == PMU_TADCPWR_ON) ||\
+                                      ((__TADCPWR__) == PMU_TADCPWR_OFF))
+/* BGPPower */
+#define PMU_BGPPWR_ON           (0UL)
+#define PMU_BGPPWR_OFF          (ANA_REG3_BGPPD)
+#define IS_PMU_BGPPWR(__BGPPWR__)  (((__BGPPWR__) == PMU_BGPPWR_ON) ||\
+                                    ((__BGPPWR__) == PMU_BGPPWR_OFF))
+/* AVCCPower */
+#define PMU_AVCCPWR_ON         (0UL)
+#define PMU_AVCCPWR_OFF        (ANA_REG8_AVCCLDOPD)
+#define IS_PMU_AVCCPWR(__AVCCPWR__)  (((__AVCCPWR__) == PMU_AVCCPWR_ON) ||\
+                                        ((__AVCCPWR__) == PMU_AVCCPWR_OFF))
+
+/* VDCINDetector */
+#define PMU_VDCINDET_ENABLE     (0UL)
+#define PMU_VDCINDET_DISABLE    (ANA_REGA_VDCINDETPD)
+#define IS_PMU_VDCINDET(__VDCINDET__)  (((__VDCINDET__) == PMU_VDCINDET_ENABLE) ||\
+                                        ((__VDCINDET__) == PMU_VDCINDET_DISABLE)) 
+
+/* VDDDetector */
+#define PMU_VDDDET_ENABLE       (0UL)
+#define PMU_VDDDET_DISABLE      (ANA_REG9_VDDDETPD)
+#define IS_PMU_VDDDET(__VDDDET__)  (((__VDDDET__) == PMU_VDDDET_ENABLE) ||\
+                                    ((__VDDDET__) == PMU_VDDDET_DISABLE))
+
+#define PMU_APB_ALL       (MISC2_PCLKEN_DMA      \
+                          |MISC2_PCLKEN_I2C      \
+                          |MISC2_PCLKEN_SPI1     \
+                          |MISC2_PCLKEN_UART0    \
+                          |MISC2_PCLKEN_UART1    \
+                          |MISC2_PCLKEN_UART2    \
+                          |MISC2_PCLKEN_UART3    \
+                          |MISC2_PCLKEN_UART4    \
+                          |MISC2_PCLKEN_UART5    \
+                          |MISC2_PCLKEN_ISO78160 \
+                          |MISC2_PCLKEN_ISO78161 \
+                          |MISC2_PCLKEN_TIMER    \
+                          |MISC2_PCLKEN_MISC1    \
+                          |MISC2_PCLKEN_MISC2    \
+                          |MISC2_PCLKEN_U32K0    \
+                          |MISC2_PCLKEN_U32K1    \
+                          |MISC2_PCLKEN_SPI2     \
+                          |MISC2_PCLKEN_SPI3)
+#define PMU_APB_DMA        MISC2_PCLKEN_DMA       
+#define PMU_APB_I2C        MISC2_PCLKEN_I2C       
+#define PMU_APB_SPI1       MISC2_PCLKEN_SPI1      
+#define PMU_APB_UART0      MISC2_PCLKEN_UART0     
+#define PMU_APB_UART1      MISC2_PCLKEN_UART1     
+#define PMU_APB_UART2      MISC2_PCLKEN_UART2     
+#define PMU_APB_UART3      MISC2_PCLKEN_UART3     
+#define PMU_APB_UART4      MISC2_PCLKEN_UART4     
+#define PMU_APB_UART5      MISC2_PCLKEN_UART5     
+#define PMU_APB_ISO78160   MISC2_PCLKEN_ISO78160     
+#define PMU_APB_ISO78161   MISC2_PCLKEN_ISO78161     
+#define PMU_APB_TIMER      MISC2_PCLKEN_TIMER     
+#define PMU_APB_MISC1      MISC2_PCLKEN_MISC1                         
+#define PMU_APB_U32K0      MISC2_PCLKEN_U32K0     
+#define PMU_APB_U32K1      MISC2_PCLKEN_U32K1 
+#define PMU_APB_SPI2       MISC2_PCLKEN_SPI2
+#define PMU_APB_SPI3       MISC2_PCLKEN_SPI3
+
+#define PMU_AHB_ALL       (MISC2_HCLKEN_DMA     \
+                          |MISC2_HCLKEN_GPIO    \
+                          |MISC2_HCLKEN_CRYPT)
+//                          |MISC2_HCLKEN_LCD     
+#define PMU_AHB_DMA        MISC2_HCLKEN_DMA
+#define PMU_AHB_GPIO       MISC2_HCLKEN_GPIO
+//#define PMU_AHB_LCD        MISC2_HCLKEN_LCD
+#define PMU_AHB_CRYPT      MISC2_HCLKEN_CRYPT   
+   
+//PMU interrupt
+#define PMU_INT_IOAEN   PMU_CONTROL_INT_IOA_EN
+#define PMU_INT_32K     PMU_CONTROL_INT_32K_EN
+#define PMU_INT_6M      PMU_CONTROL_INT_6M_EN
+#define PMU_INT_Msk     (PMU_INT_IOAEN  \
+                         |PMU_INT_32K \
+                         |PMU_INT_6M)
+#define IS_PMU_INT(__INT__)  ((((__INT__)&PMU_INT_Msk) != 0UL) &&\
+                              (((__INT__)&(~PMU_INT_Msk)) == 0UL))
+
+//INTStatus
+#define PMU_INTSTS_32K      PMU_STS_INT_32K
+#define PMU_INTSTS_6M       PMU_STS_INT_6M
+#define PMU_INTSTS_Msk      (PMU_INTSTS_32K    \
+                            |PMU_INTSTS_6M)
+#define IS_PMU_INTFLAGR(__INTFLAG__)  (((__INTFLAG__) == PMU_INTSTS_32K)    ||\
+                                       ((__INTFLAG__) == PMU_INTSTS_6M))
+
+#define IS_PMU_INTFLAGC(__INTFLAG__)  ((((__INTFLAG__)&PMU_INTSTS_Msk) != 0UL) &&\
+                                       (((__INTFLAG__)&(~PMU_INTSTS_Msk)) == 0UL))
+
+/***** Reset Source Status  *****/
+#define PMU_RSTSRC_EXTRST        PMU_STS_EXTRST
+#define PMU_RSTSRC_PORST         PMU_STS_PORST
+#define PMU_RSTSRC_DPORST        PMU_STS_DPORST
+#define PMU_RSTSRC_WDTRST        PMU_STS_WDTRST
+#define PMU_RSTSRC_SFTRST        PMU_STS_SFTRST
+#define PMU_RSTSRC_MODERST       PMU_STS_MODERST
+#define PMU_RSTSRC_Msk          (PMU_RSTSRC_EXTRST |\
+                                 PMU_RSTSRC_PORST  |\
+                                 PMU_RSTSRC_DPORST |\
+                                 PMU_RSTSRC_WDTRST |\
+                                 PMU_RSTSRC_SFTRST |\
+                                 PMU_RSTSRC_MODERST)
+#define PMU_RSTSRC_ALL           PMU_RSTSRC_Msk 
+#define PMU_RESETSRC(__RSTSRC__)  (((__RSTSRC__) == PMU_RSTSRC_EXTRST) ||\
+                                   ((__RSTSRC__) == PMU_RSTSRC_PORST)  ||\
+                                   ((__RSTSRC__) == PMU_RSTSRC_DPORST) ||\
+                                   ((__RSTSRC__) == PMU_RSTSRC_WDTRST) ||\
+                                   ((__RSTSRC__) == PMU_RSTSRC_SFTRST) ||\
+                                   ((__RSTSRC__) == PMU_RSTSRC_MODERST))
+#define PMU_RESETSRC_CLR(__RSTSRC__)  ((((__RSTSRC__) & PMU_RSTSRC_Msk) != 0UL) &&\
+                                       (((__RSTSRC__) & (~PMU_RSTSRC_Msk)) == 0UL))
+
+/***** DeepSleep wakeup Source Status  *****/
+#define PMU_DSLEEPWKUSRC_MODE  PMU_STS_WKUMODE
+#define PMU_DSLEEPWKUSRC_XTAL  PMU_STS_WKUXTAL
+#define PMU_DSLEEPWKUSRC_U32K  PMU_STS_WKUU32K
+#define PMU_DSLEEPWKUSRC_ANA   PMU_STS_WKUANA
+#define PMU_DSLEEPWKUSRC_RTC   PMU_STS_WKURTC
+#define PMU_DSLEEPWKUSRC_IOA   PMU_STS_WKUIOA
+#define PMU_DSLEEPWKUSRC_Msk  (PMU_DSLEEPWKUSRC_MODE |\
+                               PMU_DSLEEPWKUSRC_XTAL |\
+                               PMU_DSLEEPWKUSRC_U32K |\
+                               PMU_DSLEEPWKUSRC_ANA  |\
+                               PMU_DSLEEPWKUSRC_RTC  |\
+                               PMU_DSLEEPWKUSRC_IOA)
+#define IS_PMU_DSLEEPWKUSRC(__SRC__)  (((__SRC__) == PMU_DSLEEPWKUSRC_MODE) ||\
+                                       ((__SRC__) == PMU_DSLEEPWKUSRC_XTAL) ||\
+                                       ((__SRC__) == PMU_DSLEEPWKUSRC_U32K) ||\
+                                       ((__SRC__) == PMU_DSLEEPWKUSRC_ANA)  ||\
+                                       ((__SRC__) == PMU_DSLEEPWKUSRC_RTC)  ||\
+                                       ((__SRC__) == PMU_DSLEEPWKUSRC_IOA))
+
+
+//Status
+#define PMU_STS_32K     PMU_STS_EXIST_32K
+#define PMU_STS_6M      PMU_STS_EXIST_6M
+#define IS_PMU_FLAG(__FLAG__)  (((__FLAG__) == PMU_STS_32K) || ((__FLAG__) == PMU_STS_6M))
+
+//Wakeup_Event
+#define IOA_DISABLE     (0UL)
+#define IOA_RISING      (1UL)
+#define IOA_FALLING     (2UL)
+#define IOA_HIGH        (3UL)
+#define IOA_LOW         (4UL)
+#define IOA_EDGEBOTH    (5UL)
+#define IS_PMU_WAKEUP(__WAKEUP__)  (((__WAKEUP__) == IOA_DISABLE)     ||\
+                                    ((__WAKEUP__) == IOA_RISING)  ||\
+                                    ((__WAKEUP__) == IOA_FALLING) ||\
+                                    ((__WAKEUP__) == IOA_HIGH)    ||\
+                                    ((__WAKEUP__) == IOA_LOW)     ||\
+                                    ((__WAKEUP__) == IOA_EDGEBOTH)) 
+
+/***** Wakeup_Event (PMU_SleepWKUSRCConfig_RTC) *****/
+#define PMU_RTCEVT_ALARM      RTC_INTSTS_INTSTS10
+#define PMU_RTCEVT_WKUCNT     RTC_INTSTS_INTSTS6
+#define PMU_RTCEVT_MIDNIGHT   RTC_INTSTS_INTSTS5
+#define PMU_RTCEVT_WKUHOUR    RTC_INTSTS_INTSTS4
+#define PMU_RTCEVT_WKUMIN     RTC_INTSTS_INTSTS3
+#define PMU_RTCEVT_WKUSEC     RTC_INTSTS_INTSTS2
+#define PMU_RTCEVT_TIMEILLE   RTC_INTSTS_INTSTS1
+#define PMU_RTCEVT_ITVSITV    RTC_INTSTS_INTSTS0
+#define PMU_RTCEVT_Msk         (PMU_RTCEVT_WKUCNT   \
+                               |PMU_RTCEVT_MIDNIGHT \
+                               |PMU_RTCEVT_WKUHOUR  \
+                               |PMU_RTCEVT_WKUMIN   \
+                               |PMU_RTCEVT_WKUSEC   \
+                               |PMU_RTCEVT_TIMEILLE \
+                               |PMU_RTCEVT_ITVSITV  \
+                               |PMU_RTCEVT_ALARM)
+#define IS_PMU_RTCEVT(__RTCEVT__)  ((((__RTCEVT__)&PMU_RTCEVT_Msk) != 0UL) &&\
+                                    (((__RTCEVT__)&(~PMU_RTCEVT_Msk)) == 0UL))                              
+
+
+/***** BATRTCDisc (PMU_BATDischargeConfig) *****/
+#define PMU_BAT1     ANA_REG6_BAT1DISC
+#define PMU_BATRTC   ANA_REG6_BATRTCDISC
+#define IS_PMU_BATRTCDISC(__BATRTCDISC__)  (((__BATRTCDISC__) == PMU_BAT1) || ((__BATRTCDISC__) == PMU_BATRTC))
+
+/***** PowerThreshold (PMU_PowerAlarmTHConfig) *****/
+#define PMU_VDDALARM_4_5V      ANA_REG8_VDDPVDSEL_0
+#define PMU_VDDALARM_4_2V      ANA_REG8_VDDPVDSEL_1
+#define PMU_VDDALARM_3_9V      ANA_REG8_VDDPVDSEL_2
+#define PMU_VDDALARM_3_6V      ANA_REG8_VDDPVDSEL_3
+#define PMU_VDDALARM_3_2V      ANA_REG8_VDDPVDSEL_4
+#define PMU_VDDALARM_2_9V      ANA_REG8_VDDPVDSEL_5
+#define PMU_VDDALARM_2_6V      ANA_REG8_VDDPVDSEL_6
+#define PMU_VDDALARM_2_3V      ANA_REG8_VDDPVDSEL_7
+
+#define IS_PMU_VDDALARM_THR(__VDDALARM__)  (((__VDDALARM__) == PMU_VDDALARM_4_5V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_4_2V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_3_9V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_3_6V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_3_2V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_2_9V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_2_6V) ||\
+                                            ((__VDDALARM__) == PMU_VDDALARM_2_3V))
+
+/***** RTCLDOSel (PMU_RTCLDOConfig) *****/
+#define PMU_RTCLDO_1_5         (0UL)
+#define PMU_RTCLDO_1_2          ANA_REGA_RTCVSEL
+
+/***** StatusMask (PMU_GetPowerStatus) *****/
+#define PMU_PWRSTS_AVCCLV         ANA_COMPOUT_AVCCLV
+#define PMU_PWRSTS_VDCINDROP      ANA_CMPOUT_VDCINDROP
+#define PMU_PWRSTS_VDDALARM       ANA_CMPOUT_VDDALARM
+
+/***** PMU_PDNDSleepConfig *****/
+//VDCIN_PDNS
+#define PMU_VDCINPDNS_0  (0UL)
+#define PMU_VDCINPDNS_1  (ANA_CTRL_PDNS)
+#define IS_PMU_VDCINPDNS(__VDCINPDNS__)  (((__VDCINPDNS__) == PMU_VDCINPDNS_0) ||\
+                                          ((__VDCINPDNS__) == PMU_VDCINPDNS_1))
+//VDD_PDNS
+#define PMU_VDDPDNS_0  (0UL)
+#define PMU_VDDPDNS_1  (ANA_CTRL_PDNS2)
+#define IS_PMU_VDDPDNS(__VDDPDNS__)  (((__VDDPDNS__) == PMU_VDDPDNS_0) ||\
+                                        ((__VDDPDNS__) == PMU_VDDPDNS_1))
+
+#define PMU_VDDALARM_CHKFRE_NOCHECK    (0x0UL << ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL_Pos)
+#define PMU_VDDALARM_CHKFRE_30US       (0x1UL << ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL_Pos)
+#define IS_PMU_VDDALARM_CHKFRE(__CHKFRE__)  (((__CHKFRE__) == PMU_VDDALARM_CHKFRE_NOCHECK) ||\
+                                          ((__CHKFRE__) == PMU_VDDALARM_CHKFRE_30US))
+
+#define IS_PMU_PWR_DEBSEL(__DEBSEL__)  ((__DEBSEL__) < 256UL)
+
+/* Exported Functions ------------------------------------------------------- */
+
+uint32_t PMU_EnterDSleepMode(void);
+void PMU_EnterIdleMode(void);
+uint32_t PMU_EnterSleepMode(void);
+
+void PMU_INTConfig(uint32_t INTMask, uint32_t NewState);
+uint8_t PMU_GetINTStatus(uint32_t INTMask);
+void PMU_ClearINTStatus(uint32_t INTMask);
+
+uint8_t PMU_GetCrystalStatus(uint32_t Mask);
+uint16_t PMU_GetIOAAllINTStatus(void);
+uint8_t PMU_GetIOAINTStatus(uint16_t INTMask);
+void PMU_ClearIOAINTStatus(uint16_t INTMask);
+
+void PMU_WakeUpPinConfig(uint32_t IOAx, uint32_t Wakeup_Event);
+
+uint8_t PMU_EnterDSleep_LowPower(PMU_LowPWRTypeDef *InitStruct);
+uint8_t PMU_EnterSleep_LowPower(PMU_LowPWRTypeDef *InitStruct);
+#ifndef __GNUC__
+void PMU_EnterIdle_LowPower(void);
+#endif
+void PMU_SleepWKUSRCConfig_IOA(uint16_t IOAx, uint32_t Wakeup_Event, uint32_t Priority);
+void PMU_SleepWKUSRCConfig_RTC(uint32_t Wakeup_Event, uint32_t Priority);
+void PMU_DeepSleepWKUSRCConfig_IOA(uint16_t IOAx, uint32_t Wakeup_Event);
+void PMU_DeepSleepWKUSRCConfig_RTC(uint32_t Wakeup_Event);
+void PMU_PDNDSleepConfig(uint32_t VDCIN_PDNS, uint32_t VDD_PDNS);
+
+/***** BGP functions *****/
+void PMU_BGPCmd(uint32_t NewState);
+
+/***** VDD functions *****/
+void PMU_VDDAlarmConfig(uint32_t CheckTHR, uint32_t CheckFrequency);
+uint8_t PMU_GetVDDAlarmStatus(void);
+
+/***** AVCC functions *****/
+void PMU_AVCCCmd(uint32_t NewState);
+void PMU_AVCCOutputCmd(uint32_t NewState);
+void PMU_AVCCLVDetectorCmd(uint32_t NewState);
+uint8_t PMU_GetAVCCLVStatus(void);
+
+/***** VDCIN functions *****/
+void PMU_VDCINDetectorCmd(uint32_t NewState);
+uint8_t PMU_GetVDCINDropStatus(void);
+
+void PMU_PWRDEBSel(uint32_t DEBSel);
+
+/***** BAT functions *****/
+void PMU_BATDischargeConfig(uint32_t BATDisc, uint32_t NewState);
+
+/***** Other functions *****/
+uint8_t PMU_GetModeStatus(void);
+uint8_t PMU_GetPowerStatus(uint32_t StatusMask);
+
+uint8_t PMU_GetResetSource(uint32_t Mask);
+void PMU_ClearResetSource(uint32_t Mask);
+uint32_t PMU_GetAllResetSource(void);
+
+uint8_t PMU_GetDSleepWKUSource(uint32_t Mask);
+uint32_t PMU_GetAllDSleepWKUSource(void);
+ 
+#ifdef __cplusplus
+}
+#endif
+     
+#endif /* __LIB_PMU_H */
+
+/*********************************** END OF FILE ******************************/

+ 258 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pwm.h

@@ -0,0 +1,258 @@
+/**
+  ******************************************************************************
+  * @file    lib_pwm.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   PWM library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_PWM_H
+#define __LIB_PWM_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+typedef struct
+{
+  uint32_t ClockDivision;
+  uint32_t Mode;
+  uint32_t ClockSource;
+} PWM_BaseInitType;
+
+/**************  Bits definition for PWMx_CTL register       ******************/
+#define PWM_CTL_TESL_APBDIV128        (0x0U << PWM_CTL_TSEL_Pos)               /*!< 0x00000000 */
+#define PWM_CTL_TESL_APBDIV1          (0x1U << PWM_CTL_TSEL_Pos)               /*!< 0x00000008 */
+#define PWM_CTL_MC_STOP               (0x0U << PWM_CTL_MC_Pos)                 /*!< 0x00000000 */
+#define PWM_CTL_MC_UP                 (0x1U << PWM_CTL_MC_Pos)                 /*!< 0x00000010 */
+#define PWM_CTL_MC_CONTINUE           (0x2U << PWM_CTL_MC_Pos)                 /*!< 0x00000020 */
+#define PWM_CTL_MC_UPDOWN             (0x3U << PWM_CTL_MC_Pos)                 /*!< 0x00000030 */
+#define PWM_CTL_ID_DIV2               (0x0U << PWM_CTL_ID_Pos)                 /*!< 0x00000000 */
+#define PWM_CTL_ID_DIV4               (0x1U << PWM_CTL_ID_Pos)                 /*!< 0x00000040 */
+#define PWM_CTL_ID_DIV8               (0x2U << PWM_CTL_ID_Pos)                 /*!< 0x00000080 */
+#define PWM_CTL_ID_DIV16              (0x3U << PWM_CTL_ID_Pos)                 /*!< 0x000000C0 */
+
+/**************  Bits definition for PWMx_TAR register       ******************/
+
+/**************  Bits definition for PWMx_CCTLy register     ******************/
+////////////#define PWM_CCTL_OUTMOD_CONST         (0x00UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_SET           (0x01UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_TOGGLE_RESET  (0x02UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_SET_RESET     (0x03UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_TOGGLE        (0x04UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_RESET         (0x05UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_TOGGLE_SET    (0x06UL << PWM_CCTL_OUTMOD_Pos) 
+#define PWM_CCTL_OUTMOD_RESET_SET     (0x07UL << PWM_CCTL_OUTMOD_Pos) 
+////////////////////
+
+//ClockDivision
+#define PWM_CLKDIV_2                  (0x0U << PWM_CTL_ID_Pos)
+#define PWM_CLKDIV_4                  (0x1U << PWM_CTL_ID_Pos)
+#define PWM_CLKDIV_8                  (0x2U << PWM_CTL_ID_Pos)
+#define PWM_CLKDIV_16                 (0x3U << PWM_CTL_ID_Pos)
+#define IS_PWM_CLKDIV(__CLKDIV__)    (((__CLKDIV__) == PWM_CLKDIV_2) ||\
+                                      ((__CLKDIV__) == PWM_CLKDIV_4) ||\
+                                      ((__CLKDIV__) == PWM_CLKDIV_8) ||\
+                                      ((__CLKDIV__) == PWM_CLKDIV_16))
+
+//Mode
+#define PWM_MODE_STOP                 (0x0U << PWM_CTL_MC_Pos)
+#define PWM_MODE_UPCOUNT              (0x1U << PWM_CTL_MC_Pos)
+#define PWM_MODE_CONTINUOUS           (0x2U << PWM_CTL_MC_Pos)
+#define PWM_MODE_UPDOWN               (0x3U << PWM_CTL_MC_Pos)
+#define IS_PWM_CNTMODE(__CNTMODE__)  (((__CNTMODE__) == PWM_MODE_STOP)       ||\
+                                      ((__CNTMODE__) == PWM_MODE_UPCOUNT)    ||\
+                                      ((__CNTMODE__) == PWM_MODE_CONTINUOUS) ||\
+                                      ((__CNTMODE__) == PWM_MODE_UPDOWN))
+
+//ClockSource
+#define PWM_CLKSRC_APB                (0x1U << PWM_CTL_TSEL_Pos)
+#define PWM_CLKSRC_APBD128            (0x0U << PWM_CTL_TSEL_Pos)
+#define IS_PWM_CLKSRC(__CLKSRC__)    (((__CLKSRC__) == PWM_CLKSRC_APB) ||\
+                                      ((__CLKSRC__) == PWM_CLKSRC_APBD128))
+
+typedef struct
+{
+  uint32_t Channel;
+  uint32_t Period;
+  uint32_t OutMode;
+} PWM_OCInitType;
+typedef struct
+{
+  uint32_t Channel;
+  uint32_t CaptureMode;
+} PWM_ICInitType;
+//Channel
+#define PWM_CHANNEL_0                 (0UL)
+#define PWM_CHANNEL_1                 (1UL)
+#define PWM_CHANNEL_2                 (2UL)
+#define IS_PWM_CHANNEL(__CHANNEL__)  (((__CHANNEL__) == PWM_CHANNEL_0) ||\
+                                      ((__CHANNEL__) == PWM_CHANNEL_1) ||\
+                                      ((__CHANNEL__) == PWM_CHANNEL_2))
+//OutMode
+#define PWM_OUTMOD_CONST              (0x0U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_SET                (0x1U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_TOGGLE_RESET       (0x2U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_SET_RESET          (0x3U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_TOGGLE             (0x4U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_RESET              (0x5U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_TOGGLE_SET         (0x6U << PWM_CCTL_OUTMOD_Pos)
+#define PWM_OUTMOD_RESET_SET          (0x7U << PWM_CCTL_OUTMOD_Pos)
+#define IS_PWM_OUTMODE(__OUTMODE__)  (((__OUTMODE__) == PWM_OUTMOD_CONST)        ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_SET)          ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_TOGGLE_RESET) ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_SET_RESET)    ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_TOGGLE)       ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_RESET)        ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_TOGGLE_SET)   ||\
+                                      ((__OUTMODE__) == PWM_OUTMOD_RESET_SET))
+
+//CaptureMode
+#define PWM_CM_DISABLE                (0x0U << PWM_CCTL_CM_Pos)
+#define PWM_CM_RISING                 (0x1U << PWM_CCTL_CM_Pos)
+#define PWM_CM_FALLING                (0x2U << PWM_CCTL_CM_Pos)
+#define PWM_CM_BOTH                   (0x3U << PWM_CCTL_CM_Pos)
+#define IS_PWM_CAPMODE(__CAPMODE__)  (((__CAPMODE__) == PWM_CM_DISABLE) ||\
+                                      ((__CAPMODE__) == PWM_CM_RISING)  ||\
+                                      ((__CAPMODE__) == PWM_CM_FALLING) ||\
+                                      ((__CAPMODE__) == PWM_CM_BOTH))
+
+//Interrupt
+#define PWM_INT_CCIFG                 PWM_CCTL_CCIFG
+#define PWM_INT_COV                   PWM_CCTL_COV
+#define PWM_INT_Msk                   (PWM_INT_CCIFG | PWM_INT_COV)
+#define IS_PWM_INTFLAGR(__INTFLAGR__) (((__INTFLAGR__) == PWM_INT_CCIFG) ||\
+                                       ((__INTFLAGR__) == PWM_INT_COV))
+#define IS_PWM_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & PWM_INT_Msk) != 0U) &&\
+                                        (((__INTFLAGC__) & ~PWM_INT_Msk) == 0U))
+
+//PWM output selection
+#define PWM0_OUT0                  0
+#define PWM0_OUT1                  1
+#define PWM0_OUT2                  2
+#define PWM1_OUT0                  4
+#define PWM1_OUT1                  5
+#define PWM1_OUT2                  6
+#define PWM2_OUT0                  8
+#define PWM2_OUT1                  9
+#define PWM2_OUT2                  10
+#define PWM3_OUT0                  12
+#define PWM3_OUT1                  13
+#define PWM3_OUT2                  14
+#define IS_PWM_OUTSEL(__OUTSEL__)  (((__OUTSEL__) == PWM0_OUT0) ||\
+                                    ((__OUTSEL__) == PWM0_OUT1) ||\
+                                    ((__OUTSEL__) == PWM0_OUT2) ||\
+                                    ((__OUTSEL__) == PWM1_OUT0) ||\
+                                    ((__OUTSEL__) == PWM1_OUT1) ||\
+                                    ((__OUTSEL__) == PWM1_OUT2) ||\
+                                    ((__OUTSEL__) == PWM2_OUT0) ||\
+                                    ((__OUTSEL__) == PWM2_OUT1) ||\
+                                    ((__OUTSEL__) == PWM2_OUT2) ||\
+                                    ((__OUTSEL__) == PWM3_OUT0) ||\
+                                    ((__OUTSEL__) == PWM3_OUT1) ||\
+                                    ((__OUTSEL__) == PWM3_OUT2))
+
+//outline
+#define PWM_OLINE_0       1
+#define PWM_OLINE_1       2
+#define PWM_OLINE_2       4
+#define PWM_OLINE_3       8
+#define PWM_OLINE_Msk     0xF
+#define IS_PWM_OUTLINE(__OUTLINE__)  ((((__OUTLINE__) & PWM_OLINE_Msk) != 0U) &&\
+                                      (((__OUTLINE__) & ~PWM_OLINE_Msk) == 0U))
+
+//inline
+#define PWM_ILINE_0     0
+#define PWM_ILINE_1     1
+#define PWM_ILINE_2     2
+#define PWM_ILINE_3     3
+#define IS_PWM_INLINE(__INLINE__)  (((__INLINE__) == PWM_ILINE_0) ||\
+                                    ((__INLINE__) == PWM_ILINE_1) ||\
+                                    ((__INLINE__) == PWM_ILINE_2) ||\
+                                    ((__INLINE__) == PWM_ILINE_3))
+
+//PWM input selection
+#define PWM1_IN2         0x014
+#define PWM1_IN1         0x012
+#define PWM1_IN0         0x010
+#define PWM0_IN2         0x004
+#define PWM0_IN1         0x002
+#define PWM0_IN0         0x000
+#define PWM3_IN2         0x114
+#define PWM3_IN1         0x112
+#define PWM3_IN0         0x110
+#define PWM2_IN2         0x104
+#define PWM2_IN1         0x102
+#define PWM2_IN0         0x100
+#define IS_PWM_INSEL(__INSEL__)  (((__INSEL__) == PWM1_IN2) ||\
+                                  ((__INSEL__) == PWM1_IN1) ||\
+                                  ((__INSEL__) == PWM1_IN0) ||\
+                                  ((__INSEL__) == PWM0_IN2) ||\
+                                  ((__INSEL__) == PWM0_IN1) ||\
+                                  ((__INSEL__) == PWM0_IN0) ||\
+                                  ((__INSEL__) == PWM3_IN2) ||\
+                                  ((__INSEL__) == PWM3_IN1) ||\
+                                  ((__INSEL__) == PWM3_IN0) ||\
+                                  ((__INSEL__) == PWM2_IN2) ||\
+                                  ((__INSEL__) == PWM2_IN1) ||\
+                                  ((__INSEL__) == PWM2_IN0))
+
+//Level
+#define PWM_LEVEL_HIGH  (0x1U << PWM_CCTL_OUT_Pos)
+#define PWM_LEVEL_LOW   0
+#define IS_PWM_OUTLVL(__OUTLVL__)  (((__OUTLVL__) == PWM_LEVEL_HIGH) ||\
+                                    ((__OUTLVL__) == PWM_LEVEL_LOW))
+
+#define IS_PWM_CCR(__CCR__)  ((__CCR__) < 0x10000U)
+
+
+/****************************** PWM Instances *********************************/
+#define IS_PWM_ALL_INSTANCE(INSTANCE) (((INSTANCE) == PWM0) || \
+                                       ((INSTANCE) == PWM1) || \
+                                       ((INSTANCE) == PWM2) || \
+                                       ((INSTANCE) == PWM3))
+
+#define IS_PWMMUX_ALL_INSTANCE(INSTANCE) ((INSTANCE) == PWMMUX)
+
+/* Exported Functions ------------------------------------------------------- */
+/* PWM Exported Functions Group1: 
+                                   Initialization ----------------------------*/
+void PWM_BaseInit(PWM_Type *PWMx, PWM_BaseInitType *InitStruct);
+void PWM_BaseStructInit(PWM_BaseInitType *InitStruct);
+void PWM_OCStructInit(PWM_OCInitType *OCInitType);
+void PWM_OCInit(PWM_Type *PWMx, PWM_OCInitType *OCInitType);
+void PWM_ICStructInit(PWM_ICInitType *ICInitType);
+void PWM_ICInit(PWM_Type *PWMx, PWM_ICInitType *ICInitType);
+/* PWM Exported Functions Group2: 
+                                   Interrupt ---------------------------------*/
+void PWM_BaseINTConfig(PWM_Type *PWMx, uint32_t NewState);
+uint8_t PWM_GetBaseINTStatus(PWM_Type *PWMx);
+void PWM_ClearBaseINTStatus(PWM_Type *PWMx);
+void PWM_ChannelINTConfig(PWM_Type *PWMx, uint32_t Channel, uint32_t NewState);
+uint8_t PWM_GetChannelINTStatus(PWM_Type *PWMx, uint32_t Channel, uint32_t IntMask);
+void PWM_ClearChannelINTStatus(PWM_Type *PWMx, uint32_t Channel, uint32_t IntMask);
+/* PWM Exported Functions Group3: 
+                                   MISC --------------------------------------*/
+void PWM_ClearCounter(PWM_Type *PWMx);
+void PWM_CCRConfig(PWM_Type *PWMx, uint32_t Channel, uint16_t Period);
+//Compare output
+void PWM_OLineConfig(uint32_t OutSelection, uint32_t OLine);
+void PWM_OutputCmd(PWM_Type *PWMx, uint32_t Channel, uint32_t NewState);
+void PWM_SetOutLevel(PWM_Type *PWMx, uint32_t Channel, uint32_t Level);
+void PWM_ILineConfig(uint32_t InSelection, uint32_t ILine);
+uint8_t PWM_GetSCCI(PWM_Type *PWMx, uint32_t Channel);
+uint32_t PWM_GetCapture(PWM_Type *PWMx, uint32_t Channel);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_PWM_H */
+
+/*********************************** END OF FILE ******************************/

+ 229 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_rtc.h

@@ -0,0 +1,229 @@
+/**
+  ******************************************************************************
+  * @file    lib_rtc.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   RTC library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_RTC_H
+#define __LIB_RTC_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+/* RTC Time struct */
+typedef struct
+{
+  uint32_t Year;
+  uint32_t Month;
+  uint32_t Date;
+  uint32_t WeekDay;
+  uint32_t Hours;
+  uint32_t Minutes;
+  uint32_t Seconds;
+  uint32_t SubSeconds;
+} RTC_TimeTypeDef;
+
+/* RTC Alarm Time struct */
+typedef struct
+{
+  uint32_t AlarmHours;
+  uint32_t AlarmMinutes;
+  uint32_t AlarmSeconds;
+  uint32_t AlarmSubSeconds;
+}RTC_AlarmTypeDef;
+
+#define RTC_ACCURATE     0
+#define RTC_INACCURATE   1
+#define IS_RTC_ACCURATESEL(__ACCURATESEL__)  (((__ACCURATESEL__) == RTC_ACCURATE) ||\
+                                              ((__ACCURATESEL__) == RTC_INACCURATE))
+
+/**************  Bits definition for RTC_WKUCNT register     ******************/
+#define RTC_WKUCNT_CNTSEL_0           (0x0U << RTC_WKUCNT_CNTSEL_Pos)
+#define RTC_WKUCNT_CNTSEL_1           (0x1U << RTC_WKUCNT_CNTSEL_Pos)
+#define RTC_WKUCNT_CNTSEL_2           (0x2U << RTC_WKUCNT_CNTSEL_Pos)
+#define RTC_WKUCNT_CNTSEL_3           (0x3U << RTC_WKUCNT_CNTSEL_Pos)
+
+/**************  Bits definition for RTC_PSCA register       ******************/
+#define RTC_PSCA_PSCA_0               (0x0U << RTC_PSCA_PSCA_Pos)
+#define RTC_PSCA_PSCA_1               (0x1U << RTC_PSCA_PSCA_Pos)
+//#define RTC_PSCA_PSCA_2               (0x2U << RTC_PSCA_PSCA_Pos)
+//#define RTC_PSCA_PSCA_3               (0x3U << RTC_PSCA_PSCA_Pos)
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == RTC)
+
+//INT
+#define RTC_INT_ALARM       RTC_INTSTS_INTSTS10
+#define RTC_INT_CEILLE      RTC_INTSTS_INTSTS8
+#define RTC_INT_WKUCNT      RTC_INTSTS_INTSTS6
+#define RTC_INT_MIDNIGHT    RTC_INTSTS_INTSTS5
+#define RTC_INT_WKUHOUR     RTC_INTSTS_INTSTS4
+#define RTC_INT_WKUMIN      RTC_INTSTS_INTSTS3
+#define RTC_INT_WKUSEC      RTC_INTSTS_INTSTS2
+#define RTC_INT_TIMEILLE    RTC_INTSTS_INTSTS1
+#define RTC_INT_ITVSITV     RTC_INTSTS_INTSTS0
+#define RTC_INT_Msk        (0x57FUL)
+
+//INTSTS
+#define RTC_INTSTS_ALARM      RTC_INTSTS_INTSTS10 
+#define RTC_INTSTS_CEILLE     RTC_INTSTS_INTSTS8  
+#define RTC_INTSTS_WKUCNT     RTC_INTSTS_INTSTS6
+#define RTC_INTSTS_MIDNIGHT   RTC_INTSTS_INTSTS5
+#define RTC_INTSTS_WKUHOUR    RTC_INTSTS_INTSTS4
+#define RTC_INTSTS_WKUMIN     RTC_INTSTS_INTSTS3
+#define RTC_INTSTS_WKUSEC     RTC_INTSTS_INTSTS2
+#define RTC_INTSTS_TIMEILLE   RTC_INTSTS_INTSTS1
+#define RTC_INTSTS_ITVSITV   RTC_INTSTS_INTSTS0
+#define RTC_INTSTS_Msk       (0x57FUL)
+
+//CNTCLK
+#define RTC_WKUCNT_RTCCLK     RTC_WKUCNT_CNTSEL_0 
+#define RTC_WKUCNT_2048       RTC_WKUCNT_CNTSEL_1
+#define RTC_WKUCNT_512        RTC_WKUCNT_CNTSEL_2
+#define RTC_WKUCNT_128        RTC_WKUCNT_CNTSEL_3
+
+//Prescaler
+#define RTC_CLKDIV_1          RTC_PSCA_PSCA_0
+#define RTC_CLKDIV_4          RTC_PSCA_PSCA_1
+
+//PLLDIVSOUCE
+#define RTC_PLLDIVSOURCE_PCLK   0
+#define RTC_PLLDIVSOURCE_PLLL   (0x1U << RTC_CTL_RTCPLLCLKSEL_Pos)
+
+//RTC_ITV
+#define RTC_ITV_SEC         (0x80)
+#define RTC_ITV_MIN         (1 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_HOUR        (2 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_DAY         (3 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_500MS       (4 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_250MS       (5 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_125MS       (6 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_62MS        (7 << RTC_ITV_ITV_Pos)
+#define RTC_ITV_SITVSEC     (7 << RTC_ITV_ITV_Pos)
+//RTC_SITV
+#define RTC_SITV_EN         (1 << RTC_SITV_SITVEN_Pos) //Control Multi Second interval.1:enable; 0:disable.
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_RTC_REGOP_STARTADDR(__STARTADDR__)  (((__STARTADDR__) & 0x3U) == 0U)
+/* Year      0 ~ 99 */  
+#define IS_RTC_TIME_YEAR(__YEAR__)  ((__YEAR__) < 0x9AU)
+/* Month     1 ~ 12 */ 
+#define IS_RTC_TIME_MONTH(__MONTH__)  (((__MONTH__) > 0x0U) && ((__MONTH__) < 0x13U))
+/* Date      1 ~ 31 */ 
+#define IS_RTC_TIME_DATE(__DATE__)  (((__DATE__) > 0x0U) && ((__DATE__) < 0x32U))
+/* Weekday   0 ~ 6 */
+#define IS_RTC_TIME_WEEKDAY(__WEEKDAY__)  ((__WEEKDAY__) < 0x7U)
+/* Hours     0 ~ 23 */
+#define IS_RTC_TIME_HOURS(__HOURS__)  ((__HOURS__) < 0x24U)
+/* Minutes   0 ~ 59 */
+#define IS_RTC_TIME_MINS(__MINS__)  ((__MINS__) < 0x5AU)
+/* Seconds   0 ~ 59 */
+#define IS_RTC_TIME_SECS(__SECS__)  ((__SECS__) < 0x5AU)
+/* SubSeconds   0 ~ 0x999 */
+#define IS_RTC_TIME_SubSECS(__SubSECS__)  ((__SubSECS__) < 0x1000U)
+
+/* Alarm time   0 ~ 0x999 */
+#define IS_RTC_ALARMTIME(__ALARMTIME__)  ((__ALARMTIME__) < 0x1E0000U)
+
+#define IS_RTC_INT(__INT__)  ((((__INT__) & RTC_INT_Msk) != 0U) &&\
+                              (((__INT__) & ~RTC_INT_Msk) == 0U))
+
+#define IS_RTC_INTFLAGR(__INTFLAGR_)  (((__INTFLAGR_) == RTC_INTSTS_CEILLE)   ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_WKUCNT)   ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_MIDNIGHT) ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_WKUHOUR)  ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_WKUMIN)   ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_WKUSEC)   ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_ALARM)    ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_TIMEILLE) ||\
+                                       ((__INTFLAGR_) == RTC_INTSTS_ITVSITV))
+
+#define IS_RTC_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & RTC_INTSTS_Msk) != 0U) &&\
+                                        (((__INTFLAGC__) & ~RTC_INTSTS_Msk) == 0U))
+
+#define IS_RTC_WKUSEC_PERIOD(__PERIOD__)  ((__PERIOD__) < 0x41U)
+
+#define IS_RTC_WKUMIN_PERIOD(__PERIOD__)  ((__PERIOD__) < 0x41U)
+
+#define IS_RTC_WKUHOUR_PERIOD(__PERIOD__)  ((__PERIOD__) < 0x21U)
+
+#define IS_RTC_WKUCNT_PERIOD(__PERIOD__)  ((__PERIOD__) < 0x1000001U)
+
+#define IS_RTC_WKUCNT_CNTSEL(__CNTSEL__)  (((__CNTSEL__) == RTC_WKUCNT_RTCCLK) ||\
+                                           ((__CNTSEL__) == RTC_WKUCNT_2048)   ||\
+                                           ((__CNTSEL__) == RTC_WKUCNT_512)    ||\
+                                           ((__CNTSEL__) == RTC_WKUCNT_128))
+
+#define IS_RTC_CLKDIV(__CLKDIV__)  (((__CLKDIV__) == RTC_CLKDIV_1) ||\
+                                    ((__CLKDIV__) == RTC_CLKDIV_4))
+
+#define IS_RTC_PLLDIVSOURCE(__PLLDIVSOURCE__)  (((__PLLDIVSOURCE__) == RTC_PLLDIVSOURCE_PCLK) ||\
+                                                ((__PLLDIVSOURCE__) == RTC_PLLDIVSOURCE_PLLL))
+
+#define IS_RTC_ITV(__ITV__)        (((__ITV__) == RTC_ITV_SEC)     ||\
+                                    ((__ITV__) == RTC_ITV_MIN)     ||\
+                                    ((__ITV__) == RTC_ITV_HOUR)    ||\
+                                    ((__ITV__) == RTC_ITV_DAY)    ||\
+                                    ((__ITV__) == RTC_ITV_500MS)   ||\
+                                    ((__ITV__) == RTC_ITV_250MS)   ||\
+                                    ((__ITV__) == RTC_ITV_125MS)   ||\
+                                    ((__ITV__) == RTC_ITV_62MS)   ||\
+                                    ((__ITV__) == RTC_ITV_SITVSEC))
+
+#define IS_RTC_SITV(__SITV__)  ((__SITV__) < 64U)
+
+/* Exported Functions ------------------------------------------------------- */
+/* RTC Exported Functions Group1: 
+                                  Time functions -----------------------------*/
+void RTC_SetTime(RTC_TimeTypeDef *sTime, uint32_t AccurateSel);
+void RTC_GetTime(RTC_TimeTypeDef *gTime, uint32_t AccurateSel);
+void RTC_SubSecondCmd(uint32_t NewState);
+/* RTC Exported Functions Group2: 
+                                  Alarms configuration functions -------------*/
+void RTC_SetAlarm(RTC_AlarmTypeDef *RTC_AlarmStruct, uint32_t AccurateSel);
+void RTC_GetAlarm(RTC_AlarmTypeDef *RTC_AlarmStruct, uint32_t AccurateSel);
+void RTC_AlarmCmd(uint32_t NewState);
+void RTC_AlarmAccurateCmd(uint32_t NewState);
+/* RTC Exported Functions Group3: 
+                                  Registers operation functions --------------*/
+void RTC_WriteProtection(uint32_t NewState);
+void RTC_WaitForSynchro(void);
+void RTC_WriteRegisters(uint32_t StartAddr, const uint32_t *wBuffer, uint8_t Len);
+void RTC_ReadRegisters(uint32_t StartAddr, uint32_t *rBuffer, uint8_t Len);
+/* RTC Exported Functions Group4: 
+                                  Interrupt functions ------------------------*/
+void RTC_INTConfig(uint32_t INTMask, uint32_t NewState);
+uint8_t RTC_GetINTStatus(uint32_t FlagMask); 
+void RTC_ClearINTStatus(uint32_t FlagMask);
+
+/* RTC Exported Functions Group5: 
+                                  Wake-up functions --------------------------*/
+void RTC_WKUSecondsConfig(uint8_t nPeriod);
+void RTC_WKUMinutesConfig(uint8_t nPeriod);
+void RTC_WKUHoursConfig(uint8_t nPeriod);
+void RTC_WKUCounterConfig(uint32_t nClock,uint32_t CNTCLK);
+void RTC_WAKE_ITV(uint8_t nType);
+void RTC_WAKE_SITV(uint8_t nPeriod);
+uint32_t RTC_GetWKUCounterValue(void);
+/* RTC Exported Functions Group6: 
+                                  MISC functions -----------------------------*/
+void RTC_PrescalerConfig(uint32_t Prescaler);
+void RTC_PLLDIVConfig(uint32_t DIVSource,uint32_t nfrequency);
+void RTC_PLLDIVOutputCmd(uint8_t NewState);
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_RTC_H */
+
+/*********************************** END OF FILE ******************************/

+ 212 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_spi.h

@@ -0,0 +1,212 @@
+/**
+  ******************************************************************************
+  * @file    lib_spi.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   SPI library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_SPI_H
+#define __LIB_SPI_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+typedef struct
+{
+  uint32_t Mode;
+  uint32_t SPH;
+  uint32_t SPO;
+  uint32_t ClockDivision;
+  uint32_t CSNSoft;
+  uint32_t SWAP;
+} SPI_InitType;
+
+/**************  Bits definition for SPIx_CTRL register      ******************/
+#define SPI_CTRL_SCKSEL_0             (0x1U << SPI_CTRL_SCKSEL_Pos)            /*!< 0x00000001 */
+#define SPI_CTRL_SCKSEL_1             (0x2U << SPI_CTRL_SCKSEL_Pos)            /*!< 0x00000002 */
+#define SPI_CTRL_SCKSEL_2             (0x4U << SPI_CTRL_SCKSEL_Pos)            /*!< 0x00000004 */
+
+/**************  Bits definition for SPIx_TXSTS register     ******************/
+#define SPI_TXSTS_TXFFLAG_0           (0x1U << SPI_TXSTS_TXFFLAG_Pos)          /*!< 0x00000001 */
+#define SPI_TXSTS_TXFFLAG_1           (0x2U << SPI_TXSTS_TXFFLAG_Pos)          /*!< 0x00000002 */
+#define SPI_TXSTS_TXFFLAG_2           (0x4U << SPI_TXSTS_TXFFLAG_Pos)          /*!< 0x00000004 */
+#define SPI_TXSTS_TXFFLAG_3           (0x8U << SPI_TXSTS_TXFFLAG_Pos)          /*!< 0x00000008 */
+#define SPI_TXSTS_TXFLEV_0            (0x1U << SPI_TXSTS_TXFLEV_Pos)           /*!< 0x00000010 */
+#define SPI_TXSTS_TXFLEV_1            (0x2U << SPI_TXSTS_TXFLEV_Pos)           /*!< 0x00000020 */
+#define SPI_TXSTS_TXFLEV_2            (0x4U << SPI_TXSTS_TXFLEV_Pos)           /*!< 0x00000040 */
+
+/**************  Bits definition for SPIx_TXDAT register     ******************/
+
+/**************  Bits definition for SPIx_RXSTS register     ******************/
+#define SPI_RXSTS_RXFFLAG_0           (0x1U << SPI_RXSTS_RXFFLAG_Pos)          /*!< 0x00000001 */
+#define SPI_RXSTS_RXFFLAG_1           (0x2U << SPI_RXSTS_RXFFLAG_Pos)          /*!< 0x00000002 */
+#define SPI_RXSTS_RXFFLAG_2           (0x4U << SPI_RXSTS_RXFFLAG_Pos)          /*!< 0x00000004 */
+#define SPI_RXSTS_RXFFLAG_3           (0x8U << SPI_RXSTS_RXFFLAG_Pos)          /*!< 0x00000008 */
+#define SPI_RXSTS_RXFLEV_0            (0x1U << SPI_RXSTS_RXFLEV_Pos)           /*!< 0x00000010 */
+#define SPI_RXSTS_RXFLEV_1            (0x2U << SPI_RXSTS_RXFLEV_Pos)           /*!< 0x00000020 */
+#define SPI_RXSTS_RXFLEV_2            (0x4U << SPI_RXSTS_RXFLEV_Pos)           /*!< 0x00000040 */
+//Mode
+#define SPI_MODE_MASTER         0
+#define SPI_MODE_SLAVE          SPI_CTRL_MOD
+//SPH
+#define SPI_SPH_0               0
+#define SPI_SPH_1               SPI_CTRL_SCKPHA
+//SPO
+#define SPI_SPO_0               0
+#define SPI_SPO_1               SPI_CTRL_SCKPOL
+//ClockDivision
+#define SPI_CLKDIV_2            (0)  
+#define SPI_CLKDIV_4            (SPI_CTRL_SCKSEL_0)  
+#define SPI_CLKDIV_8            (SPI_CTRL_SCKSEL_1)  
+#define SPI_CLKDIV_16           (SPI_CTRL_SCKSEL_0 | SPI_CTRL_SCKSEL_1) 
+#define SPI_CLKDIV_32           (SPI_CTRL_SCKSEL_2) 
+#define SPI_CLKDIV_64           (SPI_CTRL_SCKSEL_0 | SPI_CTRL_SCKSEL_2) 
+#define SPI_CLKDIV_128          (SPI_CTRL_SCKSEL_1 | SPI_CTRL_SCKSEL_2)
+//CSNSoft
+#define SPI_CSNSOFT_ENABLE      SPI_CTRL_CSGPIO
+#define SPI_CSNSOFT_DISABLE     0
+//SWAP
+#define SPI_SWAP_ENABLE         SPI_CTRL_SWAP
+#define SPI_SWAP_DISABLE        0  
+
+//INT
+#define SPI_INT_TX          (0x80000000|SPI_TXSTS_TXIEN)
+#define SPI_INT_RX          (0x40000000|SPI_RXSTS_RXIEN)
+
+//status
+#define SPI_STS_TXIF        (0x80000000|SPI_TXSTS_TXIF)
+#define SPI_STS_TXEMPTY     (0x80000000|SPI_TXSTS_TXEMPTY)
+#define SPI_STS_TXFUR       (0x80000000|SPI_TXSTS_TXFUR)
+#define SPI_STS_DMATXDONE   (0x80000000|SPI_TXSTS_DMATXDONE)
+#define SPI_STS_RXIF        (0x40000000|SPI_RXSTS_RXIF)
+#define SPI_STS_RXFULL      (0x40000000|SPI_RXSTS_RXFULL)
+#define SPI_STS_RXFOV       (0x40000000|SPI_RXSTS_RXFOV)
+#define SPI_STS_BSY         (0x20000000|SPI_MISC_BSY)
+#define SPI_STS_RFF         (0x20000000|SPI_MISC_RFF)
+#define SPI_STS_RNE         (0x20000000|SPI_MISC_RNE)
+#define SPI_STS_TNF         (0x20000000|SPI_MISC_TNF)
+#define SPI_STS_TFE         (0x20000000|SPI_MISC_TFE)
+
+//TXFLEV
+#define SPI_TXFLEV_0       (0)
+#define SPI_TXFLEV_1       (SPI_TXSTS_TXFLEV_0)
+#define SPI_TXFLEV_2       (SPI_TXSTS_TXFLEV_1)
+#define SPI_TXFLEV_3       (SPI_TXSTS_TXFLEV_0 | SPI_TXSTS_TXFLEV_1)
+#define SPI_TXFLEV_4       (SPI_TXSTS_TXFLEV_2)
+#define SPI_TXFLEV_5       (SPI_TXSTS_TXFLEV_0 | SPI_TXSTS_TXFLEV_2)
+#define SPI_TXFLEV_6       (SPI_TXSTS_TXFLEV_1 | SPI_TXSTS_TXFLEV_2)
+#define SPI_TXFLEV_7       (SPI_TXSTS_TXFLEV_0 | SPI_TXSTS_TXFLEV_1 | SPI_TXSTS_TXFLEV_2)
+
+//RXFLEV
+#define SPI_RXFLEV_0       (0)
+#define SPI_RXFLEV_1       (SPI_RXSTS_RXFLEV_0)
+#define SPI_RXFLEV_2       (SPI_RXSTS_RXFLEV_1)
+#define SPI_RXFLEV_3       (SPI_RXSTS_RXFLEV_0 | SPI_RXSTS_RXFLEV_1)
+#define SPI_RXFLEV_4       (SPI_RXSTS_RXFLEV_2)
+#define SPI_RXFLEV_5       (SPI_RXSTS_RXFLEV_2 | SPI_RXSTS_RXFLEV_0)
+#define SPI_RXFLEV_6       (SPI_RXSTS_RXFLEV_2 | SPI_RXSTS_RXFLEV_1)
+#define SPI_RXFLEV_7       (SPI_RXSTS_RXFLEV_2 | SPI_RXSTS_RXFLEV_1 | SPI_RXSTS_RXFLEV_0)
+
+                   
+/* Private macros ------------------------------------------------------------*/
+#define IS_SPI_MODE(__MODE__)  (((__MODE__) == SPI_MODE_MASTER) || ((__MODE__) == SPI_MODE_SLAVE))
+
+#define IS_SPI_SPH(__SPH__)  (((__SPH__) == SPI_SPH_0) || ((__SPH__) == SPI_SPH_1))
+
+#define IS_SPI_SPO(__SPO__)  (((__SPO__) == SPI_SPO_0) || ((__SPO__) == SPI_SPO_1)) 
+
+#define IS_SPI_CLKDIV(__CLKDIV__)  (((__CLKDIV__) == SPI_CLKDIV_2) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_4) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_8) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_16) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_32) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_64) ||\
+                                    ((__CLKDIV__) == SPI_CLKDIV_128))
+
+#define IS_SPI_CSN(__CSN__)  (((__CSN__) == SPI_CSNSOFT_ENABLE) || ((__CSN__) == SPI_CSNSOFT_DISABLE))
+
+#define IS_SPI_SWAP(__SWAP__)  (((__SWAP__) == SPI_SWAP_ENABLE) || ((__SWAP__) == SPI_SWAP_DISABLE))
+
+#define IS_SPI_INT(__INT__)  ((((__INT__) & (SPI_INT_TX | SPI_INT_RX)) != 0U) &&\
+                              (((__INT__) & ~(SPI_INT_TX | SPI_INT_RX)) == 0U))
+
+#define IS_SPI_STSR(__STSR__)  (((__STSR__) == SPI_STS_TXIF)       ||\
+                                ((__STSR__) == SPI_STS_TXEMPTY)    ||\
+                                ((__STSR__) == SPI_STS_TXFUR)      ||\
+                                ((__STSR__) == SPI_STS_DMATXDONE)  ||\
+                                ((__STSR__) == SPI_STS_RXFULL)     ||\
+                                ((__STSR__) == SPI_STS_RXFOV)      ||\
+                                ((__STSR__) == SPI_STS_BSY)        ||\
+                                ((__STSR__) == SPI_STS_RFF)        ||\
+                                ((__STSR__) == SPI_STS_RNE)        ||\
+                                ((__STSR__) == SPI_STS_TNF)        ||\
+                                ((__STSR__) == SPI_STS_TFE)        ||\
+                                ((__STSR__) == SPI_STS_RXIF))
+
+#define IS_SPI_STSC(__STSC__)  ((((__STSC__) & (SPI_STS_TXIF | SPI_STS_RXIF | SPI_STS_DMATXDONE)) != 0U) &&\
+                                (((__STSC__) & ~(SPI_STS_TXIF | SPI_STS_RXIF | SPI_STS_DMATXDONE)) == 0U))
+
+#define IS_SPI_TXFLEV(__TXFLEV__)  (((__TXFLEV__) == SPI_TXFLEV_0) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_1) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_2) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_3) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_4) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_5) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_6) ||\
+                                    ((__TXFLEV__) == SPI_TXFLEV_7))
+
+#define IS_SPI_RXFLEV(__RXFLEV__)  (((__RXFLEV__) == SPI_RXFLEV_0) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_1) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_2) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_3) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_4) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_5) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_6) ||\
+                                    ((__RXFLEV__) == SPI_RXFLEV_7))
+
+/****************************** SPI Instances *********************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+                                       ((INSTANCE) == SPI2) || \
+                                       ((INSTANCE) == SPI3))
+
+/* Exported Functions ------------------------------------------------------- */
+/* SPI Exported Functions Group1: 
+                                  (De)Initialization -------------------------*/
+void SPI_DeviceInit(SPI_Type *SPIx);
+void SPI_Init(SPI_Type *SPIx, SPI_InitType *InitStruct);
+void SPI_StructInit(SPI_InitType *InitStruct);
+/* SPI Exported Functions Group2: 
+                                  Interrupt (flag) ---------------------------*/
+void SPI_INTConfig(SPI_Type *SPIx, uint32_t INTMask, uint32_t NewState);
+uint8_t SPI_GetStatus(SPI_Type *SPIx, uint32_t Status);
+void SPI_ClearStatus(SPI_Type *SPIx, uint32_t Status);
+/* SPI Exported Functions Group3: 
+                                  Transfer datas -----------------------------*/
+void SPI_SendData(SPI_Type *SPIx, uint8_t ch);
+uint8_t SPI_ReceiveData(SPI_Type *SPIx);
+/* SPI Exported Functions Group4: 
+                                  MISC Configuration -------------------------*/
+void SPI_Cmd(SPI_Type *SPIx, uint32_t NewState);
+void SPI_TransmitFIFOLevelConfig(SPI_Type *SPIx, uint32_t FIFOLevel);
+void SPI_ReceiveFIFOLevelConfig(SPI_Type *SPIx, uint32_t FIFOLevel);
+uint8_t SPI_GetTransmitFIFOLevel(SPI_Type *SPIx);
+uint8_t SPI_GetReceiveFIFOLevel(SPI_Type *SPIx);
+void SPI_SmartModeCmd(SPI_Type *SPIx, uint32_t NewState);
+void SPI_OverWriteModeCmd(SPI_Type *SPIx, uint32_t NewState);
+
+
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_SPI_H */
+
+/*********************************** END OF FILE ******************************/

+ 68 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_tmr.h

@@ -0,0 +1,68 @@
+/**
+  ******************************************************************************
+  * @file    lib_tmr.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   Timer library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_TMR_H
+#define __LIB_TMR_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+typedef struct
+{
+  uint32_t Period;
+  uint32_t ClockSource;
+  uint32_t EXTGT;
+} TMR_InitType;
+//ClockSource
+#define TMR_CLKSRC_INTERNAL     0
+#define TMR_CLKSRC_EXTERNAL     TMR_CTRL_EXTCLK
+//ClockGate
+#define TMR_EXTGT_DISABLE       0
+#define TMR_EXTGT_ENABLE        TMR_CTRL_EXTEN
+                   
+/* Private macros ------------------------------------------------------------*/
+#define  IS_TMR_CLKSRC(__CLKSRC__)  (((__CLKSRC__) == TMR_CLKSRC_INTERNAL) || ((__CLKSRC__) == TMR_CLKSRC_EXTERNAL))
+
+#define  IS_TMR_EXTGT(__EXTGT__)  (((__EXTGT__) == TMR_EXTGT_DISABLE) || ((__EXTGT__) == TMR_EXTGT_ENABLE))
+
+/****************************** TMR Instances *********************************/
+#define IS_TMR_ALL_INSTANCE(INSTANCE) (((INSTANCE) == TMR0) || \
+                                       ((INSTANCE) == TMR1) || \
+                                       ((INSTANCE) == TMR2) || \
+                                       ((INSTANCE) == TMR3))
+
+/* Exported Functions ------------------------------------------------------- */
+/* Timer Exported Functions Group1: 
+                                    (De)Initialization  ----------------------*/
+void TMR_DeInit(TMR_Type *TMRx);
+void TMR_Init(TMR_Type *TMRx, TMR_InitType *InitStruct);
+void TMR_StructInit(TMR_InitType *InitStruct);
+/* Timer Exported Functions Group2: 
+                                    Interrupt (flag) -------------------------*/
+void TMR_INTConfig(TMR_Type *TMRx, uint32_t NewState);
+uint8_t TMR_GetINTStatus(TMR_Type *TMRx);
+void TMR_ClearINTStatus(TMR_Type *TMRx);
+/* Timer Exported Functions Group3: 
+                                    MISC Configuration -----------------------*/
+void TMR_Cmd(TMR_Type *TMRx, uint32_t NewState);
+uint32_t TMR_GetCurrentValue(TMR_Type *TMRx);
+                           
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_TMR_H */
+
+/*********************************** END OF FILE ******************************/

+ 160 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_u32k.h

@@ -0,0 +1,160 @@
+/**
+  ******************************************************************************
+  * @file    lib_u32k.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   UART 32K library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_U32K_H
+#define __LIB_U32K_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+typedef struct
+{
+  uint32_t Debsel;
+  uint32_t Parity;
+  uint32_t FirstBit;
+  uint32_t AutoCal;
+  uint32_t Baudrate;
+  uint32_t LineSel;
+} U32K_InitType;
+
+/**************  Bits definition for U32Kx_CTRL0 register    ******************/
+#define U32K_CTRL0_PMODE_EVEN         (0x0U << U32K_CTRL0_PMODE_Pos)           /*!< 0x00000000 */
+#define U32K_CTRL0_PMODE_ODD          (0x1U << U32K_CTRL0_PMODE_Pos)           /*!< 0x00000010 */
+#define U32K_CTRL0_PMODE_0            (0x2U << U32K_CTRL0_PMODE_Pos)           /*!< 0x00000020 */
+#define U32K_CTRL0_PMODE_1            (0x3U << U32K_CTRL0_PMODE_Pos)           /*!< 0x00000030 */
+#define U32K_CTRL0_DEBSEL_0           (0x0U << U32K_CTRL0_DEBSEL_Pos)          /*!< 0x00000000 */
+#define U32K_CTRL0_DEBSEL_1           (0x1U << U32K_CTRL0_DEBSEL_Pos)          /*!< 0x00000040 */
+#define U32K_CTRL0_DEBSEL_2           (0x2U << U32K_CTRL0_DEBSEL_Pos)          /*!< 0x00000080 */
+#define U32K_CTRL0_DEBSEL_3           (0x3U << U32K_CTRL0_DEBSEL_Pos)          /*!< 0x000000C0 */
+
+/**************  Bits definition for U32Kx_CTRL1 register    ******************/
+#define U32K_CTRL1_RXSEL_RX0          (0x0U << U32K_CTRL1_RXSEL_Pos)           /*!< 0x00000000 */
+#define U32K_CTRL1_RXSEL_RX1          (0x1U << U32K_CTRL1_RXSEL_Pos)           /*!< 0x00000010 */
+#define U32K_CTRL1_RXSEL_RX2          (0x2U << U32K_CTRL1_RXSEL_Pos)           /*!< 0x00000020 */
+#define U32K_CTRL1_RXSEL_RX3          (0x3U << U32K_CTRL1_RXSEL_Pos)           /*!< 0x00000030 */
+//Debsel
+#define U32K_DEBSEL_0   (0x0U << U32K_CTRL0_DEBSEL_Pos)
+#define U32K_DEBSEL_1   (0x1U << U32K_CTRL0_DEBSEL_Pos)
+#define U32K_DEBSEL_2   (0x2U << U32K_CTRL0_DEBSEL_Pos)
+#define U32K_DEBSEL_3   (0x3U << U32K_CTRL0_DEBSEL_Pos)
+//Parity
+#define U32K_PARITY_EVEN    (0x1U << U32K_CTRL0_PMODE_Pos)
+#define U32K_PARITY_ODD     (0x3U << U32K_CTRL0_PMODE_Pos)
+#define U32K_PARITY_0       (0x5U << U32K_CTRL0_PMODE_Pos)
+#define U32K_PARITY_1       (0x7U << U32K_CTRL0_PMODE_Pos)
+#define U32K_PARITY_NONE    (0x0U << U32K_CTRL0_PMODE_Pos)
+//FirstBit
+#define U32K_FIRSTBIT_LSB   0
+#define U32K_FIRSTBIT_MSB   (0x1U << U32K_CTRL0_MSB_Pos)
+//AutoCal
+#define U32K_AUTOCAL_ON     0
+#define U32K_AUTOCAL_OFF    (0x1U << U32K_CTRL0_ACOFF_Pos)
+//Line
+#define U32K_LINE_RX0       (0x0U << U32K_CTRL1_RXSEL_Pos)
+#define U32K_LINE_RX1       (0x1U << U32K_CTRL1_RXSEL_Pos)
+#define U32K_LINE_RX2       (0x2U << U32K_CTRL1_RXSEL_Pos)
+#define U32K_LINE_RX3       (0x3U << U32K_CTRL1_RXSEL_Pos)
+
+//INT
+#define U32K_INT_RXOV       (0x1U << U32K_CTRL1_RXOVIE_Pos)
+#define U32K_INT_RXPE       (0x1U << U32K_CTRL1_RXPEIE_Pos)
+#define U32K_INT_RX         (0x1U << U32K_CTRL1_RXIE_Pos)
+#define U32K_INT_Msk        (U32K_INT_RXOV \
+                            |U32K_INT_RXPE \
+                            |U32K_INT_RX)
+
+//INT Status
+#define U32K_INTSTS_RXOV       (0x1U << U32K_STS_RXOV_Pos)
+#define U32K_INTSTS_RXPE       (0x1U << U32K_STS_RXPE_Pos)
+#define U32K_INTSTS_RX         (0x1U << U32K_STS_RXIF_Pos)
+#define U32K_INTSTS_Msk        (U32K_INTSTS_RXOV \
+                               |U32K_INTSTS_RXPE \
+                               |U32K_INTSTS_RX)
+
+//WKUMode
+#define U32K_WKUMOD_RX  0                                // Wake-up when receive data
+#define U32K_WKUMOD_PC  (0x1U << U32K_CTRL0_WKUMODE_Pos) // Wake-up when receive data and parity/stop bit correct 
+                   
+
+/****************************** U32K Instances ********************************/
+#define IS_U32K_ALL_INSTANCE(INSTANCE) (((INSTANCE) == U32K0) || \
+                                        ((INSTANCE) == U32K1))
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_U32K_DEBSEL(__DEBSEL__)  (((__DEBSEL__) == U32K_DEBSEL_0) ||\
+                                     ((__DEBSEL__) == U32K_DEBSEL_1) ||\
+                                     ((__DEBSEL__) == U32K_DEBSEL_2) ||\
+                                     ((__DEBSEL__) == U32K_DEBSEL_3))
+
+#define IS_U32K_PARITY(__PARITY__)  (((__PARITY__) == U32K_PARITY_EVEN) ||\
+                                     ((__PARITY__) == U32K_PARITY_ODD)  ||\
+                                     ((__PARITY__) == U32K_PARITY_0)    ||\
+                                     ((__PARITY__) == U32K_PARITY_1)    ||\
+                                     ((__PARITY__) == U32K_PARITY_NONE))
+
+#define IS_U32K_WORDLEN(__WORDLEN__)  (((__WORDLEN__) == U32K_WORDLEN_8B) || ((__WORDLEN__) == U32K_WORDLEN_9B))
+  
+#define IS_U32K_FIRSTBIT(__FIRSTBIT__)  (((__FIRSTBIT__) == U32K_FIRSTBIT_LSB) || ((__FIRSTBIT__) == U32K_FIRSTBIT_MSB))
+
+#define IS_U32K_AUTOCAL(__AUTOCAL__)  (((__AUTOCAL__) == U32K_AUTOCAL_ON) || ((__AUTOCAL__) == U32K_AUTOCAL_OFF))
+
+#define IS_U32K_LINE(__LINE__)  (((__LINE__) == U32K_LINE_RX0) ||\
+                                 ((__LINE__) == U32K_LINE_RX1) ||\
+                                 ((__LINE__) == U32K_LINE_RX2) ||\
+                                 ((__LINE__) == U32K_LINE_RX3))
+
+#define IS_U32K_BAUDRATE(__BAUDRATE__)  ((300UL <= (__BAUDRATE__)) &&\
+                                        ((__BAUDRATE__) <= 14400UL))
+
+#define IS_U32K_INT(__INT__)  ((((__INT__) & U32K_INT_Msk) != 0U) &&\
+                               (((__INT__) & ~U32K_INT_Msk) == 0U))
+
+#define IS_U32K_INTFLAGR(__INTFLAGR__)  (((__INTFLAGR__) == U32K_INTSTS_RXOV) ||\
+                                         ((__INTFLAGR__) == U32K_INTSTS_RXPE) ||\
+                                         ((__INTFLAGR__) == U32K_INTSTS_RX))
+
+#define IS_U32K_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & U32K_INTSTS_Msk) != 0U) &&\
+                                         (((__INTFLAGC__) & ~U32K_INTSTS_Msk) == 0U))
+
+#define IS_U32K_WKUMODE(__WKUMODE__)  (((__WKUMODE__) == U32K_WKUMOD_RX) || ((__WKUMODE__) == U32K_WKUMOD_PC))
+
+/* Exported Functions ------------------------------------------------------- */
+/* U32K Exported Functions Group1: 
+                                   (De)Initialization  -----------------------*/
+void U32K_DeInit(U32K_Type *U32Kx);
+void U32K_Init(U32K_Type *U32Kx, U32K_InitType *InitStruct);
+void U32K_StructInit(U32K_InitType *InitStruct);
+/* U32K Exported Functions Group2: 
+                                   Interrupt (flag) configure  ---------------*/
+void U32K_INTConfig(U32K_Type *U32Kx, uint32_t INTMask, uint8_t NewState);
+uint8_t U32K_GetINTStatus(U32K_Type *U32Kx, uint32_t INTMask);
+void U32K_ClearINTStatus(U32K_Type *U32Kx, uint32_t INTMask);
+/* U32K Exported Functions Group3: 
+                                   Receive datas -----------------------------*/
+uint8_t U32K_ReceiveData(U32K_Type *U32Kx);
+/* U32K Exported Functions Group4: 
+                                   MISC Configuration -------- ---------------*/
+void U32K_BaudrateConfig(U32K_Type *U32Kx, uint32_t BaudRate);
+void U32K_Cmd(U32K_Type *U32Kx, uint32_t NewState);
+void U32K_LineConfig(U32K_Type *U32Kx, uint32_t Line);
+void U32K_WKUModeConfig(U32K_Type *U32Kx, uint32_t WKUMode);
+                           
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_U32K_H */
+
+/*********************************** END OF FILE ******************************/

+ 172 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_uart.h

@@ -0,0 +1,172 @@
+/**
+  ******************************************************************************
+  * @file    lib_uart.h 
+  * @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+  * @brief   UART library.
+  ******************************************************************************
+  * @attention
+  *
+  ******************************************************************************
+  */
+#ifndef __LIB_UART_H
+#define __LIB_UART_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+//UART Init struct    
+typedef struct
+{
+  uint32_t Mode;
+  uint32_t Parity;
+  uint32_t FirstBit;
+  uint32_t Baudrate;
+} UART_InitType;
+
+//Mode
+#define UART_MODE_RX   (0x1U << UART_CTRL_RXEN_Pos)
+#define UART_MODE_TX   (0x1U << UART_CTRL_TXEN_Pos)
+#define UART_MODE_OFF  0
+#define UART_MODE_Msk  (UART_MODE_RX | UART_MODE_TX)
+//Parity
+#define UART_PARITY_EVEN    (0x1U << UART_CTRL2_PMODE_Pos)
+#define UART_PARITY_ODD     (0x3U << UART_CTRL2_PMODE_Pos)
+#define UART_PARITY_0       (0x5U << UART_CTRL2_PMODE_Pos)
+#define UART_PARITY_1       (0x7U << UART_CTRL2_PMODE_Pos)
+#define UART_PARITY_NONE    (0x0U << UART_CTRL2_PMODE_Pos)
+
+//FirstBit
+#define UART_FIRSTBIT_LSB   0
+#define UART_FIRSTBIT_MSB   (0x1U << UART_CTRL2_MSB_Pos)
+
+//UART Configration Information struct
+typedef struct 
+{
+  uint32_t Mode_Transmit  :1; //1: TX Enable; 0: TX Disable
+  uint32_t Mode_Receive   :1; //1: RX Enable; 0: RX Disable
+  uint32_t Baudrate;          //The value of current budrate
+  uint8_t  Parity;             //0:1+8+1 mode; 1: Even parity; 3:Odd parity; 5: parity bit=0; 7: parity bit=1;
+  uint8_t  FirstBit;          //0: LSB transmit first; 1: MSB transmit first
+} UART_ConfigINFOType;
+
+//status
+#define UART_FLAG_DMATXDONE   (0x1U << UART_STATE_DMATXDONE_Pos)
+#define UART_FLAG_RXPARITY    (0x1U << UART_STATE_RXPSTS_Pos)
+#define UART_FLAG_TXDONE      (0x1U << UART_STATE_TXDONE_Pos)
+#define UART_FLAG_RXPE        (0x1U << UART_STATE_RXPE_Pos)
+#define UART_FLAG_RXOV        (0x1U << UART_STATE_RXOV_Pos)
+#define UART_FLAG_TXOV        (0x1U << UART_STATE_TXOV_Pos)
+#define UART_FLAG_RXFULL      (0x1U << UART_STATE_RXFULL_Pos)
+#define UART_FLAG_RCMsk      (UART_FLAG_DMATXDONE \
+                             |UART_FLAG_TXDONE    \
+                             |UART_FLAG_RXPE      \
+                             |UART_FLAG_RXOV      \
+                             |UART_FLAG_RXFULL    \
+                             |UART_FLAG_TXOV)
+
+//interrupt
+#define UART_INT_TXDONE     (0x1U << UART_CTRL_TXDONEIE_Pos)
+#define UART_INT_RXPE       (0x1U << UART_CTRL_RXPEIE_Pos)
+#define UART_INT_RXOV       (0x1U << UART_CTRL_RXOVIE_Pos)
+#define UART_INT_TXOV       (0x1U << UART_CTRL_TXOVIE_Pos)
+#define UART_INT_RX         (0x1U << UART_CTRL_RXIE_Pos)
+#define UART_INT_Msk       (UART_INT_TXDONE \
+                           |UART_INT_RXPE   \
+                           |UART_INT_RXOV   \
+                           |UART_INT_TXOV   \
+                           |UART_INT_RX)
+
+//INTStatus
+#define UART_INTSTS_TXDONE  (0x1U << UART_INTSTS_TXDONEIF_Pos)
+#define UART_INTSTS_RXPE    (0x1U << UART_INTSTS_RXPEIF_Pos)
+#define UART_INTSTS_RXOV    (0x1U << UART_INTSTS_RXOVIF_Pos)
+#define UART_INTSTS_TXOV    (0x1U << UART_INTSTS_TXOVIF_Pos) 
+#define UART_INTSTS_RX      (0x1U << UART_INTSTS_RXIF_Pos)
+#define UART_INTSTS_Msk    (UART_INTSTS_TXDONE \
+                           |UART_INTSTS_RXPE   \
+                           |UART_INTSTS_RXOV   \
+                           |UART_INTSTS_TXOV   \
+                           |UART_INTSTS_RX)
+ 
+/* Private macros ------------------------------------------------------------*/
+#define IS_UART_MODE(__MODE__)  (((((__MODE__) & UART_MODE_Msk) != 0U) && (((__MODE__) & ~UART_MODE_Msk) == 0U)))
+
+#define IS_UART_PARITY(__PARITY__)  (((__PARITY__) == UART_PARITY_EVEN) ||\
+                                     ((__PARITY__) == UART_PARITY_ODD)  ||\
+                                     ((__PARITY__) == UART_PARITY_0)    ||\
+                                     ((__PARITY__) == UART_PARITY_1)    ||\
+                                     ((__PARITY__) == UART_PARITY_NONE))
+
+#define IS_UART_FIRSTBIT(__FIRSTBIT__)  (((__FIRSTBIT__) == UART_FIRSTBIT_LSB) ||\
+                                         ((__FIRSTBIT__) == UART_FIRSTBIT_MSB))
+
+#define IS_UART_BAUDRATE(__BAUDRATE__) ((300UL <= (__BAUDRATE__)) &&\
+                                      ((__BAUDRATE__) <= 819200UL))
+
+#define IS_UART_FLAGR(__FLAGR__)  (((__FLAGR__) == UART_FLAG_DMATXDONE)   ||\
+                                   ((__FLAGR__) == UART_FLAG_RXPARITY)    ||\
+                                   ((__FLAGR__) == UART_FLAG_TXDONE)      ||\
+                                   ((__FLAGR__) == UART_FLAG_RXPE)        ||\
+                                   ((__FLAGR__) == UART_FLAG_RXOV)        ||\
+                                   ((__FLAGR__) == UART_FLAG_TXOV)        ||\
+                                   ((__FLAGR__) == UART_FLAG_RXFULL))
+
+#define IS_UART_FLAGC(__FLAGC__)  ((((__FLAGC__) & UART_FLAG_RCMsk) != 0U) &&\
+                                   (((__FLAGC__) & ~UART_FLAG_RCMsk) == 0U))
+
+#define IS_UART_INT(__INT__)  ((((__INT__) & UART_INT_Msk) != 0U) &&\
+                               (((__INT__) & ~UART_INT_Msk) == 0U))
+
+#define IS_UART_INTFLAGR(__INTFLAGR__)  (((__INTFLAGR__) == UART_INTSTS_TXDONE) ||\
+                                         ((__INTFLAGR__) == UART_INTSTS_RXPE) ||\
+                                         ((__INTFLAGR__) == UART_INTSTS_RXOV) ||\
+                                         ((__INTFLAGR__) == UART_INTSTS_TXOV) ||\
+                                         ((__INTFLAGR__) == UART_INTSTS_RX))
+
+#define IS_UART_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & UART_INTSTS_Msk) != 0U) &&\
+                                         (((__INTFLAGC__) & ~UART_INTSTS_Msk) == 0U))
+
+/****************************** UART Instances ********************************/
+#define IS_UART_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UART0) || \
+                                        ((INSTANCE) == UART1) || \
+                                        ((INSTANCE) == UART2) || \
+                                        ((INSTANCE) == UART3) || \
+                                        ((INSTANCE) == UART4) || \
+                                        ((INSTANCE) == UART5))
+
+/* Exported Functions ------------------------------------------------------- */
+/* UART Exported Functions Group1: 
+                                   Initialization and functions --------------*/
+void UART_DeInit(UART_Type *UARTx);
+void UART_Init(UART_Type *UARTx, UART_InitType *InitStruct);
+void UART_StructInit(UART_InitType *InitStruct);
+/* UART Exported Functions Group2: 
+                                   (Interrupt) Flag --------------------------*/
+uint8_t UART_GetFlag(UART_Type *UARTx, uint32_t FlagMask);
+void UART_ClearFlag(UART_Type *UARTx, uint32_t FlagMask);
+void UART_INTConfig(UART_Type *UARTx, uint32_t INTMask, uint8_t NewState);
+uint8_t UART_GetINTStatus(UART_Type *UARTx, uint32_t INTMask);
+void UART_ClearINTStatus(UART_Type *UARTx, uint32_t INTMask);
+/* UART Exported Functions Group3: 
+                                   Transfer datas ----------------------------*/
+void UART_SendData(UART_Type *UARTx, uint8_t ch);
+uint8_t UART_ReceiveData(UART_Type *UARTx);
+/* UART Exported Functions Group4: 
+                                   MISC Configuration ------------------------*/
+void UART_BaudrateConfig(UART_Type *UARTx, uint32_t BaudRate);
+void UART_Cmd(UART_Type *UARTx, uint32_t Mode, uint32_t NewState);
+void UART_GetConfigINFO(UART_Type *UARTx, UART_ConfigINFOType *ConfigInfo);
+                            
+                                     
+#ifdef __cplusplus
+}
+#endif
+     
+#endif  /* __LIB_UART_H */
+
+/*********************************** END OF FILE ******************************/

+ 36 - 0
bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_version.h

@@ -0,0 +1,36 @@
+/**
+*******************************************************************************
+	* @file    lib_version.h
+	* @author  Application Team
+  * @version V1.1.0
+  * @date    2019-10-28
+	* @brief   Version library.
+*******************************************************************************/
+
+#ifndef __LIB_VERSION_H
+#define __LIB_VERSION_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+   
+#define DRIVER_VERSION(major,minor) (((major) << 8) | (minor))
+
+/* Exported Functions ------------------------------------------------------- */
+   
+/**
+  * @brief  Read receive data register.
+  * @param  None
+  * @retval Version value
+  */
+uint16_t Target_GetDriveVersion(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_VERSION_H */
+
+/*********************************** END OF FILE ******************************/

Some files were not shown because too many files changed in this diff