summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMan, Jianting (Meco) <[email protected]>2022-03-28 19:13:57 -0400
committerGitHub <[email protected]>2022-03-28 19:13:57 -0400
commitc5d16f28ddd64d886a44e70d05525b70322d45df (patch)
tree4a263f54e737a6eff95a54db1f6cbefd1f22247b
parent6cf3256d4ce7fc8123a6d6a98d1f120740347780 (diff)
parent7fee6530f97b6b33d3abde469496d06766e30905 (diff)
Merge branch 'master' into arduino
-rw-r--r--bsp/acm32f4xx-nucleo/project.ewp2302
-rw-r--r--bsp/acm32f4xx-nucleo/project.eww10
-rw-r--r--bsp/acm32f4xx-nucleo/template.ewp2074
-rw-r--r--bsp/acm32f4xx-nucleo/template.eww10
-rw-r--r--bsp/apm32/apm32f103xe-minibroard/project.ewp77
-rw-r--r--bsp/apm32/apm32f103xe-minibroard/project.uvoptx626
-rw-r--r--bsp/apm32/apm32f103xe-minibroard/project.uvprojx121
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s465
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s394
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_hd.s368
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_md.s315
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s1091
-rw-r--r--bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s850
-rw-r--r--bsp/apm32/libraries/Drivers/drv_common.c2
-rw-r--r--bsp/apm32/tools/sdk_dist.py22
-rw-r--r--bsp/at32/libraries/f403a_407/.ignore_format.yml6
-rw-r--r--bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c30
-rw-r--r--bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c30
-rw-r--r--bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c30
-rw-r--r--bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini2
-rw-r--r--bsp/nuvoton/libraries/n9h30/Script/N9H30.sct12
-rw-r--r--bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c28
-rw-r--r--bsp/nuvoton/libraries/nu_packages/Kconfig21
-rw-r--r--bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c3
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/SConscript18
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/gt911.c490
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/gt911.h41
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/ili.c644
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/ili.h18
-rw-r--r--bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c117
-rw-r--r--bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c28
-rw-r--r--bsp/nuvoton/nk-980iot/.config168
-rw-r--r--bsp/nuvoton/nk-980iot/README.md10
-rw-r--r--bsp/nuvoton/nk-980iot/rtconfig.h83
-rw-r--r--bsp/nuvoton/nk-980iot/spinor.config131
-rw-r--r--bsp/nuvoton/nk-980iot/template.uvproj48
-rw-r--r--bsp/nuvoton/nk-980iot/template.uvprojx387
-rw-r--r--bsp/nuvoton/nk-n9h30/.config110
-rw-r--r--bsp/nuvoton/nk-n9h30/README.md6
-rw-r--r--bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h7
-rw-r--r--bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c4
-rw-r--r--bsp/nuvoton/nk-n9h30/rtconfig.h53
-rw-r--r--bsp/nuvoton/nk-n9h30/template.uvproj53
-rw-r--r--bsp/nuvoton/nk-n9h30/template.uvprojx387
-rw-r--r--bsp/nuvoton/nk-rtu980/.config111
-rw-r--r--bsp/nuvoton/nk-rtu980/README.md10
-rw-r--r--bsp/nuvoton/nk-rtu980/rtconfig.h52
-rw-r--r--bsp/nuvoton/nk-rtu980/template.uvproj57
-rw-r--r--bsp/nuvoton/numaker-iot-m487/.config108
-rw-r--r--bsp/nuvoton/numaker-iot-m487/rtconfig.h47
-rw-r--r--bsp/nuvoton/numaker-m032ki/.config126
-rw-r--r--bsp/nuvoton/numaker-m032ki/rtconfig.h47
-rw-r--r--bsp/nuvoton/numaker-m2354/.config112
-rw-r--r--bsp/nuvoton/numaker-m2354/rtconfig.h48
-rw-r--r--bsp/nuvoton/numaker-pfm-m487/.config113
-rw-r--r--bsp/nuvoton/numaker-pfm-m487/rtconfig.h48
-rw-r--r--bsp/v85xxp/.ignore_format.yml6
-rw-r--r--bsp/v85xxp/Kconfig97
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_CodeRAM.h46
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_LoadNVR.h235
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_conf.h62
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_cortex.h49
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/system_target.h38
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/target.h2771
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/type_def.h107
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S478
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S450
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c35
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c700
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_cortex.c198
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/system_target.c76
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/cmsis_armcc.h894
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/cmsis_compiler.h266
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/cmsis_gcc.h2085
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/cmsis_version.h39
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/core_cm0.h949
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/core_cmFunc.h616
-rw-r--r--bsp/v85xxp/Libraries/CMSIS/core_cmInstr.h618
-rw-r--r--bsp/v85xxp/Libraries/SConscript30
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc.h308
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc_tiny.h81
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_ana.h118
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_clk.h338
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_cmp.h205
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_crypt.h107
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_dma.h267
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_flash.h159
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_gpio.h225
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_i2c.h164
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_iso7816.h174
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_lcd.h147
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_misc.h85
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pmu.h362
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pwm.h258
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_rtc.h229
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_spi.h212
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_tmr.h68
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_u32k.h160
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_uart.h172
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_version.h36
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_wdt.h47
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc.c799
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc_tiny.c176
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_ana.c160
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_clk.c675
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_cmp.c569
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_crypt.c226
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_dma.c473
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_flash.c441
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_gpio.c486
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_i2c.c694
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_iso7816.c405
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_lcd.c241
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_misc.c255
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pmu.c1194
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pwm.c530
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_rtc.c793
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_spi.c433
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_tmr.c178
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_u32k.c309
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_uart.c372
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_version.c25
-rw-r--r--bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_wdt.c88
-rw-r--r--bsp/v85xxp/README.md77
-rw-r--r--bsp/v85xxp/SConscript14
-rw-r--r--bsp/v85xxp/SConstruct40
-rw-r--r--bsp/v85xxp/Target_FLASH.ld173
-rw-r--r--bsp/v85xxp/Target_FLASH.sct16
-rw-r--r--bsp/v85xxp/applications/SConscript11
-rw-r--r--bsp/v85xxp/applications/main.c53
-rw-r--r--bsp/v85xxp/drivers/SConscript35
-rw-r--r--bsp/v85xxp/drivers/board.c113
-rw-r--r--bsp/v85xxp/drivers/board.h35
-rw-r--r--bsp/v85xxp/drivers/drv_comm.h27
-rw-r--r--bsp/v85xxp/drivers/drv_gpio.c448
-rw-r--r--bsp/v85xxp/drivers/drv_gpio.h48
-rw-r--r--bsp/v85xxp/drivers/drv_usart.c325
-rw-r--r--bsp/v85xxp/drivers/drv_usart.h28
-rw-r--r--bsp/v85xxp/keil_Kill.bat37
-rw-r--r--bsp/v85xxp/project.uvoptx1288
-rw-r--r--bsp/v85xxp/project.uvprojx871
-rw-r--r--bsp/v85xxp/rtconfig.h164
-rw-r--r--bsp/v85xxp/rtconfig.py126
-rw-r--r--bsp/v85xxp/template.uvoptx180
-rw-r--r--bsp/v85xxp/template.uvprojx (renamed from bsp/nuvoton/nk-rtu980/template.uvprojx)122
-rw-r--r--libcpu/arm/cortex-m33/syscall_iar.S12
146 files changed, 36531 insertions, 4572 deletions
diff --git a/bsp/acm32f4xx-nucleo/project.ewp b/bsp/acm32f4xx-nucleo/project.ewp
new file mode 100644
index 0000000000..39acf76ca0
--- /dev/null
+++ b/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>
diff --git a/bsp/acm32f4xx-nucleo/project.eww b/bsp/acm32f4xx-nucleo/project.eww
new file mode 100644
index 0000000000..c2cb02eb1e
--- /dev/null
+++ b/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>
+
+
diff --git a/bsp/acm32f4xx-nucleo/template.ewp b/bsp/acm32f4xx-nucleo/template.ewp
new file mode 100644
index 0000000000..bbd1adf10c
--- /dev/null
+++ b/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>
diff --git a/bsp/acm32f4xx-nucleo/template.eww b/bsp/acm32f4xx-nucleo/template.eww
new file mode 100644
index 0000000000..bd036bb4c9
--- /dev/null
+++ b/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>
+
+
diff --git a/bsp/apm32/apm32f103xe-minibroard/project.ewp b/bsp/apm32/apm32f103xe-minibroard/project.ewp
index 7d5c9b980f..563c9198a3 100644
--- a/bsp/apm32/apm32f103xe-minibroard/project.ewp
+++ b/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,45 +2169,45 @@
<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>
<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>
diff --git a/bsp/apm32/apm32f103xe-minibroard/project.uvoptx b/bsp/apm32/apm32f103xe-minibroard/project.uvoptx
index a46a77a582..2b7d33fccd 100644
--- a/bsp/apm32/apm32f103xe-minibroard/project.uvoptx
+++ b/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>
diff --git a/bsp/apm32/apm32f103xe-minibroard/project.uvprojx b/bsp/apm32/apm32f103xe-minibroard/project.uvprojx
index f2f1468945..203883c230 100644
--- a/bsp/apm32/apm32f103xe-minibroard/project.uvprojx
+++ b/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>
@@ -404,13 +404,6 @@
</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>
<FileType>1</FileType>
<FilePath>..\..\..\components\libc\compilers\common\time.c</FilePath>
@@ -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>
@@ -546,6 +532,13 @@
</Files>
<Files>
<File>
+ <FileName>board.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>board\board.c</FilePath>
+ </File>
+ </Files>
+ <Files>
+ <File>
<FileName>drv_gpio.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\Drivers\drv_gpio.c</FilePath>
@@ -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>
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s
deleted file mode 100644
index 5be8ad078a..0000000000
--- a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_hd.s
+++ /dev/null
@@ -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 ************************************
-
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s
deleted file mode 100644
index 238be8397c..0000000000
--- a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/ARM/startup_apm32f10x_md.s
+++ /dev/null
@@ -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 ************************************
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_hd.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_hd.s
new file mode 100644
index 0000000000..956b00b8aa
--- /dev/null
+++ b/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************************************
+
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_md.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/arm/startup_apm32f10x_md.s
new file mode 100644
index 0000000000..b8c17b31cd
--- /dev/null
+++ b/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************************************
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s
index 672eab8977..4c0a8fa9b0 100644
--- a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_hd.s
+++ b/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
+ 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
+ ; 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
+ 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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_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_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_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_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 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 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_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 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_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 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 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_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_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_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 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 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 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 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_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 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_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 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 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 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 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 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 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 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 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 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_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_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_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 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 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 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 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 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 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 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 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 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 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_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_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_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 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_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 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_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
+ PUBWEAK CAN2_SCE_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+CAN2_SCE_IRQHandler
+ B CAN2_SCE_IRQHandler
- END
+ END
diff --git a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s b/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s
index dee619770b..8028032f16 100644
--- a/bsp/apm32/libraries/APM32F10x_Library/Device/Geehy/APM32F10x/Source/iar/startup_apm32f10x_md.s
+++ b/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
+ 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
+ ; 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
+ 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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_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_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_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_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 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 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_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 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_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 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 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_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_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_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 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 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 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 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_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 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_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 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 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 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 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 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 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 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 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 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 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 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_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
+ PUBWEAK USBD2_LP_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+USBD2_LP_IRQHandler
+ B USBD2_LP_IRQHandler
- END
+ END
diff --git a/bsp/apm32/libraries/Drivers/drv_common.c b/bsp/apm32/libraries/Drivers/drv_common.c
index f6caf333db..3395028375 100644
--- a/bsp/apm32/libraries/Drivers/drv_common.c
+++ b/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()
{
diff --git a/bsp/apm32/tools/sdk_dist.py b/bsp/apm32/tools/sdk_dist.py
new file mode 100644
index 0000000000..92ec89ccaa
--- /dev/null
+++ b/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'))
+
diff --git a/bsp/at32/libraries/f403a_407/.ignore_format.yml b/bsp/at32/libraries/f403a_407/.ignore_format.yml
new file mode 100644
index 0000000000..b5c3accab5
--- /dev/null
+++ b/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
diff --git a/bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c b/bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c
index 7c24e65b72..96471765e8 100644
--- a/bsp/nuvoton/libraries/m031/rtt_port/drv_rtc.c
+++ b/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;
diff --git a/bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c b/bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c
index 44c2ee30dd..0a915ef5f1 100644
--- a/bsp/nuvoton/libraries/m2354/rtt_port/drv_rtc.c
+++ b/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;
diff --git a/bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c b/bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c
index d642d0116e..4c6f029241 100644
--- a/bsp/nuvoton/libraries/m480/rtt_port/drv_rtc.c
+++ b/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;
diff --git a/bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini b/bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini
new file mode 100644
index 0000000000..5a8723c5ef
--- /dev/null
+++ b/bsp/nuvoton/libraries/n9h30/Script/InitDDR2.ini
@@ -0,0 +1,2 @@
+LOAD %L INCREMENTAL
+$ = 0 \ No newline at end of file
diff --git a/bsp/nuvoton/libraries/n9h30/Script/N9H30.sct b/bsp/nuvoton/libraries/n9h30/Script/N9H30.sct
new file mode 100644
index 0000000000..e5f4257b20
--- /dev/null
+++ b/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)
+ }
+}
diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c
index 917cb64b50..917753f275 100644
--- a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_rtc.c
+++ b/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;
diff --git a/bsp/nuvoton/libraries/nu_packages/Kconfig b/bsp/nuvoton/libraries/nu_packages/Kconfig
index 42724b8ca7..1c7f4d7953 100644
--- a/bsp/nuvoton/libraries/nu_packages/Kconfig
+++ b/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
diff --git a/bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c b/bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c
index adb414a0be..442b847f99 100644
--- a/bsp/nuvoton/libraries/nu_packages/SSD1963/lcd_ssd1963.c
+++ b/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;
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/SConscript b/bsp/nuvoton/libraries/nu_packages/TPC/SConscript
new file mode 100644
index 0000000000..5040a9a811
--- /dev/null
+++ b/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')
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/gt911.c b/bsp/nuvoton/libraries/nu_packages/TPC/gt911.c
new file mode 100644
index 0000000000..ef5620ffd1
--- /dev/null
+++ b/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;
+}
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/gt911.h b/bsp/nuvoton/libraries/nu_packages/TPC/gt911.h
new file mode 100644
index 0000000000..61221bf3fe
--- /dev/null
+++ b/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 */
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/ili.c b/bsp/nuvoton/libraries/nu_packages/TPC/ili.c
new file mode 100644
index 0000000000..f8cb0237b4
--- /dev/null
+++ b/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;
+}
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/ili.h b/bsp/nuvoton/libraries/nu_packages/TPC/ili.h
new file mode 100644
index 0000000000..0e59cd6084
--- /dev/null
+++ b/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 */
diff --git a/bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c b/bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c
new file mode 100644
index 0000000000..f053df1dce
--- /dev/null
+++ b/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);
diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c
index d11195c8c9..74118e6c21 100644
--- a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_rtc.c
+++ b/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;
diff --git a/bsp/nuvoton/nk-980iot/.config b/bsp/nuvoton/nk-980iot/.config
index 4417d84b30..c00e423797 100644
--- a/bsp/nuvoton/nk-980iot/.config
+++ b/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
@@ -815,6 +794,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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
diff --git a/bsp/nuvoton/nk-980iot/README.md b/bsp/nuvoton/nk-980iot/README.md
index 610ca09a55..b11ee99eb4 100644
--- a/bsp/nuvoton/nk-980iot/README.md
+++ b/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
diff --git a/bsp/nuvoton/nk-980iot/rtconfig.h b/bsp/nuvoton/nk-980iot/rtconfig.h
index 4a0fa6cbfb..f96c48b80b 100644
--- a/bsp/nuvoton/nk-980iot/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/nk-980iot/spinor.config b/bsp/nuvoton/nk-980iot/spinor.config
index 689099bb5b..0d48e5fe10 100644
--- a/bsp/nuvoton/nk-980iot/spinor.config
+++ b/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
@@ -821,6 +799,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/nk-980iot/template.uvproj b/bsp/nuvoton/nk-980iot/template.uvproj
index 23e8dd2bcb..0626f656a1 100644
--- a/bsp/nuvoton/nk-980iot/template.uvproj
+++ b/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 "[email protected]" "[email protected]"</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>
diff --git a/bsp/nuvoton/nk-980iot/template.uvprojx b/bsp/nuvoton/nk-980iot/template.uvprojx
deleted file mode 100644
index aad158ccc3..0000000000
--- a/bsp/nuvoton/nk-980iot/template.uvprojx
+++ /dev/null
@@ -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 "[email protected]" "[email protected]"</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>
diff --git a/bsp/nuvoton/nk-n9h30/.config b/bsp/nuvoton/nk-n9h30/.config
index 342436b58f..0bd358116f 100644
--- a/bsp/nuvoton/nk-n9h30/.config
+++ b/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
@@ -790,6 +767,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/nk-n9h30/README.md b/bsp/nuvoton/nk-n9h30/README.md
index 58827e6fcc..32d1c96833 100644
--- a/bsp/nuvoton/nk-n9h30/README.md
+++ b/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
diff --git a/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h b/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h
index 232cbc0f4f..081c44886a 100644
--- a/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_conf.h
+++ b/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
diff --git a/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c b/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c
index 3162bf8d2b..6d94354e17 100644
--- a/bsp/nuvoton/nk-n9h30/applications/lvgl/lv_port_disp.c
+++ b/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;
diff --git a/bsp/nuvoton/nk-n9h30/rtconfig.h b/bsp/nuvoton/nk-n9h30/rtconfig.h
index f542288a73..2ba4a38a4c 100644
--- a/bsp/nuvoton/nk-n9h30/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/nk-n9h30/template.uvproj b/bsp/nuvoton/nk-n9h30/template.uvproj
index 2a4f8efb44..e75ccf39ca 100644
--- a/bsp/nuvoton/nk-n9h30/template.uvproj
+++ b/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 "[email protected]" "[email protected]"</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>
diff --git a/bsp/nuvoton/nk-n9h30/template.uvprojx b/bsp/nuvoton/nk-n9h30/template.uvprojx
deleted file mode 100644
index f3525c7031..0000000000
--- a/bsp/nuvoton/nk-n9h30/template.uvprojx
+++ /dev/null
@@ -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 "[email protected]" "[email protected]"</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>
diff --git a/bsp/nuvoton/nk-rtu980/.config b/bsp/nuvoton/nk-rtu980/.config
index 0bfb5f1643..46cf30079f 100644
--- a/bsp/nuvoton/nk-rtu980/.config
+++ b/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
@@ -813,6 +791,10 @@ CONFIG_PKG_RAMDISK_VER="latest"
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/nk-rtu980/README.md b/bsp/nuvoton/nk-rtu980/README.md
index 20294482ea..0ae21af700 100644
--- a/bsp/nuvoton/nk-rtu980/README.md
+++ b/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
diff --git a/bsp/nuvoton/nk-rtu980/rtconfig.h b/bsp/nuvoton/nk-rtu980/rtconfig.h
index bfa96e1f3a..ed7af73bbc 100644
--- a/bsp/nuvoton/nk-rtu980/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/nk-rtu980/template.uvproj b/bsp/nuvoton/nk-rtu980/template.uvproj
index 23e8dd2bcb..d6bd4f2d1a 100644
--- a/bsp/nuvoton/nk-rtu980/template.uvproj
+++ b/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 "[email protected]" "[email protected]"</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>
diff --git a/bsp/nuvoton/numaker-iot-m487/.config b/bsp/nuvoton/numaker-iot-m487/.config
index 35a86cd719..5edbda638c 100644
--- a/bsp/nuvoton/numaker-iot-m487/.config
+++ b/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
@@ -356,11 +334,6 @@ CONFIG_AT_CMD_MAX_LEN=512
CONFIG_AT_SW_VERSION_NUM=0x10301
#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
-
-#
# Utilities
#
# CONFIG_RT_USING_RYM is not set
@@ -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
@@ -793,6 +768,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/numaker-iot-m487/rtconfig.h b/bsp/nuvoton/numaker-iot-m487/rtconfig.h
index 5d9ad0d400..bbe503d285 100644
--- a/bsp/nuvoton/numaker-iot-m487/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/numaker-m032ki/.config b/bsp/nuvoton/numaker-m032ki/.config
index 13bed80dd6..c66fd910f2 100644
--- a/bsp/nuvoton/numaker-m032ki/.config
+++ b/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,37 +211,17 @@ 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
#
# CONFIG_RT_USING_RYM is not set
@@ -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
@@ -659,6 +645,10 @@ CONFIG_UTEST_SMALL_MEM_TC=y
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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
diff --git a/bsp/nuvoton/numaker-m032ki/rtconfig.h b/bsp/nuvoton/numaker-m032ki/rtconfig.h
index e9b573e762..bad19497ce 100644
--- a/bsp/nuvoton/numaker-m032ki/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/numaker-m2354/.config b/bsp/nuvoton/numaker-m2354/.config
index 12f8e22bcc..a5ddbeaf2b 100644
--- a/bsp/nuvoton/numaker-m2354/.config
+++ b/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
@@ -352,11 +330,6 @@ CONFIG_AT_CMD_MAX_LEN=2048
CONFIG_AT_SW_VERSION_NUM=0x10301
#
-# VBUS(Virtual Software BUS)
-#
-# CONFIG_RT_USING_VBUS is not set
-
-#
# Utilities
#
# CONFIG_RT_USING_RYM is not set
@@ -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
@@ -785,6 +763,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/numaker-m2354/rtconfig.h b/bsp/nuvoton/numaker-m2354/rtconfig.h
index 2937b671c7..bb5d8ae1dd 100644
--- a/bsp/nuvoton/numaker-m2354/rtconfig.h
+++ b/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
diff --git a/bsp/nuvoton/numaker-pfm-m487/.config b/bsp/nuvoton/numaker-pfm-m487/.config
index 8bc0959025..b3750912f5 100644
--- a/bsp/nuvoton/numaker-pfm-m487/.config
+++ b/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
@@ -807,6 +785,10 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
#
#
+# project laboratory
+#
+
+#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
@@ -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."
diff --git a/bsp/nuvoton/numaker-pfm-m487/rtconfig.h b/bsp/nuvoton/numaker-pfm-m487/rtconfig.h
index bda35ecac5..e19d40ee7a 100644
--- a/bsp/nuvoton/numaker-pfm-m487/rtconfig.h
+++ b/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
diff --git a/bsp/v85xxp/.ignore_format.yml b/bsp/v85xxp/.ignore_format.yml
new file mode 100644
index 0000000000..b42fb0c41a
--- /dev/null
+++ b/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
diff --git a/bsp/v85xxp/Kconfig b/bsp/v85xxp/Kconfig
new file mode 100644
index 0000000000..4e3f2d260d
--- /dev/null
+++ b/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
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_CodeRAM.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_CodeRAM.h
new file mode 100644
index 0000000000..cbcea56cb1
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_LoadNVR.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_LoadNVR.h
new file mode 100644
index 0000000000..b429b19513
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_conf.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_conf.h
new file mode 100644
index 0000000000..00b29ac43c
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_cortex.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/lib_cortex.h
new file mode 100644
index 0000000000..db55de4873
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/system_target.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/system_target.h
new file mode 100644
index 0000000000..ce3712bf41
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/target.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/target.h
new file mode 100644
index 0000000000..50c551e048
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/type_def.h b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Include/type_def.h
new file mode 100644
index 0000000000..0a17a8b5c4
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/GCC/startup_target.S
new file mode 100644
index 0000000000..b77a821a44
--- /dev/null
+++ b/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
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/Keil5/startup_target.S
new file mode 100644
index 0000000000..90fd31b143
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_CodeRAM.c
new file mode 100644
index 0000000000..363f49a86d
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_LoadNVR.c
new file mode 100644
index 0000000000..e3fbc7c00e
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_cortex.c b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/lib_cortex.c
new file mode 100644
index 0000000000..968d5a9df9
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/system_target.c b/bsp/v85xxp/Libraries/CMSIS/Vango/V85xxP/Source/system_target.c
new file mode 100644
index 0000000000..67edacf310
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/CMSIS/cmsis_armcc.h b/bsp/v85xxp/Libraries/CMSIS/cmsis_armcc.h
new file mode 100644
index 0000000000..59f173ac71
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/CMSIS/cmsis_compiler.h b/bsp/v85xxp/Libraries/CMSIS/cmsis_compiler.h
new file mode 100644
index 0000000000..94212eb87a
--- /dev/null
+++ b/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 */
+
diff --git a/bsp/v85xxp/Libraries/CMSIS/cmsis_gcc.h b/bsp/v85xxp/Libraries/CMSIS/cmsis_gcc.h
new file mode 100644
index 0000000000..2d9db15a5d
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/CMSIS/cmsis_version.h b/bsp/v85xxp/Libraries/CMSIS/cmsis_version.h
new file mode 100644
index 0000000000..660f612aa3
--- /dev/null
+++ b/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
diff --git a/bsp/v85xxp/Libraries/CMSIS/core_cm0.h b/bsp/v85xxp/Libraries/CMSIS/core_cm0.h
new file mode 100644
index 0000000000..f929bba07b
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/CMSIS/core_cmFunc.h b/bsp/v85xxp/Libraries/CMSIS/core_cmFunc.h
new file mode 100644
index 0000000000..4a6b5d6683
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/CMSIS/core_cmInstr.h b/bsp/v85xxp/Libraries/CMSIS/core_cmInstr.h
new file mode 100644
index 0000000000..1c0b6f6b97
--- /dev/null
+++ b/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 */
diff --git a/bsp/v85xxp/Libraries/SConscript b/bsp/v85xxp/Libraries/SConscript
new file mode 100644
index 0000000000..acb3ae6670
--- /dev/null
+++ b/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')
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc.h
new file mode 100644
index 0000000000..3099c7d289
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc_tiny.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_adc_tiny.h
new file mode 100644
index 0000000000..7988ffb96f
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_ana.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_ana.h
new file mode 100644
index 0000000000..104dc2c870
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_clk.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_clk.h
new file mode 100644
index 0000000000..b7b11c7522
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_cmp.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_cmp.h
new file mode 100644
index 0000000000..252aa2ef66
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_crypt.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_crypt.h
new file mode 100644
index 0000000000..295fe3c2db
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_dma.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_dma.h
new file mode 100644
index 0000000000..02038a2bd1
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_flash.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_flash.h
new file mode 100644
index 0000000000..c22a1f9c54
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_gpio.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_gpio.h
new file mode 100644
index 0000000000..53c9a40037
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_i2c.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_i2c.h
new file mode 100644
index 0000000000..280e36ba96
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_iso7816.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_iso7816.h
new file mode 100644
index 0000000000..2c2cf10ba0
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_lcd.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_lcd.h
new file mode 100644
index 0000000000..d9bc415477
--- /dev/null
+++ b/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 ******************************/
+
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_misc.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_misc.h
new file mode 100644
index 0000000000..b5d23f37e6
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pmu.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pmu.h
new file mode 100644
index 0000000000..401aa777a3
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pwm.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_pwm.h
new file mode 100644
index 0000000000..1b194514bb
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_rtc.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_rtc.h
new file mode 100644
index 0000000000..74ad131b33
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_spi.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_spi.h
new file mode 100644
index 0000000000..59681ad12c
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_tmr.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_tmr.h
new file mode 100644
index 0000000000..9a5a2969e9
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_u32k.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_u32k.h
new file mode 100644
index 0000000000..546d390a86
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_uart.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_uart.h
new file mode 100644
index 0000000000..b91f852889
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_version.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_version.h
new file mode 100644
index 0000000000..542d05e1e2
--- /dev/null
+++ b/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 ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_wdt.h b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_wdt.h
new file mode 100644
index 0000000000..300884dc26
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Include/lib_wdt.h
@@ -0,0 +1,47 @@
+/**
+ ******************************************************************************
+ * @file lib_wdt.h
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief WDT library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#ifndef __LIB_WDT_H
+#define __LIB_WDT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "target.h"
+
+
+#define WDT_2_SECS (0x0U << PMU_WDTEN_WDTSEL_Pos)
+#define WDT_4_SECS (0x1U << PMU_WDTEN_WDTSEL_Pos)
+#define WDT_8_SECS (0x2U << PMU_WDTEN_WDTSEL_Pos)
+#define WDT_16_SECS (0x3U << PMU_WDTEN_WDTSEL_Pos)
+
+/* Private macros ------------------------------------------------------------*/
+#define IS_WDT_PERIOD(__PERIOD__) (((__PERIOD__) == WDT_2_SECS) ||\
+ ((__PERIOD__) == WDT_4_SECS) ||\
+ ((__PERIOD__) == WDT_8_SECS) ||\
+ ((__PERIOD__) == WDT_16_SECS))
+
+/* Exported Functions ------------------------------------------------------- */
+void WDT_Enable(void);
+void WDT_Disable(void);
+void WDT_Clear(void);
+void WDT_SetPeriod(uint32_t period);
+uint16_t WDT_GetCounterValue(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LIB_WDT_H */
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc.c
new file mode 100644
index 0000000000..769422032b
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc.c
@@ -0,0 +1,799 @@
+/**
+ ******************************************************************************
+ * @file lib_adc.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief ADC library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_adc.h"
+
+#define ANA_INTEN_ADCMsk (0x3FC003U)
+#define ANA_INTSTS_ADCMsk (0x3FC003U)
+#define ANA_ADCCTRL0_RSTValue (0x300000U)
+#define ANA_ADCCTRL1_RSTValue (0xC2U)
+#define ANA_ADCCTRL2_RSTValue (0x8014U)
+#define ANA_ADCDATATHD1_0_RSTValue (0U)
+#define ANA_ADCDATATHD3_2_RSTValue (0U)
+#define ANA_ADCDATATHD_CH_RSTValue (0U)
+#define RTC_ADCUCALK_RSTValue (0x599A599AU)
+#define RTC_ADCMACTL_RSTValue (0x78000000U)
+#define RTC_ADCDTCTL_RSTValue (0x80000000)
+
+#define ADC_SYNC_WR(); {__NOP(); __NOP(); __NOP(); __NOP();}
+/**
+ * @brief Initializes ADC peripheral registers to their default reset values.
+ * @note 1. Disable ADC
+ 2. Disable resistor division.
+ 3. Disable ADC auto/manual done interrupt.
+ 4. The ADC correlation (register) is written to the default value.
+ * @param None
+ * @retval None
+ */
+void ADC_DeInit(void)
+{
+ uint32_t tmp[3];
+
+ if((ANA->ADCSTATE&0x07)!=0)
+ {
+ ADC_Cmd(DISABLE);
+ }
+
+ /* 6.5MHz clock. */
+ ANA->REG0 &= ~ANA_REG0_ADCFRQSEL;
+ /* ADC mode */
+ ANA->REG1 &= ~ANA_REG1_ADCMODESEL;
+ /* Power up VINBUF and REFBUF. */
+ ANA->REG11 &= ~(ANA_REG11_REFBUFPD|ANA_REG11_VINBUFPD);
+ /* Power down ADC */
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+ /* Disable interrupt, Clear interrupt flag */
+ ANA->INTEN &= ~ANA_INTEN_ADCMsk;
+ ANA->INTSTS = ANA_INTSTS_ADCMsk;
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ ANA->ADCCTRL0 = ANA_ADCCTRL0_RSTValue;
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ ANA->ADCCTRL1 = ANA_ADCCTRL1_RSTValue;
+ ANA->ADCCTRL2 = ANA_ADCCTRL2_RSTValue|ANA_ADCCTRL2_CONV_ERR_CLR|ANA_ADCCTRL2_CAL_ERR_CLR;
+
+ ANA->ADCDATATHD1_0= ANA_ADCDATATHD1_0_RSTValue;
+ ANA->ADCDATATHD3_2 = ANA_ADCDATATHD3_2_RSTValue;
+ ANA->ADCDATATHD_CH = ANA_ADCDATATHD_CH_RSTValue;
+ tmp[0] = RTC_ADCUCALK_RSTValue;
+ tmp[1] = RTC_ADCMACTL_RSTValue;
+ tmp[2] = RTC_ADCDTCTL_RSTValue;
+ RTC_WriteRegisters((uint32_t)&RTC->ADCUCALK, tmp, 3);
+
+ ANA->ADCCTRL2 = ANA_ADCCTRL2_RSTValue;
+}
+
+/**
+ * @brief Fills each ADC_InitStruct member with its default value.
+ * @param ADC_InitStruct: pointer to an ADC_InitType structure which will be initialized.
+ * @retval None
+ */
+void ADC_StructInit(ADC_InitType* ADC_InitStruct)
+{
+ /*------ Reset ADC init structure parameters values ------*/
+ ADC_InitStruct->Mode = ADC_MODE_DC;
+ ADC_InitStruct->ClockSource = ADC_CLKSRC_RCH;
+ ADC_InitStruct->ClockFrq = ADC_CLKFRQ_HIGH;
+ ADC_InitStruct->SkipSample = ADC_SKIP_0;
+ ADC_InitStruct->AverageSample = ADC_AVERAGE_2;
+ ADC_InitStruct->TriggerSource = ADC_TRIGSOURCE_OFF;
+ ADC_InitStruct->Channel = ADC_CHANNEL_GND0;
+ ADC_InitStruct->ResDivEnable = 0;
+ ADC_InitStruct->AverageEnable = 0;
+}
+
+/**
+ * @brief Initializes ADC.
+ * @param ADC_InitStruct: pointer to an ADC_InitType structure which will be initialized.
+ Mode:
+ ADC_MODE_DC (Not include ADC_CHANNEL_TEMP)
+ ADC_MODE_AC (Only ADC_CHANNEL_CHx be valid)
+ ADC_MODE_TEMP (Only ADC_CHANNEL_TEMP be valid)
+ ClockSource: \n
+ ADC_CLKSRC_RCH \n
+ ADC_CLKSRC_PLLL \n
+ ClockFrq: \n
+ ADC_CLKFRQ_HIGH \n
+ ADC_CLKFRQ_LOW \n
+ SkipSample: \n
+ ADC_SKIP_0 \n
+ ADC_SKIP_4 \n
+ ADC_SKIP_8 \n
+ ADC_SKIP_12 \n
+ AverageSample: \n
+ ADC_AVERAGE_2 \n
+ ADC_AVERAGE_4 \n
+ ADC_AVERAGE_8 \n
+ ADC_AVERAGE_16 \n
+ ADC_AVERAGE_32 \n
+ ADC_AVERAGE_64 \n
+ TriggerSource: \n
+ ADC_TRIGSOURCE_OFF \n
+ ADC_TRIGSOURCE_ITVSITV \n
+ ADC_TRIGSOURCE_WKUSEC \n
+ ADC_TRIGSOURCE_ALARM \n
+ ADC_TRIGSOURCE_TMR0 \n
+ ADC_TRIGSOURCE_TMR1 \n
+ ADC_TRIGSOURCE_TMR2 \n
+ ADC_TRIGSOURCE_TMR3 \n
+ Channel:
+ ResDivEnable: (also can be ADC_CHANNEL_NONE)
+ AverageEnable: (also can be ADC_CHANNEL_NONE)
+ ADC_CHANNEL_GND0
+ ADC_CHANNEL_BAT1
+ ADC_CHANNEL_BATRTC
+ ADC_CHANNEL_CH3
+ ADC_CHANNEL_CH4
+ ADC_CHANNEL_CH5
+ ADC_CHANNEL_CH6
+ ADC_CHANNEL_CH7
+ ADC_CHANNEL_CH8
+ ADC_CHANNEL_CH9
+ ADC_CHANNEL_TEMP
+ ADC_CHANNEL_CH11
+ ADC_CHANNEL_DVCC
+ ADC_CHANNEL_GND13
+ ADC_CHANNEL_GND14
+ ADC_CHANNEL_GND15
+ ADC_CHANNEL_DC_ALL
+ ADC_CHANNEL_AC_ALL
+ * @retval None
+ */
+void ADC_Init(ADC_InitType *ADC_InitStruct)
+{
+ uint32_t tmp_anareg0, tmp_anareg1, tmp_anareg3, tmp_anareg11;
+ uint32_t tmp_adcctrl0, tmp_adcctrl1, tmp_adcctrl2;
+ uint32_t tmp_rtcadcmactl;
+
+ /* Check parameters */
+ assert_parameters(IS_ADC_MODE(ADC_InitStruct->Mode));
+ assert_parameters(IS_ADC_CLKSRC(ADC_InitStruct->ClockSource));
+ assert_parameters(IS_ADC_CLKFRQ(ADC_InitStruct->ClockFrq));
+ assert_parameters(IS_ADC_SKIP(ADC_InitStruct->SkipSample));
+ assert_parameters(IS_ADC_AVERAG(ADC_InitStruct->AverageSample));
+ assert_parameters(IS_ADC_TRIGSOURCE(ADC_InitStruct->TriggerSource));
+
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+
+ tmp_adcctrl0 = ANA->ADCCTRL0;
+ tmp_adcctrl1 = ANA->ADCCTRL1;
+ tmp_adcctrl2 = ANA->ADCCTRL2;
+ tmp_anareg0 = ANA->REG0;
+ tmp_anareg1 = ANA->REG1;
+ tmp_anareg3 = ANA->REG3;
+ tmp_anareg11 = 0;
+ tmp_rtcadcmactl = RTC->ADCMACTL;
+
+ /* Configure clock source and trigger source */
+ tmp_adcctrl0 &= ~(ANA_ADCCTRL0_AEN | ANA_ADCCTRL0_CLKSRCSEL);
+ tmp_adcctrl0 |= (ADC_InitStruct->TriggerSource | ADC_InitStruct->ClockSource);
+
+ /* Configure ClockFrq */
+ if (ADC_InitStruct->ClockFrq == ADC_CLKFRQ_HIGH)
+ {
+ tmp_anareg0 &= ~ANA_REG0_ADCFRQSEL;
+ tmp_adcctrl2 &= ~ANA_ADCCTRL2_ADCCR;
+ }
+ else
+ {
+ tmp_anareg0 |= ANA_REG0_ADCFRQSEL;
+ tmp_adcctrl2 |= ANA_ADCCTRL2_ADCCR;
+ }
+
+ /* Configure skip samples and average samples */
+ tmp_rtcadcmactl &= ~(RTC_ADCMACTL_SKIP_SAMPLE | RTC_ADCMACTL_AVERAGE_SAMPLE);
+ tmp_rtcadcmactl |= (ADC_InitStruct->SkipSample | ADC_InitStruct->AverageSample);
+
+ /* Mode: DC */
+ if (ADC_InitStruct->Mode == ADC_MODE_DC)
+ {
+ /* Check parameters */
+ assert_parameters(IS_ADC_CHANNEL_DC(ADC_InitStruct->Channel));
+ assert_parameters(IS_ADC_CHANNEL_EN_DC(ADC_InitStruct->AverageEnable));
+ assert_parameters(IS_ADC_CHANNEL_EN_DC(ADC_InitStruct->ResDivEnable));
+
+ /* Enable or disable Channels */
+ tmp_adcctrl2 &= ~ANA_ADCCTRL2_SCAN_CHx;
+ tmp_adcctrl2 |= (ADC_InitStruct->Channel << ADC_CHANNEL_SHIFT);
+ /* Enable or disable average */
+ tmp_rtcadcmactl &= ~RTC_ADCMACTL_AVERAGE_CHx;
+ tmp_rtcadcmactl |= (ADC_InitStruct->AverageEnable << ADC_AVERAGECH_SHIFT);
+ /* Enable or disable RESDIV */
+ tmp_adcctrl1 &= ~ANA_ADCCTRL1_RESDIV_CHx;
+ tmp_adcctrl1 |= (ADC_InitStruct->ResDivEnable << ADC_RESDIVCH_SHIFT);
+ /* Others */
+ tmp_anareg1 &= ~ANA_REG1_ADCMODESEL;
+ }
+ /* Mode: AC */
+ else if (ADC_InitStruct->Mode == ADC_MODE_AC)
+ {
+ /* Check parameters */
+ assert_parameters(IS_ADC_CHANNEL_AC(ADC_InitStruct->Channel));
+ assert_parameters(IS_ADC_CHANNEL_EN_AC(ADC_InitStruct->AverageEnable));
+
+ /* Enable or disable Channels */
+ tmp_adcctrl2 &= ~ANA_ADCCTRL2_SCAN_CHx;
+ tmp_adcctrl2 |= (ADC_InitStruct->Channel << ADC_CHANNEL_SHIFT);
+ /* Enable or disable average */
+ tmp_rtcadcmactl &= ~RTC_ADCMACTL_AVERAGE_CHx;
+ tmp_rtcadcmactl |= (ADC_InitStruct->AverageEnable << ADC_AVERAGECH_SHIFT);
+ /* Enable or disable RESDIV */
+ tmp_adcctrl1 &= ~ANA_ADCCTRL1_RESDIV_CHx;
+ tmp_adcctrl1 |= (ADC_InitStruct->Channel << ADC_RESDIVCH_SHIFT);
+ /* Others */
+ tmp_anareg1 |= ANA_REG1_ADCMODESEL;
+ }
+ /* Mode: TEMP */
+ else
+ {
+ /* Check parameters */
+ assert_parameters(IS_ADC_CHANNEL_TEMP(ADC_InitStruct->Channel));
+
+ /* Enable ADC_CHANNEL_TEMP */
+ tmp_adcctrl2 &= ~ANA_ADCCTRL2_SCAN_CHx;
+ tmp_adcctrl2 |= (ADC_CHANNEL_TEMP << ADC_CHANNEL_SHIFT);
+ /* Enable average */
+ tmp_rtcadcmactl &= ~RTC_ADCMACTL_AVERAGE_CHx;
+ tmp_rtcadcmactl |= (ADC_CHANNEL_TEMP << ADC_AVERAGECH_SHIFT);
+ /* Disable RESDIV */
+ tmp_adcctrl1 &= ~ANA_ADCCTRL1_RESDIV_CHx;
+ /* Others */
+ tmp_anareg1 &= ~ANA_REG1_ADCMODESEL;
+ if(ADC_InitStruct->ClockFrq == ADC_CLKFRQ_LOW)
+ {
+ /* It can improve the accuracy of temperature measurement */
+ tmp_anareg11 |= (ANA_REG11_VINBUFPD | ANA_REG11_REFBUFPD);
+ }
+ }
+
+ ANA->ADCCTRL0 = tmp_adcctrl0&(~ANA_ADCCTRL0_MTRIG);
+ ANA->ADCCTRL1 = tmp_adcctrl1;
+ ANA->ADCCTRL2 = tmp_adcctrl2;
+ ANA->REG0 = tmp_anareg0;
+ ANA->REG1 = tmp_anareg1;
+ ANA->REG3 = tmp_anareg3;
+ ANA->REG11 = tmp_anareg11;
+ RTC_WriteRegisters((uint32_t)&RTC->ADCMACTL, &tmp_rtcadcmactl, 1);
+}
+
+/**
+ * @brief Fills each ADCTHD_InitType member with its default value.
+ * @param ADC_THDStruct: pointer to an ADC_THDStruct structure which will be initialized.
+ * @retval None
+ */
+void ADC_THDStructInit(ADCTHD_InitType* ADC_THDStruct)
+{
+ ADC_THDStruct->THDChannel = ADC_THDCHANNEL0;
+ ADC_THDStruct->UpperTHD = 0x0000;
+ ADC_THDStruct->LowerTHD = 0x0000;
+ ADC_THDStruct->TriggerSel = ADC_THDSEL_HIGH;
+ ADC_THDStruct->THDSource = ADC_CHANNEL_GND0;
+}
+
+/**
+ * @brief Initializes ADC threshold.
+ * @param ADC_THDStruct:
+ * THDChannel:
+ * ADC_THDCHANNEL0
+ * ADC_THDCHANNEL1
+ * ADC_THDCHANNEL2
+ * ADC_THDCHANNEL3
+ * UpperTHD:
+ * 0~0xFF
+ * LowerTHD:
+ * 0~0xFF
+ * TriggerSel:
+ * ADC_THDSEL_HIGH
+ * ADC_THDSEL_RISING
+ * ADC_THDSEL_FALLING
+ * ADC_THDSEL_BOTH
+ * THDSource:
+ * ADC_CHANNEL_GND0
+ * ADC_CHANNEL_BAT1
+ * ADC_CHANNEL_BATRTC
+ * ADC_CHANNEL_CH3
+ * ADC_CHANNEL_CH4
+ * ADC_CHANNEL_CH5
+ * ADC_CHANNEL_CH6
+ * ADC_CHANNEL_CH7
+ * ADC_CHANNEL_CH8
+ * ADC_CHANNEL_CH9
+ * ADC_CHANNEL_TEMP
+ * ADC_CHANNEL_CH11
+ * ADC_CHANNEL_DVCC
+ * ADC_CHANNEL_GND13
+ * ADC_CHANNEL_GND14
+ * ADC_CHANNEL_GND15
+ * @retval None
+ */
+void ADC_THDInit(ADCTHD_InitType* ADC_THDStruct)
+{
+ uint32_t tmp = 0;
+ uint32_t position = 0x00U;
+ uint32_t currentch = 0x00U;
+
+ /* Check parameters */
+ assert_parameters(IS_ADC_THDCHANNEL(ADC_THDStruct->THDChannel));
+ assert_parameters(IS_ADC_THDSEL(ADC_THDStruct->TriggerSel));
+ assert_parameters(IS_ADC_CHANNEL_GETDATA(ADC_THDStruct->THDSource));
+
+ while ((ADC_THDStruct->THDSource >> position) != 0U)
+ {
+ /* Get current ch position */
+ currentch = ADC_THDStruct->THDSource & (0x01U << position);
+
+ if (currentch)
+ {
+ break;
+ }
+ position++;
+ }
+
+ if ((ADC_THDStruct->THDChannel == ADC_THDCHANNEL0) || (ADC_THDStruct->THDChannel == ADC_THDCHANNEL1))
+ {
+ ANA->ADCDATATHD1_0 &= ~((ANA_ADCDATATHD1_0_LOWER_THD0|ANA_ADCDATATHD1_0_UPPER_THD0) << (16*ADC_THDStruct->THDChannel));
+ ANA->ADCDATATHD1_0 |= (((ADC_THDStruct->UpperTHD<<8)|ADC_THDStruct->LowerTHD) << (16*ADC_THDStruct->THDChannel));
+ }
+ else
+ {
+ ANA->ADCDATATHD3_2 &= ~((ANA_ADCDATATHD3_2_LOWER_THD2|ANA_ADCDATATHD3_2_UPPER_THD2) << (16*(ADC_THDStruct->THDChannel - 2)));
+ ANA->ADCDATATHD3_2 |= (((ADC_THDStruct->UpperTHD<<8)|ADC_THDStruct->LowerTHD) << (16*(ADC_THDStruct->THDChannel - 2)));
+ }
+
+ tmp = ANA->ADCDATATHD_CH;
+ tmp &= ~(ANA_ADCDATATHD_CH_THD0_SEL << (ADC_THDStruct->THDChannel*2));
+ tmp |= (ADC_THDStruct->TriggerSel << (ADC_THDStruct->THDChannel*2 + ANA_ADCDATATHD_CH_THD0_SEL_Pos));
+
+ tmp &= ~(ANA_ADCDATATHD_CH_THD0_CH << (ADC_THDStruct->THDChannel*4));
+ tmp |= (position << (ADC_THDStruct->THDChannel*4+ANA_ADCDATATHD_CH_THD0_CH_Pos));
+
+ ANA->ADCDATATHD_CH = tmp;
+}
+
+/**
+ * @brief Starts a ADC calibration (ADC calibration is implemented when DPORST or ADC RESET happened).
+ * @param None
+ * @retval None
+ */
+void ADC_Calibration(void)
+{
+ volatile uint32_t i;
+
+// if ((ANA->ADCCTRL2 & ANA_ADCCTRL2_RTC_CAL_DONE) && (ANA->ADCDOS != 0))
+// return;
+ //Disable ADC
+ADCCALSTART:
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+ ANA->ADCCTRL2 |= ANA_ADCCTRL2_CAL_ERR_CLR;
+ ADC_SYNC_WR();
+ //Set 6.5M ADC clock
+ ANA->REG0 &= ~ANA_REG0_ADCFRQSEL;
+ ADC_SYNC_WR();
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ //ADC STOP
+ ANA->ADCCTRL0 = ANA_ADCCTRL0_RSTValue|ANA_ADCCTRL0_STOP;
+ ADC_SYNC_WR();
+ ANA->ADCCTRL0 = ANA_ADCCTRL0_RSTValue;
+ ADC_SYNC_WR();
+ //Reset ADC
+ ANA->ADCCTRL2 = ANA_ADCCTRL2_RSTValue | ANA_ADCCTRL2_RESET;
+ ADC_SYNC_WR();
+ ANA->ADCCTRL2 = ANA_ADCCTRL2_RSTValue;
+ ADC_SYNC_WR();
+ //Enable ADC TRG_CAL
+ ANA->ADCCTRL2 |= ANA_ADCCTRL2_ADC_EN_TRG_CAL;
+ ADC_SYNC_WR();
+ ANA->ADCCTRL2 |= ANA_ADCCTRL2_ADC_EN;
+ ADC_SYNC_WR();
+ /* while loop until ADC calibration is done */
+ ADC_SYNC_WR();
+ while (!(ANA->ADCCTRL2 & ANA_ADCCTRL2_RTC_CAL_DONE))
+ {
+ }
+ if(ANA->ADCCTRL2 & ANA_ADCCTRL2_CAL_ERR)
+ {
+ goto ADCCALSTART;
+ }
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN_TRG_CAL;
+ ADC_SYNC_WR();
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+ ADC_SYNC_WR();
+
+}
+
+/**
+ * @brief Calculates ADC value via ADC original data.
+ * @param [in]Mode:
+ ADC_3V_ADCCHx_NODIV
+ ADC_3V_ADCCHx_RESDIV
+ ADC_3V_BAT1_RESDIV
+ ADC_3V_BATRTC_RESDIV
+ ADC_5V_ADCCHx_NODIV
+ ADC_5V_ADCCHx_RESDIV
+ ADC_5V_BAT1_RESDIV
+ ADC_5V_BATRTC_RESDIV
+ ADC_TEMP
+ * @param [in]adc_data: The ADC original data
+ * @param [out]value: The pointer of value calculated by this function
+ * @retval 1 NVR checksum error.
+ 0 Function successed.
+ */
+uint32_t ADC_CalculateValue(uint32_t Mode, int16_t adc_data, int16_t *value)
+{
+ NVR_ADCVOLPARA parameter;
+ NVR_TempParams TempParams;
+
+ /* Check parameters */
+ assert_parameters(IS_ADCVOL_MODE(Mode));
+
+ if (Mode == ADC_TEMP)
+ {
+ if (NVR_GetTempParameters(&TempParams))
+ {
+ return 1;
+ }
+ else
+ {
+ /* Calculate temperature */
+ *value = ((TempParams.RTCTempP0 * ((adc_data*adc_data)>>16)) + TempParams.RTCTempP1*adc_data + TempParams.RTCTempP2) >> 8;
+ }
+ }
+ else
+ {
+ if (NVR_GetVoltageParameters(Mode, &parameter))
+ {
+ return 1;
+ }
+ else
+ {
+ *value = (int16_t)((parameter.aParameter*(float)adc_data + parameter.bParameter) + parameter.OffsetParameter);
+ }
+ }
+
+ return 0;
+}
+
+/**
+ * @brief Enables or disables ADC.
+ * @note None
+ * @param NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ADC_Cmd(uint32_t NewState)
+{
+ __IO uint32_t dly = 400UL;
+
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ if (NewState == DISABLE)
+ {
+ if(ANA->ADCSTATE & ANA_ADCSTATE_ADCSTATE)
+ {
+ ANA->ADCCTRL0 |= ANA_ADCCTRL0_STOP;
+ if ((MISC2->CLKSEL&MISC2_CLKSEL_CLKSEL) == MISC2_CLKSEL_CLKSEL_RTCCLK)
+ {
+ __NOP();
+ __NOP();
+ }
+ else
+ {
+ while (dly--)
+ __NOP();
+ }
+ ANA->ADCCTRL0 &= ~ANA_ADCCTRL0_STOP;
+ }
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+ }
+ else
+ {
+ ANA->ADCCTRL0 &= ~ANA_ADCCTRL0_STOP;
+ ANA->ADCCTRL2 |= ANA_ADCCTRL2_ADC_EN;
+
+ if ((MISC2->CLKSEL&MISC2_CLKSEL_CLKSEL) == MISC2_CLKSEL_CLKSEL_RTCCLK)
+ {
+ __NOP();
+ __NOP();
+ }
+ else
+ {
+ while (dly--)
+ __NOP();
+ }
+ /* Start Manual ADC conversion */
+ ADC_StartManual();
+ /* Waiting Manual ADC conversion done */
+ ADC_WaitForManual();
+ }
+}
+
+/**
+ * @brief Enables or disables ADC lower threshold detect function.
+ * @note None
+ * @param THDChannel:
+ ADC_THDCHANNEL0~ADC_THDCHANNEL3
+ NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ADC_LowerTHDCmd(uint32_t THDChannel,uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_ADC_THDCHANNEL(THDChannel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == DISABLE)
+ {
+ ANA->ADCCTRL1 &= ~(ANA_ADCCTRL1_LOWER_THD0_EN << (THDChannel*2));
+ }
+ else
+ {
+ ANA->ADCCTRL1 |= (ANA_ADCCTRL1_LOWER_THD0_EN << (THDChannel*2));
+ }
+}
+
+/**
+ * @brief Enables or disables ADC upper threshold detect function.
+ * @note None
+ * @param THDChannel:
+ IS_ADC_THDCHANNEL0~IS_ADC_THDCHANNEL3
+ NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ADC_UpperTHDCmd(uint32_t THDChannel,uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_ADC_THDCHANNEL(THDChannel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == DISABLE)
+ {
+ ANA->ADCCTRL1 &= ~(ANA_ADCCTRL1_UPPER_THD0_EN << (THDChannel*2));
+ }
+ else
+ {
+ ANA->ADCCTRL1 |= (ANA_ADCCTRL1_UPPER_THD0_EN << (THDChannel*2));
+ }
+}
+
+/**
+ * @brief Starts a ADC manual-trigger.
+ * @param None
+ * @retval None
+ */
+void ADC_StartManual(void)
+{
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG);
+ ANA->ADCCTRL0 |= ANA_ADCCTRL0_MTRIG;
+}
+
+/**
+ * @brief Waits until the last Manual ADC conversion done.
+ * @param None
+ * @retval None
+ */
+void ADC_WaitForManual(void)
+{
+ while (ANA->ADCCTRL0 & ANA_ADCCTRL0_MTRIG)
+ {
+ }
+}
+
+/**
+ * @brief Gets ADC vonversion value.
+ * @param Channel:
+ * ADC_CHANNEL_GND0
+ * ADC_CHANNEL_BAT1
+ * ADC_CHANNEL_BATRTC
+ * ADC_CHANNEL_CH3
+ * ADC_CHANNEL_CH4
+ * ADC_CHANNEL_CH5
+ * ADC_CHANNEL_CH6
+ * ADC_CHANNEL_CH7
+ * ADC_CHANNEL_CH8
+ * ADC_CHANNEL_CH9
+ * ADC_CHANNEL_TEMP
+ * ADC_CHANNEL_CH11
+ * ADC_CHANNEL_DVCC
+ * ADC_CHANNEL_GND13
+ * ADC_CHANNEL_GND14
+ * ADC_CHANNEL_GND15
+ * @retval ADC conversion value.
+ */
+int16_t ADC_GetADCConversionValue(uint32_t Channel)
+{
+ uint32_t position = 0x0000UL;
+ uint32_t chcurrent = 0x0000UL;
+
+ /* Check parameters */
+ assert_parameters(IS_ADC_CHANNEL_GETDATA(Channel));
+
+ while ((Channel >> position) != 0UL)
+ {
+ chcurrent = Channel & (0x01U << position);
+ if (chcurrent)
+ break;
+ position++;
+ }
+ return (ANA->ADCDATA[position]);
+}
+
+/**
+ * @brief Enables or disables ADC interrupt.
+ * @param INTMask: can use the '|' operator
+ ADC_INT_UPPER_TH3
+ ADC_INT_LOWER_TH3
+ ADC_INT_UPPER_TH2
+ ADC_INT_LOWER_TH2
+ ADC_INT_UPPER_TH1
+ ADC_INT_LOWER_TH1
+ ADC_INT_UPPER_TH0
+ ADC_INT_LOWER_TH0
+ ADC_INT_AUTODONE
+ ADC_INT_MANUALDONE
+ NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ADC_INTConfig(uint32_t INTMask, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ assert_parameters(IS_ADC_INT(INTMask));
+
+ if (NewState == ENABLE)
+ ANA->INTEN |= INTMask;
+ else
+ ANA->INTEN &= ~INTMask;
+}
+
+/**
+ * @brief Clears ADC interrupt status.
+ * @param INTMask: can use the '|' operator
+ ADC_INTSTS_UPPER_TH3
+ ADC_INTSTS_LOWER_TH3
+ ADC_INTSTS_UPPER_TH2
+ ADC_INTSTS_LOWER_TH2
+ ADC_INTSTS_UPPER_TH1
+ ADC_INTSTS_LOWER_TH1
+ ADC_INTSTS_UPPER_TH0
+ ADC_INTSTS_LOWER_TH0
+ ADC_INTSTS_AUTODONE
+ ADC_INTSTS_MANUALDONE
+ * @retval None
+ */
+void ADC_ClearINTStatus(uint32_t INTMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_ADC_INTFLAGC(INTMask));
+
+ ANA->INTSTS = INTMask;
+}
+
+/**
+ * @brief Gets ADC interrupt status.
+ * @param INTMask:
+ ADC_INTSTS_UPPER_TH3
+ ADC_INTSTS_LOWER_TH3
+ ADC_INTSTS_UPPER_TH2
+ ADC_INTSTS_LOWER_TH2
+ ADC_INTSTS_UPPER_TH1
+ ADC_INTSTS_LOWER_TH1
+ ADC_INTSTS_UPPER_TH0
+ ADC_INTSTS_LOWER_TH0
+ ADC_INTSTS_AUTODONE
+ ADC_INTSTS_MANUALDONE
+ * @retval 1: status set
+ 0: status reset.
+ */
+uint8_t ADC_GetINTStatus(uint32_t INTMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_ADC_INTFLAGR(INTMask));
+
+ if (ANA->INTSTS & INTMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Gets ADC flag
+ * @param FlagMask
+ ADC_FLAG_CONV_ERR
+ ADC_FLAG_CAL_ERR
+ ADC_FLAG_CAL_DONE
+ ADC_FLAG_BUSY
+ * @retval 1 flag set
+ * 0 flag reset.
+ */
+uint8_t ADC_GetFlag(uint32_t FlagMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_ADC_ADCFLAG(FlagMask));
+
+ if (ANA->ADCCTRL2 & FlagMask)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears ADC flag
+ * @param FlagMask: status to clear, can use the '|' operator.
+ ADC_FLAG_CONV_ERR
+ ADC_FLAG_CAL_ERR
+ * @retval None
+ */
+void ADC_ClearFlag(uint32_t FlagMask)
+{
+ uint32_t tmp;
+
+ /* Parameter check */
+ assert_parameters(IS_ADC_ADCFLAGC(FlagMask));
+
+ if (FlagMask == ADC_FLAG_CONV_ERR)
+ {
+ tmp = ANA->ADCCTRL2;
+ tmp &= ~ANA_ADCCTRL2_CAL_ERR_CLR;
+ tmp |= ANA_ADCCTRL2_CONV_ERR_CLR;
+ }
+ else if (FlagMask == ADC_FLAG_CAL_ERR)
+ {
+ tmp = ANA->ADCCTRL2;
+ tmp &= ~ANA_ADCCTRL2_CONV_ERR_CLR;
+ tmp |= ANA_ADCCTRL2_CAL_ERR_CLR;
+ }
+ else
+ {
+ tmp = ANA->ADCCTRL2;
+ tmp |= (ANA_ADCCTRL2_CAL_ERR_CLR | ANA_ADCCTRL2_CONV_ERR_CLR);
+ }
+ ANA->ADCCTRL2 = tmp;
+}
+
+/**
+ * @brief Gets threshold flag
+ * @param THDFlagMask
+ ADC_THDFLAG_UPPER3
+ ADC_THDFLAG_LOWER3
+ ADC_THDFLAG_UPPER2
+ ADC_THDFLAG_LOWER2
+ ADC_THDFLAG_UPPER1
+ ADC_THDFLAG_LOWER1
+ ADC_THDFLAG_UPPER0
+ ADC_THDFLAG_LOWER0
+ * @retval 1 flag set
+ * 0 flag reset.
+ */
+uint8_t ADC_GetTHDFlag(uint32_t THDFlagMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_ADC_THDFLAG(THDFlagMask));
+
+ if(ANA->ADCDATATHD_CH & THDFlagMask)
+ return 1;
+ else
+ return 0;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc_tiny.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc_tiny.c
new file mode 100644
index 0000000000..b24a8863e7
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_adc_tiny.c
@@ -0,0 +1,176 @@
+/**
+ ******************************************************************************
+ * @file lib_adc_tiny.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief ADC_TINY library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_adc_tiny.h"
+
+#define ANA_REGF_RSTValue (0U)
+
+/**
+ * @brief Initializes the Tiny ADC peripheral registers to their default reset values.
+ * @param None
+ * @retval None
+ */
+void TADC_DeInit(void)
+{
+ ANA->REGF = ANA_REGF_RSTValue;
+ ANA->INTSTS = ANA_INTSTS_INTSTS13;
+ ANA->INTEN &= ~ANA_INTEN_INTEN13;
+ ANA->MISC &= ~ANA_MISC_TADCTH;
+}
+
+/**
+ * @brief Fills each TADC_InitStruct member with its default value.
+ * @param TADC_InitStruct: pointer to an TADCInitType structure which will be initialized.
+ * @retval None
+ */
+void TADC_StructInit(TADCInitType* TADC_InitStruct)
+{
+ /*--------------- Reset TADC init structure parameters values ---------------*/
+ /* Initialize the SignalSel member */
+ TADC_InitStruct->SignalSel = ADCTINY_SIGNALSEL_IOE6;
+ /* Initialize the ADTREF1 member */
+ TADC_InitStruct->ADTREF1 = ADCTINY_REF1_0_9;
+ /* Initialize the ADTREF2 member */
+ TADC_InitStruct->ADTREF2 = ADCTINY_REF2_1_8;
+ /* Initialize the ADTREF3 member */
+ TADC_InitStruct->ADTREF3 = ADCTINY_REF3_2_7;
+}
+
+/**
+ * @brief Initializes Tiny ADC.
+ * @param TADC_InitStruct
+ SelADT:
+ ADCTINY_SIGNALSEL_IOE6
+ ADCTINY_SIGNALSEL_IOE7
+ ADTREF1:
+ ADCTINY_REF1_0_9
+ ADCTINY_REF1_0_7
+ ADTREF2:
+ ADCTINY_REF2_1_8
+ ADCTINY_REF2_1_6
+ ADTREF3:
+ ADCTINY_REF3_2_7
+ ADCTINY_REF3_2_5
+ * @retval None
+ */
+void TADC_Init(TADCInitType* TADC_InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_ADCTINY_SELADT(TADC_InitStruct->SignalSel));
+ assert_parameters(IS_ADCTINY_ADTREF1(TADC_InitStruct->ADTREF1));
+ assert_parameters(IS_ADCTINY_ADTREF2(TADC_InitStruct->ADTREF2));
+ assert_parameters(IS_ADCTINY_ADTREF3(TADC_InitStruct->ADTREF3));
+
+ tmp = ANA->REGF;
+ tmp &= ~(ANA_REGF_ADTSEL \
+ |ANA_REGF_ADTREF1SEL\
+ |ANA_REGF_ADTREF2SEL\
+ |ANA_REGF_ADTREF3SEL);
+ tmp |= (TADC_InitStruct->SignalSel \
+ |TADC_InitStruct->ADTREF1\
+ |TADC_InitStruct->ADTREF2\
+ |TADC_InitStruct->ADTREF3);
+ ANA->REGF = tmp;
+}
+
+/**
+ * @brief Enables or disables Tiny ADC .
+ * @param NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void TADC_Cmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ if (NewState == ENABLE)
+ ANA->REGF |= ANA_REGF_ADTPDN;
+ else
+ ANA->REGF &= ~ANA_REGF_ADTPDN;
+}
+
+/**
+ * @brief Gets Tiny ADC output value.
+ * @param None
+ * @retval Output of Tiny ADC(0 ~ 3).
+ */
+uint8_t TADC_GetOutput(void)
+{
+ return ((ANA->CMPOUT & ANA_CMPOUT_TADCO) >> ANA_CMPOUT_TADCO_Pos);
+}
+
+/**
+ * @brief Configures Tiny ADC interrupt threshold.
+ * @param THSel:
+ ADCTINY_THSEL_0
+ ADCTINY_THSEL_1
+ ADCTINY_THSEL_2
+ ADCTINY_THSEL_3
+ * @retval None.
+ */
+void TADC_IntTHConfig(uint32_t THSel)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_ADCTINY_THSEL(THSel));
+
+ tmp = ANA->MISC;
+ tmp &= ~ANA_MISC_TADCTH;
+ tmp |= THSel;
+ ANA->MISC = tmp;
+}
+
+/**
+ * @brief Enables or disables Tiny ADC interrupt.
+ * @param NewState
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void TADC_INTConfig(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ if (NewState == ENABLE)
+ ANA->INTEN |= ANA_INTEN_INTEN13;
+ else
+ ANA->INTEN &= ~ANA_INTEN_INTEN13;
+}
+
+/**
+ * @brief Gets Tiny ADC interrupt status.
+ * @param None
+ * @retval Interrupt status.
+ */
+uint8_t TADC_GetINTStatus(void)
+{
+ if (ANA->INTSTS & ANA_INTSTS_INTSTS13)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears Tiny ADC interrupt status.
+ * @param None
+ * @retval None
+ */
+void TADC_ClearINTStatus(void)
+{
+ ANA->INTSTS = ANA_INTSTS_INTSTS13;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_ana.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_ana.c
new file mode 100644
index 0000000000..766f8303a0
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_ana.c
@@ -0,0 +1,160 @@
+/**
+ ******************************************************************************
+ * @file lib_ana.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief Analog library.
+ ******************************************************************************
+ * @attention
+ *
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "lib_ana.h"
+
+/**
+ * @brief Gets analog status.
+ * @param StatusMask:
+ ANA_STATUS_AVCCLV
+ ANA_STATUS_VDCINDROP
+ ANA_STATUS_VDDALARM
+ ANA_STATUS_COMP2
+ ANA_STATUS_COMP1
+ ANA_STATUS_LOCKL
+ ANA_STATUS_LOCKH
+ * @retval Analog status
+ */
+uint8_t ANA_GetStatus(uint32_t StatusMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ANA_STATUS(StatusMask));
+
+ if (ANA->CMPOUT & StatusMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Gets analog interrupt status.
+ * @param IntMask:
+ ANA_INT_UPPER_TH3
+ ANA_INT_LOWER_TH3
+ ANA_INT_UPPER_TH2
+ ANA_INT_LOWER_TH2
+ ANA_INT_UPPER_TH1
+ ANA_INT_LOWER_TH1
+ ANA_INT_UPPER_TH0
+ ANA_INT_LOWER_TH0
+ ANA_INT_TADC_OVER
+ ANA_INT_REGERR
+ ANA_INT_SLPFAIL_VDCIN
+ ANA_INT_AVCCLV
+ ANA_INT_VDCINDROP
+ ANA_INT_VDDALARM
+ ANA_INT_COMP2
+ ANA_INT_COMP1
+ ANA_INT_ADCA
+ ANA_INT_ADCM
+ * @retval interrupt status.
+ */
+uint8_t ANA_GetINTStatus(uint32_t IntMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ANA_INTSTSR(IntMask));
+
+ if (ANA->INTSTS&IntMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears analog interrupt status.
+ * @param IntMask:status to clear, can use the '|' operator.
+ ANA_INT_UPPER_TH3
+ ANA_INT_LOWER_TH3
+ ANA_INT_UPPER_TH2
+ ANA_INT_LOWER_TH2
+ ANA_INT_UPPER_TH1
+ ANA_INT_LOWER_TH1
+ ANA_INT_UPPER_TH0
+ ANA_INT_LOWER_TH0
+ ANA_INT_TADC_OVER
+ ANA_INT_REGERR
+ ANA_INT_SLPFAIL_VDCIN
+ ANA_INT_AVCCLV
+ ANA_INT_VDCINDROP
+ ANA_INT_VDDALARM
+ ANA_INT_COMP2
+ ANA_INT_COMP1
+ ANA_INT_ADCA
+ ANA_INT_ADCM
+ * @retval None
+ */
+void ANA_ClearINTStatus(uint32_t IntMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ANA_INTSTSC(IntMask));
+
+ ANA->INTSTS = IntMask;
+}
+
+/**
+ * @brief Enables or disables analog interrupt.
+ * @param IntMask:status to clear, can use the '|' operator.
+ ANA_INT_UPPER_TH3
+ ANA_INT_LOWER_TH3
+ ANA_INT_UPPER_TH2
+ ANA_INT_LOWER_TH2
+ ANA_INT_UPPER_TH1
+ ANA_INT_LOWER_TH1
+ ANA_INT_UPPER_TH0
+ ANA_INT_LOWER_TH0
+ ANA_INT_TADC_OVER
+ ANA_INT_REGERR
+ ANA_INT_SLPFAIL_VDCIN
+ ANA_INT_AVCCLV
+ ANA_INT_VDCINDROP
+ ANA_INT_VDDALARM
+ ANA_INT_COMP2
+ ANA_INT_COMP1
+ ANA_INT_ADCA
+ ANA_INT_ADCM
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ANA_INTConfig(uint32_t IntMask, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_ANA_INT(IntMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = ANA->INTEN;
+ if (NewState == ENABLE)
+ {
+ tmp |= IntMask;
+ }
+ else
+ {
+ tmp &= ~IntMask;
+ }
+ ANA->INTEN = tmp;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_clk.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_clk.c
new file mode 100644
index 0000000000..fae28dc9af
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_clk.c
@@ -0,0 +1,675 @@
+/**
+ ******************************************************************************
+ * @file lib_clk.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief Clock library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_clk.h"
+
+/**
+ * @brief Initializes the CPU, AHB and APB buses clocks according to the specified
+ * parameters in the CLK_ClkInitStruct.
+ *
+ * @note This function performs the following:
+ * 1. If want to switch AHB clock source, enable BGP, enable 6.5M RC,
+ * AHB clock source switch to RCH first.
+ * 2. configure clock (except AHB clock source configuration). - optional
+ * 3. configure AHB clock source. - optional
+ * 4. HCLK/PCLK divider configuration. - optional
+ *
+ * @note CLK_InitTypeDef *CLK_ClkInitStruct
+ * [in]CLK_ClkInitStruct->ClockType, can use the '|' operator, the selection of parameters is as follows
+ * CLK_TYPE_ALL
+ * CLK_TYPE_AHBSRC
+ * CLK_TYPE_PLLL
+ * CLK_TYPE_PLLH
+ * CLK_TYPE_XTALH
+ * CLK_TYPE_RTCCLK
+ * CLK_TYPE_HCLK
+ * CLK_TYPE_PCLK
+ *
+ * CLK_TYPE_ALL All clocks' configurations is valid
+ * CLK_TYPE_AHBSRC CLK_ClkInitStruct->AHBSource(AHB Clock source configuration) is valid
+ * [in]CLK_ClkInitStruct->AHBSource:
+ * CLK_AHBSEL_6_5MRC
+ * CLK_AHBSEL_6_5MXTAL
+ * CLK_AHBSEL_HSPLL
+ * CLK_AHBSEL_RTCCLK
+ * CLK_AHBSEL_LSPLL
+ * CLK_TYPE_PLLL CLK_ClkInitStruct->PLLL(PLLL configuration) is valid
+ * [in]CLK_ClkInitStruct->PLLL.State:
+ * CLK_PLLL_ON (PLLL.Source/Frequency configuration is valid)
+ * CLK_PLLL_OFF (PLLL.Source/Frequency configuration is not valid)
+ * [in]CLK_ClkInitStruct->PLLL.Source:
+ * CLK_PLLLSRC_RCL
+ * CLK_PLLLSRC_XTALL
+ * [in]CLK_ClkInitStruct->PLLL.Frequency:
+ * CLK_PLLL_26_2144MHz
+ * CLK_PLLL_13_1072MHz
+ * CLK_PLLL_6_5536MHz
+ * CLK_PLLL_3_2768MHz
+ * CLK_PLLL_1_6384MHz
+ * CLK_PLLL_0_8192MHz
+ * CLK_PLLL_0_4096MHz
+ * CLK_PLLL_0_2048MHz
+ * CLK_TYPE_PLLH CLK_ClkInitStruct->PLLH(PLLH configuration) is valid
+ * [in]CLK_ClkInitStruct->PLLH.State:
+ * CLK_PLLH_ON (PLLH.Source/Frequency configuration is valid)
+ * CLK_PLLH_OFF (PLLH.Source/Frequency configuration is not valid)
+ * [in]CLK_ClkInitStruct->PLLH.Source:
+ * CLK_PLLHSRC_RCH
+ * CLK_PLLHSRC_XTALH
+ * [in]CLK_ClkInitStruct->PLLH.Frequency:
+ * CLK_PLLH_13_1072MHz
+ * CLK_PLLH_16_384MHz
+ * CLK_PLLH_19_6608MHz
+ * CLK_PLLH_22_9376MHz
+ * CLK_PLLH_26_2144MHz
+ * CLK_PLLH_29_4912MHz
+ * CLK_PLLH_32_768MHz
+ * CLK_PLLH_36_0448MHz
+ * CLK_PLLH_39_3216MHz
+ * CLK_PLLH_42_5984MHz
+ * CLK_PLLH_45_8752MHz
+ * CLK_PLLH_49_152MHz
+ * CLK_TYPE_XTALH CLK_ClkInitStruct->XTALH(XTALH configuration) is valid
+ * [in]CLK_ClkInitStruct->XTALH.State:
+ * CLK_XTALH_ON
+ * CLK_XTALH_OFF
+ * CLK_TYPE_RTCCLK CLK_ClkInitStruct->RTCCLK(RTCCLK configuration) is valid
+ * [in]CLK_ClkInitStruct->RTCCLK.Source:
+ * CLK_RTCCLKSRC_XTALL
+ * CLK_RTCCLKSRC_RCL
+ * [in]CLK_ClkInitStruct->RTCCLK.Divider:
+ * CLK_RTCCLKDIV_1
+ * CLK_RTCCLKDIV_4
+ * CLK_TYPE_HCLK CLK_ClkInitStruct->HCLK(AHB Clock(divider) configuration) is valid
+ * [in]CLK_ClkInitStruct->HCLK.Divider:
+ * 1 ~ 256
+ * CLK_TYPE_PCLK CLK_ClkInitStruct->PCLK(APB Clock(divider) configuration) is valid
+ * [in]CLK_ClkInitStruct->PCLK.Divider:
+ * 1 ~ 256
+ *
+ * @param CLK_ClkInitStruct pointer to an CLK_InitTypeDef structure that
+ * contains the configuration information for the clocks.
+ *
+ * @retval None
+ */
+void CLK_ClockConfig(CLK_InitTypeDef *CLK_ClkInitStruct)
+{
+ uint32_t tmp;
+
+ assert_parameters(IS_CLK_TYPE(CLK_ClkInitStruct->ClockType));
+
+ if (CLK_ClkInitStruct->ClockType & CLK_TYPE_AHBSRC)
+ {
+ /* Enable BGP */
+ ANA->REG3 &= ~ANA_REG3_BGPPD;
+ /* Enable 6.5M RC */
+ ANA->REG3 &= ~ANA_REG3_RCHPD;
+
+ /* AHB clock source switch to RCH */
+ MISC2->CLKSEL = 0;
+ }
+
+ ANA->REGA &= ~BIT6;
+
+ /*---------- XTALH configuration ----------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_XTALH)
+ {
+ assert_parameters(IS_CLK_XTALHSTA(CLK_ClkInitStruct->XTALH.State));
+
+ /* XTALH state configure */
+ ANA->REG3 &= ~ANA_REG3_XOHPDN;
+ ANA->REG3 |= CLK_ClkInitStruct->XTALH.State;
+
+ }
+
+ /*-------------------- PLLL configuration --------------------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_PLLL)
+ {
+ assert_parameters(IS_CLK_PLLLSRC(CLK_ClkInitStruct->PLLL.Source));
+ assert_parameters(IS_CLK_PLLLSTA(CLK_ClkInitStruct->PLLL.State));
+ assert_parameters(IS_CLK_PLLLFRQ(CLK_ClkInitStruct->PLLL.Frequency));
+
+ /* PLLL state configure */
+ if (CLK_ClkInitStruct->PLLL.State == CLK_PLLL_ON)
+ {
+ /* power up PLLL */
+ ANA->REG3 |= ANA_REG3_PLLLPDN;
+
+ /* Configure PLLL frequency */
+ tmp = ANA->REG9;
+ tmp &= ~ANA_REG9_PLLLSEL;
+ tmp |= CLK_ClkInitStruct->PLLL.Frequency;
+ ANA->REG9 = tmp;
+
+ /* Configure PLLL input clock selection */
+ tmp = PMU->CONTROL;
+ tmp &= ~PMU_CONTROL_PLLL_SEL;
+ tmp |= CLK_ClkInitStruct->PLLL.Source;
+ PMU->CONTROL = tmp;
+ }
+ else
+ {
+ /* power down PLLL */
+ ANA->REG3 &= ~ANA_REG3_PLLLPDN;
+ }
+ }
+
+ /*-------------------- PLLH configuration --------------------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_PLLH)
+ {
+ assert_parameters(IS_CLK_PLLHSRC(CLK_ClkInitStruct->PLLH.Source));
+ assert_parameters(IS_CLK_PLLHSTA(CLK_ClkInitStruct->PLLH.State));
+ assert_parameters(IS_CLK_PLLHFRQ(CLK_ClkInitStruct->PLLH.Frequency));
+
+ /* PLLH state configure */
+ if (CLK_ClkInitStruct->PLLH.State == CLK_PLLH_ON)
+ {
+ /* Power up PLLH */
+ ANA->REG3 |= ANA_REG3_PLLHPDN;
+
+ /* Configure PLLH frequency */
+ tmp = ANA->REG9;
+ tmp &= ~ANA_REG9_PLLHSEL;
+ tmp |= CLK_ClkInitStruct->PLLH.Frequency;
+ ANA->REG9 = tmp;
+
+ /* Clock input source, XTALH, XOH power on*/
+ if (CLK_ClkInitStruct->PLLH.Source == CLK_PLLHSRC_XTALH)
+ {
+ ANA->REG3 |= ANA_REG3_XOHPDN;
+ }
+
+ /* Configure PLLH input clock selection */
+ tmp = PMU->CONTROL;
+ tmp &= ~PMU_CONTROL_PLLH_SEL;
+ tmp |= CLK_ClkInitStruct->PLLH.Source;
+ PMU->CONTROL = tmp;
+ }
+ else
+ {
+ /* Power down PLLH */
+ ANA->REG3 &= ~ANA_REG3_PLLHPDN;
+ }
+ }
+
+ /*---------- RTCCLK configuration ----------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_RTCCLK)
+ {
+ assert_parameters(IS_CLK_RTCSRC(CLK_ClkInitStruct->RTCCLK.Source));
+ assert_parameters(IS_CLK_RTCDIV(CLK_ClkInitStruct->RTCCLK.Divider));
+
+ /* RTCCLK source(optional) */
+ tmp = PMU->CONTROL;
+ tmp &= ~PMU_CONTROL_RTCCLK_SEL;
+ tmp |= CLK_ClkInitStruct->RTCCLK.Source;
+ PMU->CONTROL = tmp;
+
+ /*----- RTCCLK Divider -----*/
+ RTC_PrescalerConfig(CLK_ClkInitStruct->RTCCLK.Divider);
+ }
+
+ /*---------- AHB clock source configuration ----------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_AHBSRC)
+ {
+ assert_parameters(IS_CLK_AHBSRC(CLK_ClkInitStruct->AHBSource));
+
+ /* clock source: 6.5M RC */
+ if (CLK_ClkInitStruct->AHBSource == CLK_AHBSEL_6_5MRC)
+ {
+ /* clock source configuration */
+ MISC2->CLKSEL = CLK_ClkInitStruct->AHBSource;
+ }
+
+ /* clock source: 6_5MXTAL */
+ else if (CLK_ClkInitStruct->AHBSource == CLK_AHBSEL_6_5MXTAL)
+ {
+ /* Power up 6.5M xtal */
+ ANA->REG3 |= ANA_REG3_XOHPDN;
+ /* clock source configuration */
+ MISC2->CLKSEL = CLK_ClkInitStruct->AHBSource;
+ }
+
+ /* clock source: PLLH */
+ else if (CLK_ClkInitStruct->AHBSource == CLK_AHBSEL_HSPLL)
+ {
+ /* Power up PLLH */
+ ANA->REG3 |= ANA_REG3_PLLHPDN;
+ /* while loop until PLLL is lock */
+ while (!(ANA->CMPOUT & ANA_CMPOUT_LOCKH))
+ {
+ }
+ /* clock source configuration */
+ MISC2->CLKSEL = CLK_ClkInitStruct->AHBSource;
+ }
+
+ /* clock source: PLLL */
+ else if (CLK_ClkInitStruct->AHBSource == CLK_AHBSEL_LSPLL)
+ {
+ /* Power up PLLL */
+ ANA->REG3 |= ANA_REG3_PLLLPDN;
+ /* while loop until PLLL is lock */
+ while (!(ANA->CMPOUT & ANA_CMPOUT_LOCKL))
+ {
+ }
+ /* clock source configuration */
+ MISC2->CLKSEL = CLK_ClkInitStruct->AHBSource;
+ }
+ /* clock source: RTCCLK */
+ else
+ {
+ /* clock source configuration */
+ MISC2->CLKSEL = CLK_ClkInitStruct->AHBSource;
+ }
+ }
+
+ /*---------- HCLK configuration ----------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_HCLK)
+ {
+ assert_parameters(IS_CLK_HCLKDIV(CLK_ClkInitStruct->HCLK.Divider));
+
+ MISC2->CLKDIVH = (CLK_ClkInitStruct->HCLK.Divider) - 1;
+ }
+
+ /*---------- PCLK configuration ----------*/
+ if ((CLK_ClkInitStruct->ClockType) & CLK_TYPE_PCLK)
+ {
+ assert_parameters(IS_CLK_PCLKDIV(CLK_ClkInitStruct->PCLK.Divider));
+
+ MISC2->CLKDIVP = (CLK_ClkInitStruct->PCLK.Divider) - 1;
+ }
+}
+
+/**
+ * @brief Enables or disables AHB Periphral clock.
+ * @param Periphral: can use the '|' operator
+ CLK_AHBPERIPHRAL_DMA
+ CLK_AHBPERIPHRAL_GPIO
+ CLK_AHBPERIPHRAL_LCD
+ CLK_AHBPERIPHRAL_CRYPT
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void CLK_AHBPeriphralCmd(uint32_t Periphral, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_CLK_AHBPERIPHRAL(Periphral));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ MISC2->HCLKEN |= Periphral;
+ }
+ else
+ {
+ MISC2->HCLKEN &= ~Periphral;
+ }
+}
+
+/**
+ * @brief Enables or disables APB Periphral clock.
+ * @param Periphral: can use the '|' operator
+ CLK_APBPERIPHRAL_DMA
+ CLK_APBPERIPHRAL_I2C
+ CLK_APBPERIPHRAL_SPI1
+ CLK_APBPERIPHRAL_SPI2
+ CLK_APBPERIPHRAL_UART0
+ CLK_APBPERIPHRAL_UART1
+ CLK_APBPERIPHRAL_UART2
+ CLK_APBPERIPHRAL_UART3
+ CLK_APBPERIPHRAL_UART4
+ CLK_APBPERIPHRAL_UART5
+ CLK_APBPERIPHRAL_ISO78160
+ CLK_APBPERIPHRAL_ISO78161
+ CLK_APBPERIPHRAL_TIMER
+ CLK_APBPERIPHRAL_MISC
+ CLK_APBPERIPHRAL_MISC2
+ CLK_APBPERIPHRAL_PMU
+ CLK_APBPERIPHRAL_RTC
+ CLK_APBPERIPHRAL_ANA
+ CLK_APBPERIPHRAL_U32K0
+ CLK_APBPERIPHRAL_U32K1
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void CLK_APBPeriphralCmd(uint32_t Periphral, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_CLK_APBPERIPHRAL(Periphral));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ MISC2->PCLKEN |= Periphral;
+ }
+ else
+ {
+ MISC2->PCLKEN &= ~Periphral;
+ }
+}
+
+/**
+ * @brief Returns the HCLK frequency
+ * @param None
+ * @retval HCLK frequency
+ */
+uint32_t CLK_GetHCLKFreq(void)
+{
+ uint32_t ahb_clksrc;
+ uint32_t ahb_div;
+ uint32_t pllh_frq;
+ uint32_t plll_frq;
+ uint32_t rtcclk_div;
+ uint32_t hclk;
+
+ /* Get current AHB clock source */
+ ahb_clksrc = MISC2->CLKSEL & MISC2_CLKSEL_CLKSEL;
+ /* Get AHB clock divider */
+ ahb_div = (MISC2->CLKDIVH & MISC2_CLKDIVH_CLKDIVH) + 1;
+
+ switch (ahb_clksrc)
+ {
+ /* AHB Clock source : 6.5M RC */
+ case MISC2_CLKSEL_CLKSEL_RCOH:
+ hclk = 6553600 / ahb_div;
+ break;
+
+ /* AHB Clock source : 6.5M XTAL */
+ case MISC2_CLKSEL_CLKSEL_XOH:
+ hclk = 6553600 / ahb_div;
+ break;
+
+ /* AHB Clock source : PLLH */
+ case MISC2_CLKSEL_CLKSEL_PLLH:
+ /* Get PLLH Frequency */
+ pllh_frq = ANA->REG9 & ANA_REG9_PLLHSEL;
+ switch (pllh_frq)
+ {
+ case ANA_REG9_PLLHSEL_X2:
+ hclk = 13107200 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X2_5:
+ hclk = 16384000 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X3:
+ hclk = 19660800 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X3_5:
+ hclk = 22937600 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X4:
+ hclk = 26214400 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X4_5:
+ hclk = 29491200 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X5:
+ hclk = 32768000 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X5_5:
+ hclk = 36044800 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X6:
+ hclk = 39321600 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X6_5:
+ hclk = 42598400 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X7:
+ hclk = 45875200 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLHSEL_X7_5:
+ hclk = 49152000 / ahb_div;
+ break;
+
+ default:
+ hclk = 0;
+ break;
+ }
+ break;
+
+ /* AHB Clock source : RTCCLK */
+ case MISC2_CLKSEL_CLKSEL_RTCCLK:
+ /* Get current RTC clock divider */
+ rtcclk_div = RTC->PSCA & RTC_PSCA_PSCA;
+ if (rtcclk_div == RTC_PSCA_PSCA_0)
+ {
+ hclk = 32768 / ahb_div;
+ }
+ else if (rtcclk_div == RTC_PSCA_PSCA_1)
+ {
+ hclk = 8192 / ahb_div;
+ }
+ else
+ {
+ hclk = 0;
+ }
+ break;
+
+ /* AHB Clock source : PLLL */
+ case MISC2_CLKSEL_CLKSEL_PLLL:
+ /* Get PLLL Frequency */
+ plll_frq = ANA->REG9 & ANA_REG9_PLLLSEL;
+ switch (plll_frq)
+ {
+ case ANA_REG9_PLLLSEL_26M:
+ hclk = 26214400 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_13M:
+ hclk = 13107200 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_6_5M:
+ hclk = 6553600 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_3_2M:
+ hclk = 3276800 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_1_6M:
+ hclk = 1638400 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_800K:
+ hclk = 819200 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_400K:
+ hclk = 409600 / ahb_div;
+ break;
+
+ case ANA_REG9_PLLLSEL_200K:
+ hclk = 204800 / ahb_div;
+ break;
+
+ default:
+ hclk = 0;
+ break;
+ }
+ break;
+
+ default:
+ hclk = 0;
+ break;
+ }
+
+ return (hclk);
+}
+
+/**
+ * @brief Returns the PLLL frequency
+ * @param None
+ * @retval PLLL frequency
+ */
+uint32_t CLK_GetPLLLFreq(void)
+{
+ uint32_t plll_frq;
+
+ if (!(ANA->REG3 & ANA_REG3_PLLLPDN))
+ return 0;
+ /* Get PLLL Frequency */
+ plll_frq = ANA->REG9 & ANA_REG9_PLLLSEL;
+ switch (plll_frq)
+ {
+ case ANA_REG9_PLLLSEL_26M:
+ plll_frq = 26214400;
+ break;
+
+ case ANA_REG9_PLLLSEL_13M:
+ plll_frq = 13107200;
+ break;
+
+ case ANA_REG9_PLLLSEL_6_5M:
+ plll_frq = 6553600;
+ break;
+
+ case ANA_REG9_PLLLSEL_3_2M:
+ plll_frq = 3276800;
+ break;
+
+ case ANA_REG9_PLLLSEL_1_6M:
+ plll_frq = 1638400;
+ break;
+
+ case ANA_REG9_PLLLSEL_800K:
+ plll_frq = 819200;
+ break;
+
+ case ANA_REG9_PLLLSEL_400K:
+ plll_frq = 409600;
+ break;
+
+ case ANA_REG9_PLLLSEL_200K:
+ plll_frq = 204800;
+ break;
+
+ default:
+ plll_frq = 0;
+ break;
+ }
+
+ return (plll_frq);
+}
+
+/**
+ * @brief Returns the PCLK frequency
+ * @param None
+ * @retval PCLK frequency
+ */
+uint32_t CLK_GetPCLKFreq(void)
+{
+ return ((CLK_GetHCLKFreq()) / ((MISC2->CLKDIVP & MISC2_CLKDIVP_CLKDIVP) + 1));
+}
+
+/**
+ * @brief Get the CLK_ClkInitStruct according to the internal
+ * Clock configuration registers.
+ *
+ * @param CLK_ClkInitStruct pointer to an CLK_ClkInitStruct structure that
+ * contains the current clock configuration.
+ *
+ * @retval None
+ */
+void CLK_GetClockConfig(CLK_InitTypeDef *CLK_ClkInitStruct)
+{
+ /* Set all possible values for the Clock type parameter --------------------*/
+ CLK_ClkInitStruct->ClockType = CLK_TYPE_ALL;
+
+ /* Get AHB clock source ----------------------------------------------------*/
+ CLK_ClkInitStruct->AHBSource = (uint32_t)(MISC2->CLKSEL & MISC2_CLKSEL_CLKSEL);
+ /* Get PLLL clock configration ---------------------------------------------*/
+ CLK_ClkInitStruct->PLLL.Source = (uint32_t)(PMU->CONTROL & PMU_CONTROL_PLLL_SEL);
+ CLK_ClkInitStruct->PLLL.Frequency = (uint32_t)(ANA->REG9 & ANA_REG9_PLLLSEL);
+ CLK_ClkInitStruct->PLLL.State = (uint32_t)(ANA->REG3 & ANA_REG3_PLLLPDN);
+ /* Get PLLH clock configuration --------------------------------------------*/
+ CLK_ClkInitStruct->PLLH.Source = (uint32_t)(PMU->CONTROL & PMU_CONTROL_PLLH_SEL);
+ CLK_ClkInitStruct->PLLH.Frequency = (uint32_t)(ANA->REG9 & ANA_REG9_PLLHSEL);
+ CLK_ClkInitStruct->PLLH.State = (uint32_t)(ANA->REG3 & ANA_REG3_PLLHPDN);
+ /* Get XTALH configuration -------------------------------------------------*/
+ CLK_ClkInitStruct->XTALH.State = (uint32_t)(ANA->REG3 & ANA_REG3_XOHPDN);
+ /* Get HCLK(Divider) configuration -----------------------------------------*/
+ CLK_ClkInitStruct->HCLK.Divider = (uint32_t)((MISC2->CLKDIVH & MISC2_CLKDIVH_CLKDIVH) + 1);
+ /* Get PCLK((Divider) configuration ----------------------------------------*/
+ CLK_ClkInitStruct->PCLK.Divider = (uint32_t)((MISC2->CLKDIVP & MISC2_CLKDIVP_CLKDIVP) + 1);
+}
+
+/**
+ * @brief Gets current external 6.5M crystal status.
+ *
+ * @param None
+ *
+ * @retval 6.5M crystal status
+ * 0: 6.5536M crystal is absent.
+ * 1: 6.5536M crystal is present.
+ */
+uint8_t CLK_GetXTALHStatus(void)
+{
+ if (PMU->STS & PMU_STS_EXIST_6M)
+ return (1);
+ else
+ return (0);
+}
+
+/**
+ * @brief Gets current external 32K crystal status.
+ *
+ * @param None
+ *
+ * @retval 32K crystal status
+ * 0: 32K crystal is absent
+ * 1: 32K crystal is present.
+ */
+uint8_t CLK_GetXTALLStatus(void)
+{
+ if (PMU->STS & PMU_STS_EXIST_32K)
+ return (1);
+ else
+ return (0);
+}
+
+/**
+ * @brief Gets PLL lock status.
+ * @param PLLStatus:
+ * CLK_STATUS_LOCKL
+ * CLK_STATUS_LOCKH
+ * @retval PLL lock status
+ * 0 PLL is not locked.
+ * 1 PLL is locked.
+ */
+uint8_t CLK_GetPLLLockStatus(uint32_t PLLStatus)
+{
+ /* Check parameters */
+ assert_parameters(IS_CLK_PLLLOCK(PLLStatus));
+
+ if (ANA->CMPOUT & PLLStatus)
+ return 1;
+ else
+ return 0;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_cmp.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_cmp.c
new file mode 100644
index 0000000000..2a61afb07a
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_cmp.c
@@ -0,0 +1,569 @@
+/**
+ ******************************************************************************
+ * @file lib_cmp.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief CMP library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_cmp.h"
+
+/* CMP1 reset values */
+#define CMP1_REG2_Msk (0x13UL)
+#define CMP1_REG3_Msk (0x02UL)
+#define CMP1_REG5_Msk (0x03UL)
+#define CMP1_REGF_Msk (0x01UL)
+#define CMP1_CTRL_Msk (0x300003UL)
+#define CMP1_INTSTS_Msk (0x04UL)
+#define CMP1_INTEN_Msk (0x04UL)
+#define CMP1_THR_Msk (0xFFFFUL)
+#define CMP1_CTL_Msk (0x300FFUL)
+/* CMP2 reset values */
+#define CMP2_REG2_Msk (0x2CUL)
+#define CMP2_REG3_Msk (0x04UL)
+#define CMP2_REG5_Msk (0x0CUL)
+#define CMP2_REGF_Msk (0x02UL)
+#define CMP2_CTRL_Msk (0xC0000CUL)
+#define CMP2_INTSTS_Msk (0x08UL)
+#define CMP2_INTEN_Msk (0x08UL)
+#define CMP2_THR_Msk (0xFFFF0000UL)
+#define CMP2_CTL_Msk (0x30FF00UL)
+
+/**
+ * @brief Initializes the Comparator peripheral registers to their default reset values.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ * @retval None
+ */
+void CMP_DeInit(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ ANA->REG2 &= ~CMP1_REG2_Msk;
+ ANA->REG3 &= ~CMP1_REG3_Msk;
+ ANA->REG5 &= ~CMP1_REG5_Msk;
+ ANA->REGF &= ~CMP1_REGF_Msk;
+ ANA->CTRL &= ~CMP1_CTRL_Msk;
+ ANA->INTSTS = CMP1_INTSTS_Msk;
+ ANA->INTEN &= ~CMP1_INTEN_Msk;
+ ANA->CMPTHR &= ~CMP1_THR_Msk;
+ ANA->CMPCTL &= ~CMP1_CTL_Msk;
+ ANA->CMPCNT1 = 0;
+ }
+ else
+ {
+ ANA->REG2 &= ~CMP2_REG2_Msk;
+ ANA->REG3 &= ~CMP2_REG3_Msk;
+ ANA->REG5 &= ~CMP2_REG5_Msk;
+ ANA->REGF &= ~CMP2_REGF_Msk;
+ ANA->CTRL &= ~CMP2_CTRL_Msk;
+ ANA->INTSTS = CMP2_INTSTS_Msk;
+ ANA->INTEN &= ~CMP2_INTEN_Msk;
+ ANA->CMPTHR &= ~CMP2_THR_Msk;
+ ANA->CMPCTL &= ~CMP2_CTL_Msk;
+ ANA->CMPCNT2 = 0;
+ }
+}
+
+/**
+ * @brief Initializes comparator.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ InitStruct: Comparator configuration
+ DebSel:
+ CMP_DEB_NONE
+ CMP_DEB_RTCCLK_2
+ CMP_DEB_RTCCLK_3
+ CMP_DEB_RTCCLK_4
+ SignalSourceSel:
+ CMP_SIGNALSRC_PPIN_TO_VREF
+ CMP_SIGNALSRC_PPIN_TO_BGPREF
+ CMP_SIGNALSRC_PBAT_TO_VREF
+ CMP_SIGNALSRC_PBAT_TO_BGPREF
+ CMP_SIGNALSRC_NPIN_TO_VREF
+ CMP_SIGNALSRC_NPIN_TO_BGPREF
+ CMP_SIGNALSRC_PPIN_TO_NPIN
+ CMP_SIGNALSRC_PBAT_TO_NPIN
+ BiasSel:
+ CMP_BIAS_20nA
+ CMP_BIAS_100nA
+ CMP_BIAS_500nA
+ * @retval None
+ */
+void CMP_Init(uint32_t CMPx, CMP_TypeDef *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+ assert_parameters(IS_CMP_DEB(InitStruct->DebSel));
+ assert_parameters(IS_CMP_SIGNALSRC(InitStruct->SignalSourceSel));
+ assert_parameters(IS_CMP_BIAS(InitStruct->BiasSel));
+
+ /* CMP1 Configure */
+ if (CMPx == CMP_1)
+ {
+ tmp = ANA->CTRL;
+ tmp &= ~ANA_CTRL_CMP1DEB;
+ tmp |= (InitStruct->DebSel << ANA_CTRL_CMP1DEB_Pos);
+ ANA->CTRL = tmp;
+
+ tmp = ANA->REG5;
+ tmp &= ~ANA_REG5_CMP1IT;
+ tmp |= (InitStruct->BiasSel << ANA_REG5_CMP1IT_Pos);
+ ANA->REG5 = tmp;
+
+ ANA->REG2 &= ~(ANA_REG2_CMP1SEL|ANA_REG2_CMP1REFSEL);
+ ANA->REGF &= ~ANA_REGF_BAT1DETEN;
+ switch(InitStruct->SignalSourceSel)
+ {
+ case CMP_SIGNALSRC_PPIN_TO_VREF:
+ break;
+ case CMP_SIGNALSRC_PPIN_TO_BGPREF: ANA->REG2 |= ANA_REG2_CMP1REFSEL;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_VREF: ANA->REGF |= ANA_REGF_BAT1DETEN;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_BGPREF: ANA->REG2 |= ANA_REG2_CMP1REFSEL;
+ ANA->REGF |= ANA_REGF_BAT1DETEN;
+ break;
+ case CMP_SIGNALSRC_NPIN_TO_VREF: ANA->REG2 |= ANA_REG2_CMP1SEL_1;
+ break;
+ case CMP_SIGNALSRC_NPIN_TO_BGPREF: ANA->REG2 |= (ANA_REG2_CMP1SEL_1|ANA_REG2_CMP1REFSEL);
+ break;
+ case CMP_SIGNALSRC_PPIN_TO_NPIN: ANA->REG2 |= ANA_REG2_CMP1SEL_3;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_NPIN: ANA->REG2 |= ANA_REG2_CMP1SEL_3;
+ ANA->REGF |= ANA_REGF_BAT1DETEN;
+ break;
+ default:
+ break;
+ }
+ }
+ /* CMP2 Configure */
+ else
+ {
+ tmp = ANA->CTRL;
+ tmp &= ~ANA_CTRL_CMP2DEB;
+ tmp |= (InitStruct->DebSel << ANA_CTRL_CMP2DEB_Pos);
+ ANA->CTRL = tmp;
+
+ tmp = ANA->REG5;
+ tmp &= ~ANA_REG5_CMP2IT;
+ tmp |= (InitStruct->BiasSel << ANA_REG5_CMP2IT_Pos);
+ ANA->REG5 = tmp;
+
+ ANA->REG2 &= ~(ANA_REG2_CMP2SEL|ANA_REG2_CMP2REFSEL);
+ ANA->REGF &= ~ANA_REGF_BATRTCDETEN;
+ switch(InitStruct->SignalSourceSel)
+ {
+ case CMP_SIGNALSRC_PPIN_TO_VREF:
+ break;
+ case CMP_SIGNALSRC_PPIN_TO_BGPREF: ANA->REG2 |= ANA_REG2_CMP2REFSEL;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_VREF: ANA->REGF |= ANA_REGF_BATRTCDETEN;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_BGPREF: ANA->REG2 |= ANA_REG2_CMP2REFSEL;
+ ANA->REGF |= ANA_REGF_BATRTCDETEN;
+ break;
+ case CMP_SIGNALSRC_NPIN_TO_VREF: ANA->REG2 |= ANA_REG2_CMP2SEL_1;
+ break;
+ case CMP_SIGNALSRC_NPIN_TO_BGPREF: ANA->REG2 |= (ANA_REG2_CMP2SEL_1|ANA_REG2_CMP2REFSEL);
+ break;
+ case CMP_SIGNALSRC_PPIN_TO_NPIN: ANA->REG2 |= ANA_REG2_CMP2SEL_3;
+ break;
+ case CMP_SIGNALSRC_PBAT_TO_NPIN: ANA->REG2 |= ANA_REG2_CMP2SEL_3;
+ ANA->REGF |= ANA_REGF_BATRTCDETEN;
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+/**
+ * @brief Fills each CMP_TypeDef member with its default value.
+ * @param InitStruct: pointer to an CMP_TypeDef structure which will be initialized.
+ * @retval None
+ */
+void CMP_StructInit(CMP_TypeDef *InitStruct)
+{
+ InitStruct->DebSel = CMP_DEB_NONE;
+ InitStruct->SignalSourceSel = CMP_SIGNALSRC_PPIN_TO_VREF;
+ InitStruct->BiasSel = CMP_BIAS_20nA;
+}
+
+/**
+ * @brief Initializes comparator Count.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ InitStruct: Comparator configuration
+ ModeSel:
+ CMP_MODE_OFF
+ CMP_MODE_RISING
+ CMP_MODE_FALLING
+ CMP_MODE_BOTH
+ CheckPeriod:
+ CMP_PERIOD_30US
+ CMP_PERIOD_7_8125MS
+ CMP_PERIOD_125MS
+ CMP_PERIOD_250MS
+ CMP_PERIOD_500MS
+ CheckNum:
+ CMP_CHKNUM_1~CMP_CHKNUM_16
+ * @retval None
+ */
+void CMP_CountInit(uint32_t CMPx, CMP_CountTypeDef *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+ assert_parameters(IS_CMP_MODE(InitStruct->ModeSel));
+ assert_parameters(IS_CMP_CHECKPERIOD(InitStruct->CheckPeriod));
+ assert_parameters(IS_CMP_CHKNUM(InitStruct->CheckNum));
+
+ /* CMP1 Configure */
+ if (CMPx == CMP_1)
+ {
+ /* Configure ModeSel */
+ tmp = ANA->CTRL;
+ tmp &= ~ANA_CTRL_CMP1SEL;
+ tmp |= (InitStruct->ModeSel << ANA_CTRL_CMP1SEL_Pos);
+ ANA->CTRL = tmp;
+
+ /* Configure CheckPeriod/CheckNum */
+ tmp = ANA->CMPCTL;
+ tmp &= ~(ANA_CMPCTL_CMP1_CHK_FRQ|ANA_CMPCTL_CMP1_CHK_NUM);
+ tmp |= ((InitStruct->CheckPeriod << ANA_CMPCTL_CMP1_CHK_FRQ_Pos) | \
+ (InitStruct->CheckNum << ANA_CMPCTL_CMP1_CHK_NUM_Pos));
+ ANA->CMPCTL = tmp;
+ }
+ /* CMP2 Configure */
+ else
+ {
+ /* Configure ModeSel */
+ tmp = ANA->CTRL;
+ tmp &= ~ANA_CTRL_CMP2SEL;
+ tmp |= (InitStruct->ModeSel << ANA_CTRL_CMP2SEL_Pos);
+ ANA->CTRL = tmp;
+
+ /* Configure CheckPeriod/CheckNum */
+ tmp = ANA->CMPCTL;
+ tmp &= ~(ANA_CMPCTL_CMP2_CHK_FRQ|ANA_CMPCTL_CMP2_CHK_NUM);
+ tmp |= ((InitStruct->CheckPeriod << ANA_CMPCTL_CMP2_CHK_FRQ_Pos) | \
+ (InitStruct->CheckNum << ANA_CMPCTL_CMP2_CHK_NUM_Pos));
+ ANA->CMPCTL = tmp;
+ }
+}
+
+/**
+ * @brief Fill each CMP_CountTypeDef member with its default value.
+ * @param InitStruct: pointer to an CMP_CountTypeDef structure which will be initialized.
+ * @retval None
+ */
+void CMP_CountStructInit(CMP_CountTypeDef *InitStruct)
+{
+ InitStruct->ModeSel = CMP_MODE_OFF;
+ InitStruct->CheckPeriod = CMP_PERIOD_30US;
+ InitStruct->CheckNum = CMP_CHKNUM_1;
+}
+
+/**
+ * @brief Initializes Comparator interrupt.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ InitStruct: Comparator configuration
+ INTNumSel:
+ CMP_INTNUM_EVERY
+ CMP_INTNUM_1
+ SubSel:
+ CMP_COUNT_NOSUB
+ CMP_COUNT_SUB
+ THRNum:0~65535
+ * @retval None
+ */
+void CMP_INTInit(uint32_t CMPx, CMP_INTTypeDef *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+ assert_parameters(IS_CMP_INTNUM(InitStruct->INTNumSel));
+ assert_parameters(IS_CMP_COUNT(InitStruct->SubSel));
+ assert_parameters(IS_CMP_THRNUM(InitStruct->THRNum));
+
+ /* CMP1 Configure */
+ if (CMPx == CMP_1)
+ {
+ /* Configure INTNumSel/SubSel */
+ tmp = ANA->CMPCTL;
+ tmp &= ~(ANA_CMPCTL_CMP1_THR_EN|ANA_CMPCTL_CMP1_INT_MASK_EN);
+ tmp |= ((InitStruct->SubSel << ANA_CMPCTL_CMP1_THR_EN_Pos) | \
+ (InitStruct->INTNumSel << ANA_CMPCTL_CMP1_INT_MASK_EN_Pos));
+ ANA->CMPCTL = tmp;
+
+ /* Configure THRNum */
+ tmp = ANA->CMPTHR;
+ tmp &= ~ANA_CMPTHR_CMP1_THR;
+ tmp |= (InitStruct->THRNum << ANA_CMPTHR_CMP1_THR_Pos);
+ ANA->CMPTHR = tmp;
+ }
+ /* CMP2 Configure */
+ else
+ {
+ /* Configure INTNumSel/SubSel */
+ tmp = ANA->CMPCTL;
+ tmp &= ~(ANA_CMPCTL_CMP2_THR_EN|ANA_CMPCTL_CMP2_INT_MASK_EN);
+ tmp |= ((InitStruct->SubSel << ANA_CMPCTL_CMP2_THR_EN_Pos) | \
+ (InitStruct->INTNumSel << ANA_CMPCTL_CMP2_INT_MASK_EN_Pos));
+ ANA->CMPCTL = tmp;
+
+ /* Configure THRNum */
+ tmp = ANA->CMPTHR;
+ tmp &= ~ANA_CMPTHR_CMP2_THR;
+ tmp |= (InitStruct->THRNum << ANA_CMPTHR_CMP2_THR_Pos);
+ ANA->CMPTHR = tmp;
+ }
+}
+
+/**
+ * @brief Fills each CMP_INTTypeDef member with its default value.
+ * @param InitStruct: pointer to an CMP_INTTypeDef structure which will be initialized.
+ * @retval None
+ */
+void CMP_INTStructInit(CMP_INTTypeDef *InitStruct)
+{
+ InitStruct->INTNumSel = CMP_INTNUM_EVERY;
+ InitStruct->SubSel = CMP_COUNT_NOSUB;
+ InitStruct->THRNum = 0;
+}
+
+/**
+ * @brief Initializes Comparator Output IO.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ InitStruct: Comparator configuration
+ DebSel:
+ CMP_OUTPUT_DEB
+ CMP_OUTPUT_NODEB
+ OutputSel:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void CMP_OutputInit(uint32_t CMPx, CMP_OutputTypeDef *InitStruct)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+ assert_parameters(IS_CMP_OUTPUTDEB(InitStruct->DebSel));
+ assert_parameters(IS_FUNCTIONAL_STATE(InitStruct->OutputSel));
+
+ /* CMP1 Configure */
+ if (CMPx == CMP_1)
+ {
+ ANA->CMPCTL &= ~ANA_CMPCTL_CMP1_IO_NODEB;
+ ANA->CMPCTL |= (InitStruct->DebSel << ANA_CMPCTL_CMP1_IO_NODEB_Pos);
+
+ GPIOAF->IOE_SEL &= ~GPIOAF_IOE_SEL_SEL7;
+ GPIOAF->IOE_SEL |= (InitStruct->OutputSel << GPIOAF_IOE_SEL_SEL7_Pos);
+ }
+ /* CMP2 Configure */
+ else
+ {
+ ANA->CMPCTL &= ~ANA_CMPCTL_CMP2_IO_NODEB;
+ ANA->CMPCTL |= (InitStruct->DebSel << ANA_CMPCTL_CMP2_IO_NODEB_Pos);
+
+ GPIOA->SEL &= ~GPIOA_SEL_SEL6;
+ GPIOA->SEL |= (InitStruct->OutputSel << GPIOA_SEL_SEL6_Pos);
+ }
+}
+
+/**
+ * @brief Fills each CMP_OutputTypeDef member with its default value.
+ * @param InitStruct: pointer to an CMP_OutputTypeDef structure which will be initialized.
+ * @retval None
+ */
+void CMP_OutputStructInit(CMP_OutputTypeDef *InitStruct)
+{
+ InitStruct->DebSel = CMP_OUTPUT_DEB;
+ InitStruct->OutputSel = DISABLE;
+}
+
+/**
+ * @brief Gets comparator count value.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ * @retval Comparator count value.
+ */
+uint32_t CMP_GetCNTValue(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ return ANA->CMPCNT1;
+ }
+ else
+ {
+ return ANA->CMPCNT2;
+ }
+}
+
+/**
+ * @brief Clears comparator counter value.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ * @retval None
+ */
+void CMP_ClearCNTValue(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ ANA->CMPCNT1 = 0;
+ }
+ else
+ {
+ ANA->CMPCNT2 = 0;
+ }
+}
+
+/**
+ * @brief Enables or disables Comparator.
+ * @param CMPx:
+ CMP_1
+ CMP_2
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void CMP_Cmd(uint32_t CMPx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (CMPx == CMP_1)
+ {
+ ANA->REG3 &= ~ANA_REG3_CMP1PDN;
+ ANA->REG3 |= (NewState << ANA_REG3_CMP1PDN_Pos);
+ }
+ else
+ {
+ ANA->REG3 &= ~ANA_REG3_CMP2PDN;
+ ANA->REG3 |= (NewState << ANA_REG3_CMP2PDN_Pos);
+ }
+}
+
+/**
+ * @brief Gets comparator output level
+ * @param None
+ * @retval Output of comparator
+ */
+uint8_t CMP_GetOutputValue(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ return ((ANA->CMPOUT & ANA_CMPOUT_CMP1) >> ANA_CMPOUT_CMP1_Pos);
+ }
+ else
+ {
+ return ((ANA->CMPOUT & ANA_CMPOUT_CMP2) >> ANA_CMPOUT_CMP2_Pos);
+ }
+}
+
+/**
+ * @brief Enables or disables Comparator interrupt.
+ * @param CMPx:
+ * CMP_1
+ * CMP_2
+ * NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void CMP_INTConfig(uint32_t CMPx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ ANA->INTEN &= ~ANA_INTEN_INTEN2;
+ ANA->INTEN |= (NewState<<ANA_INTEN_INTEN2_Pos);
+ }
+ else
+ {
+ ANA->INTEN &= ~ANA_INTEN_INTEN3;
+ ANA->INTEN |= (NewState<<ANA_INTEN_INTEN3_Pos);
+ }
+}
+
+/**
+ * @brief Gets comparator interrupt flag status.
+ * @param CMPx:
+ * CMP_1
+ * CMP_2
+ * @retval flag status
+ * 0: status not set
+ * 1: status set
+ */
+uint8_t CMP_GetINTStatus(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ return ((ANA->INTSTS & ANA_INTSTS_INTSTS2) >> ANA_INTSTS_INTSTS2_Pos);
+ }
+ else
+ {
+ return ((ANA->INTSTS & ANA_INTSTS_INTSTS3) >> ANA_INTSTS_INTSTS3_Pos);
+ }
+}
+
+/**
+ * @brief Clears comparator interrupt flag.
+ * @param CMPx:
+ * CMP_1
+ * CMP_2
+ * @retval None
+ */
+void CMP_ClearINTStatus(uint32_t CMPx)
+{
+ /* Check parameters */
+ assert_parameters(IS_CMP(CMPx));
+
+ if (CMPx == CMP_1)
+ {
+ ANA->INTSTS = ANA_INTSTS_INTSTS2;
+ }
+ else
+ {
+ ANA->INTSTS = ANA_INTSTS_INTSTS3;
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_crypt.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_crypt.c
new file mode 100644
index 0000000000..9c253482ae
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_crypt.c
@@ -0,0 +1,226 @@
+/**
+ ******************************************************************************
+ * @file lib_crypt.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief CRYPT library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_crypt.h"
+
+/**
+ * @brief Configures PTRA register, data in this address will be read out to do
+ * the CRYPT calculation
+ * @param AddrA: the SRAM address(Bit 15:0)
+ * @retval None
+ */
+void CRYPT_AddressAConfig(uint16_t AddrA)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_ADDR(AddrA));
+
+ CRYPT->PTRA = AddrA & CRYPT_PTRA_PTRA;
+}
+
+/**
+ * @brief Configures PTRB register, data in this address will be read out to do
+ * the CRYPT calculation
+ * @param AddrB: the SRAM address(Bit 15:0)
+ * @retval None
+ */
+void CRYPT_AddressBConfig(uint16_t AddrB)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_ADDR(AddrB));
+
+ CRYPT->PTRB = AddrB & CRYPT_PTRB_PTRB;
+}
+
+/**
+ * @brief Configures PTRO register, The CRYPT engine will write calculation
+ * result into this address
+ * @param AddrO: the SRAM address(Bit 15:0)
+ * @retval None
+ */
+void CRYPT_AddressOConfig(uint16_t AddrO)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_ADDR(AddrO));
+
+ CRYPT->PTRO = AddrO & CRYPT_PTRO_PTRO;
+}
+
+/**
+ * @brief Gets carry/borrow bit of add/sub operation.
+ * @param None
+ * @retval carry/borrow bit value
+ */
+uint8_t CRYPT_GetCarryBorrowBit(void)
+{
+ if (CRYPT->CARRY & CRYPT_CARRY_CARRY)
+ return (1);
+ else
+ return (0);
+}
+
+/**
+ * @brief Starts addition operation.
+ * @param Length:
+ * CRYPT_LENGTH_32
+ * CRYPT_LENGTH_64
+ * CRYPT_LENGTH_96
+ * CRYPT_LENGTH_128
+ * CRYPT_LENGTH_160
+ * CRYPT_LENGTH_192
+ * CRYPT_LENGTH_224
+ * CRYPT_LENGTH_256
+ * CRYPT_LENGTH_288
+ * CRYPT_LENGTH_320
+ * CRYPT_LENGTH_352
+ * CRYPT_LENGTH_384
+ * CRYPT_LENGTH_416
+ * CRYPT_LENGTH_448
+ * CRYPT_LENGTH_480
+ * CRYPT_LENGTH_512
+ * Nostop:
+ * CRYPT_STOPCPU
+ * CRYPT_NOSTOPCPU
+ * @retval None
+ */
+void CRYPT_StartAdd(uint32_t Length, uint32_t Nostop)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_LENGTH(Length));
+ assert_parameters(IS_CRYPT_NOSTOP(Nostop));
+
+ CRYPT->CTRL = (Nostop \
+ |Length \
+ |CRYPT_CTRL_MODE_ADD \
+ |CRYPT_CTRL_ACT);
+}
+
+/**
+ * @brief Starts multiplication operation.
+ * @param Length:
+ * CRYPT_LENGTH_32
+ * CRYPT_LENGTH_64
+ * CRYPT_LENGTH_96
+ * CRYPT_LENGTH_128
+ * CRYPT_LENGTH_160
+ * CRYPT_LENGTH_192
+ * CRYPT_LENGTH_224
+ * CRYPT_LENGTH_256
+ * CRYPT_LENGTH_288
+ * CRYPT_LENGTH_320
+ * CRYPT_LENGTH_352
+ * CRYPT_LENGTH_384
+ * CRYPT_LENGTH_416
+ * CRYPT_LENGTH_448
+ * CRYPT_LENGTH_480
+ * CRYPT_LENGTH_512
+ * Nostop:
+ * CRYPT_STOPCPU
+ * CRYPT_NOSTOPCPU
+ * @retval None
+ */
+void CRYPT_StartMultiply(uint32_t Length, uint32_t Nostop)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_LENGTH(Length));
+ assert_parameters(IS_CRYPT_NOSTOP(Nostop));
+
+ CRYPT->CTRL = (Nostop \
+ |Length \
+ |CRYPT_CTRL_MODE_MULTIPLY \
+ |CRYPT_CTRL_ACT);
+}
+
+/**
+ * @brief Starts subtraction operation.
+ * @param Length:
+ * CRYPT_LENGTH_32
+ * CRYPT_LENGTH_64
+ * CRYPT_LENGTH_96
+ * CRYPT_LENGTH_128
+ * CRYPT_LENGTH_160
+ * CRYPT_LENGTH_192
+ * CRYPT_LENGTH_224
+ * CRYPT_LENGTH_256
+ * CRYPT_LENGTH_288
+ * CRYPT_LENGTH_320
+ * CRYPT_LENGTH_352
+ * CRYPT_LENGTH_384
+ * CRYPT_LENGTH_416
+ * CRYPT_LENGTH_448
+ * CRYPT_LENGTH_480
+ * CRYPT_LENGTH_512
+ * Nostop:
+ * CRYPT_STOPCPU
+ * CRYPT_NOSTOPCPU
+ * @retval None
+ */
+void CRYPT_StartSub(uint32_t Length, uint32_t Nostop)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_LENGTH(Length));
+ assert_parameters(IS_CRYPT_NOSTOP(Nostop));
+
+ CRYPT->CTRL = (Nostop \
+ |Length \
+ |CRYPT_CTRL_MODE_SUB \
+ |CRYPT_CTRL_ACT);
+}
+
+/**
+ * @brief Starts rigth shift 1-bit operation.
+ * @param Length:
+ * CRYPT_LENGTH_32
+ * CRYPT_LENGTH_64
+ * CRYPT_LENGTH_96
+ * CRYPT_LENGTH_128
+ * CRYPT_LENGTH_160
+ * CRYPT_LENGTH_192
+ * CRYPT_LENGTH_224
+ * CRYPT_LENGTH_256
+ * CRYPT_LENGTH_288
+ * CRYPT_LENGTH_320
+ * CRYPT_LENGTH_352
+ * CRYPT_LENGTH_384
+ * CRYPT_LENGTH_416
+ * CRYPT_LENGTH_448
+ * CRYPT_LENGTH_480
+ * CRYPT_LENGTH_512
+ * Nostop:
+ * CRYPT_STOPCPU
+ * CRYPT_NOSTOPCPU
+ * @retval None
+ */
+void CRYPT_StartRShift1(uint32_t Length, uint32_t Nostop)
+{
+ /* Check parameters */
+ assert_parameters(IS_CRYPT_LENGTH(Length));
+ assert_parameters(IS_CRYPT_NOSTOP(Nostop));
+
+ CRYPT->CTRL = (Nostop \
+ |Length \
+ |CRYPT_CTRL_MODE_RSHIFT1 \
+ |CRYPT_CTRL_ACT);
+}
+
+/**
+ * @brief Waits until last operation to complete.
+ * @param None
+ * @retval None
+ */
+void CRYPT_WaitForLastOperation(void)
+{
+ while (CRYPT->CTRL & CRYPT_CTRL_ACT)
+ {
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_dma.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_dma.c
new file mode 100644
index 0000000000..1000b331e4
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_dma.c
@@ -0,0 +1,473 @@
+/**
+ ******************************************************************************
+ * @file lib_dma.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief DMA library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_dma.h"
+
+//registers default reset values
+#define DMA_CxCTL_RSTValue (0UL)
+#define DMA_CxSRC_RSTValue (0UL)
+#define DMA_CxDST_RSTValue (0UL)
+#define DMA_AESCTL_RSTValue (0UL)
+#define DMA_AESKEY_RSTValue (0UL)
+
+/**
+ * @brief Initializes the DMA channel peripheral registers to their default reset values.
+ * @param Channel: DMA_CHANNEL_0~DMA_CHANNEL_3
+ * @retval None
+ */
+void DMA_DeInit(uint32_t Channel)
+{
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+
+ /* channel x disable, clear stop */
+ addr = &DMA->C0CTL + Channel*4;
+ *addr &= ~(DMA_CCTL_EN | DMA_CCTL_STOP);
+
+ /* interrupt disable */
+ DMA->IE &= ~((1<<(Channel))\
+ |(1<<(Channel+4))\
+ |(1<<(Channel+8)));
+
+ /* interrupt state clear */
+ DMA->STS = (1<<(Channel+4))\
+ |(1<<(Channel+8))\
+ |(1<<(Channel+12));
+
+ /* DMA_CxCTL */
+ addr = &DMA->C0CTL + Channel*4;
+ *addr = DMA_CxCTL_RSTValue;
+
+ /* DMA_CxSRC */
+ addr = &DMA->C0SRC + Channel*4;
+ *addr = DMA_CxSRC_RSTValue;
+
+ /* DMA_CxDST */
+ addr = &DMA->C0DST + Channel*4;
+ *addr = DMA_CxDST_RSTValue;
+}
+/**
+ * @brief Fills each DMA_InitType member with its default value.
+ * @param InitStruct: pointer to an DMA_InitType structure which will be initialized.
+ * @retval None
+ */
+void DMA_StructInit(DMA_InitType *InitStruct)
+{
+ /*-------------- Reset DMA init structure parameters values ---------------*/
+ /* Initialize the DestAddr member */
+ InitStruct->DestAddr = 0;
+ /* Initialize the SrcAddr member */
+ InitStruct->SrcAddr = 0;
+ /* Initialize the FrameLen member */
+ InitStruct->FrameLen = 0;
+ /* Initialize the PackLen member */
+ InitStruct->PackLen = 0;
+ /* Initialize the ContMode member */
+ InitStruct->ContMode = DMA_CONTMODE_DISABLE;
+ /* Initialize the TransMode member */
+ InitStruct->TransMode = DMA_TRANSMODE_SINGLE;
+ /* Initialize the ReqSrc member */
+ InitStruct->ReqSrc = DMA_REQSRC_SOFT;
+ /* Initialize the DestAddrMode member */
+ InitStruct->DestAddrMode = DMA_DESTADDRMODE_FIX;
+ /* Initialize the SrcAddrMode member */
+ InitStruct->SrcAddrMode = DMA_SRCADDRMODE_FIX;
+ /* Initialize the TransSize member */
+ InitStruct->TransSize = DMA_TRANSSIZE_BYTE;
+}
+/**
+ * @brief Initializes DMA channel.
+ * @param InitStruct: DMA configuration.
+ DestAddr : destination address
+ SrcAddr : source address
+ FrameLen : Frame length (Ranges 0~255, actual length FrameLen+1)
+ PackLen : Package length (Ranges 0~255, actual length PackLen+1)
+ ContMode:
+ DMA_CONTMODE_ENABLE
+ DMA_CONTMODE_DISABLE
+ TransMode:
+ DMA_TRANSMODE_SINGLE
+ DMA_TRANSMODE_PACK
+ ReqSrc:
+ DMA_REQSRC_SOFT
+ DMA_REQSRC_ADC
+ DMA_REQSRC_UART0TX
+ DMA_REQSRC_UART0RX
+ DMA_REQSRC_UART1TX
+ DMA_REQSRC_UART1RX
+ DMA_REQSRC_UART2TX
+ DMA_REQSRC_UART2RX
+ DMA_REQSRC_UART3TX
+ DMA_REQSRC_UART3RX
+ DMA_REQSRC_UART4TX
+ DMA_REQSRC_UART4RX
+ DMA_REQSRC_UART5TX
+ DMA_REQSRC_UART5RX
+ DMA_REQSRC_ISO78160TX
+ DMA_REQSRC_ISO78160RX
+ DMA_REQSRC_ISO78161TX
+ DMA_REQSRC_ISO78161RX
+ DMA_REQSRC_TIMER0
+ DMA_REQSRC_TIMER1
+ DMA_REQSRC_TIMER2
+ DMA_REQSRC_TIMER3
+ DMA_REQSRC_SPI1TX
+ DMA_REQSRC_SPI1RX
+ DMA_REQSRC_U32K0
+ DMA_REQSRC_U32K1
+ DMA_REQSRC_CMP1
+ DMA_REQSRC_CMP2
+ DMA_REQSRC_SPI2TX
+ DMA_REQSRC_SPI2RX
+ DMA_REQSRC_SPI3TX
+ DMA_REQSRC_SPI3RX
+ DestAddrMode:
+ DMA_DESTADDRMODE_FIX
+ DMA_DESTADDRMODE_PEND
+ DMA_DESTADDRMODE_FEND
+ SrcAddrMode:
+ DMA_SRCADDRMODE_FIX
+ DMA_SRCADDRMODE_PEND
+ DMA_SRCADDRMODE_FEND
+ TransSize:
+ DMA_TRANSSIZE_BYTE
+ DMA_TRANSSIZE_HWORD
+ DMA_TRANSSIZE_WORD
+ Channel:
+ DMA_CHANNEL_0
+ DMA_CHANNEL_1
+ DMA_CHANNEL_2
+ DMA_CHANNEL_3
+ * @retval None
+ */
+void DMA_Init(DMA_InitType *InitStruct, uint32_t Channel)
+{
+ uint32_t tmp;
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+ assert_parameters(IS_DMA_CONTMOD(InitStruct->ContMode));
+ assert_parameters(IS_DMA_TRANSMOD(InitStruct->TransMode));
+ assert_parameters(IS_DMA_REQSRC(InitStruct->ReqSrc));
+ assert_parameters(IS_DMA_DESTADDRMOD(InitStruct->DestAddrMode));
+ assert_parameters(IS_DMA_SRCADDRMOD(InitStruct->SrcAddrMode));
+ assert_parameters(IS_DMA_TRANSSIZE(InitStruct->TransSize));
+
+ if (InitStruct->TransSize == DMA_TRANSSIZE_HWORD)
+ {
+ assert_parameters(IS_DMA_ALIGNEDADDR_HWORD(InitStruct->SrcAddr));
+ assert_parameters(IS_DMA_ALIGNEDADDR_HWORD(InitStruct->DestAddr));
+ }
+ if (InitStruct->TransSize == DMA_TRANSSIZE_WORD)
+ {
+ assert_parameters(IS_DMA_ALIGNEDADDR_WORD(InitStruct->SrcAddr));
+ assert_parameters(IS_DMA_ALIGNEDADDR_WORD(InitStruct->DestAddr));
+ }
+
+ addr = &DMA->C0DST + Channel*4;
+ *addr = InitStruct->DestAddr;
+
+ addr = &DMA->C0SRC + Channel*4;
+ *addr = InitStruct->SrcAddr;
+
+ addr = &DMA->C0CTL + Channel*4;
+
+ tmp = *addr;
+ tmp &= ~(DMA_CCTL_FLEN\
+ |DMA_CCTL_PLEN\
+ |DMA_CCTL_CONT\
+ |DMA_CCTL_TMODE\
+ |DMA_CCTL_DMASEL\
+ |DMA_CCTL_DMODE\
+ |DMA_CCTL_SMODE\
+ |DMA_CCTL_SIZE);
+ tmp |= ((InitStruct->FrameLen<<DMA_CCTL_FLEN_Pos)\
+ |(InitStruct->PackLen<<DMA_CCTL_PLEN_Pos)\
+ |(InitStruct->ContMode)\
+ |(InitStruct->TransMode)\
+ |(InitStruct->ReqSrc)\
+ |(InitStruct->DestAddrMode)\
+ |(InitStruct->SrcAddrMode)\
+ |(InitStruct->TransSize));
+ *addr = tmp;
+}
+
+/**
+ * @brief Initializes the DMA AES channel3 registers to their default reset values.
+ * @param None
+ * @retval None
+ */
+void DMA_ASEDeInit(void)
+{
+ DMA->AESCTL = DMA_AESCTL_RSTValue;
+ DMA->AESKEY[0] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[1] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[2] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[3] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[4] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[5] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[6] = DMA_AESKEY_RSTValue;
+ DMA->AESKEY[7] = DMA_AESKEY_RSTValue;
+}
+
+/**
+ * @brief Initializes AES.
+ * @param InitStruct: AES configuration.
+ Mode:
+ DMA_AESMODE_128
+ DMA_AESMODE_192
+ DMA_AESMODE_256
+ Direction:
+ DMA_AESDIRECTION_ENCODE
+ DMA_AESDIRECTION_DECODE
+ KeyStr: the pointer to DMA_AESKEYx register
+ * @retval None
+ */
+void DMA_AESInit(DMA_AESInitType *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_AESMOD(InitStruct->Mode));
+ assert_parameters(IS_DMA_AESDIR(InitStruct->Direction));
+
+ tmp = DMA->AESCTL;
+ tmp &= ~(DMA_AESCTL_MODE\
+ |DMA_AESCTL_ENC);
+ tmp |= (InitStruct->Mode\
+ |InitStruct->Direction);
+ DMA->AESCTL = tmp;
+ DMA->AESKEY[0] = InitStruct->KeyStr[0];
+ DMA->AESKEY[1] = InitStruct->KeyStr[1];
+ DMA->AESKEY[2] = InitStruct->KeyStr[2];
+ DMA->AESKEY[3] = InitStruct->KeyStr[3];
+
+ if ((InitStruct->Mode == DMA_AESMODE_192) ||\
+ (InitStruct->Mode == DMA_AESMODE_256))
+ {
+ DMA->AESKEY[4] = InitStruct->KeyStr[4];
+ DMA->AESKEY[5] = InitStruct->KeyStr[5];
+ }
+ if (InitStruct->Mode == DMA_AESMODE_256)
+ {
+ DMA->AESKEY[6] = InitStruct->KeyStr[6];
+ DMA->AESKEY[7] = InitStruct->KeyStr[7];
+ }
+}
+
+/**
+ * @brief Enables or disables DMA interrupt.
+ * @param INTMask: can use the '|' operator
+ DMA_INT_C3DA
+ DMA_INT_C2DA
+ DMA_INT_C1DA
+ DMA_INT_C0DA
+ DMA_INT_C3FE
+ DMA_INT_C2FE
+ DMA_INT_C1FE
+ DMA_INT_C0FE
+ DMA_INT_C3PE
+ DMA_INT_C2PE
+ DMA_INT_C1PE
+ DMA_INT_C0PE
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void DMA_INTConfig(uint32_t INTMask, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_DMA_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ DMA->IE |= INTMask;
+ else
+ DMA->IE &= ~INTMask;
+}
+
+/**
+ * @brief Gets DMA interrupt status.
+ * @param INTMask:
+ DMA_INTSTS_C3DA
+ DMA_INTSTS_C2DA
+ DMA_INTSTS_C1DA
+ DMA_INTSTS_C0DA
+ DMA_INTSTS_C3FE
+ DMA_INTSTS_C2FE
+ DMA_INTSTS_C1FE
+ DMA_INTSTS_C0FE
+ DMA_INTSTS_C3PE
+ DMA_INTSTS_C2PE
+ DMA_INTSTS_C1PE
+ DMA_INTSTS_C0PE
+ DMA_INTSTS_C3BUSY
+ DMA_INTSTS_C2BUSY
+ DMA_INTSTS_C1BUSY
+ DMA_INTSTS_C0BUSY
+ * @retval interrupt status.
+ */
+uint8_t DMA_GetINTStatus(uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_DMA_INTFLAGR(INTMask));
+
+ if (DMA->STS&INTMask)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears DMA interrupt status.
+ * @param INTMask: can use the '|' operator
+ DMA_INTSTS_C3DA
+ DMA_INTSTS_C2DA
+ DMA_INTSTS_C1DA
+ DMA_INTSTS_C0DA
+ DMA_INTSTS_C3FE
+ DMA_INTSTS_C2FE
+ DMA_INTSTS_C1FE
+ DMA_INTSTS_C0FE
+ DMA_INTSTS_C3PE
+ DMA_INTSTS_C2PE
+ DMA_INTSTS_C1PE
+ DMA_INTSTS_C0PE
+ * @retval None
+ */
+void DMA_ClearINTStatus(uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_DMA_INTFLAGC(INTMask));
+
+ DMA->STS = INTMask;
+}
+
+/**
+ * @brief Enables or disables DMA channel.
+ * @param Channel:
+ DMA_CHANNEL_0
+ DMA_CHANNEL_1
+ DMA_CHANNEL_2
+ DMA_CHANNEL_3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void DMA_Cmd(uint32_t Channel, uint32_t NewState)
+{
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ addr = &DMA->C0CTL + Channel*4;
+
+ if (NewState == ENABLE)
+ *addr |= DMA_CCTL_EN;
+ else
+ *addr &= ~DMA_CCTL_EN;
+}
+
+/**
+ * @brief Enables or disables AES encrypt/decrypt function of DMA channel3.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void DMA_AESCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ DMA->C3CTL |= DMA_CCTL_AESEN;
+ else
+ DMA->C3CTL &= ~DMA_CCTL_AESEN;
+}
+
+/**
+ * @brief Stops DMA transmit.
+ * @param Channel:
+ DMA_CHANNEL_0
+ DMA_CHANNEL_1
+ DMA_CHANNEL_2
+ DMA_CHANNEL_3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void DMA_StopTransmit(uint32_t Channel, uint32_t NewState)
+{
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ addr = &DMA->C0CTL + Channel*4;
+
+ if (NewState == ENABLE)
+ *addr |= DMA_CCTL_STOP;
+ else
+ *addr &= ~DMA_CCTL_STOP;
+}
+
+/**
+ * @brief Gets current frame transferred length.
+ * @param Channel:
+ DMA_CHANNEL_0
+ DMA_CHANNEL_1
+ DMA_CHANNEL_2
+ DMA_CHANNEL_3
+ * @retval Current frame transferred length.
+ */
+uint8_t DMA_GetFrameLenTransferred(uint32_t Channel)
+{
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+
+ addr = &DMA->C0LEN + Channel*4;
+ return ((*addr&0xFF00)>>8);
+}
+
+/**
+ * @brief Gets current package transferred length.
+ * @param Channel:
+ DMA_CHANNEL_0
+ DMA_CHANNEL_1
+ DMA_CHANNEL_2
+ DMA_CHANNEL_3
+ * @retval Current package transferred length.
+ */
+uint8_t DMA_GetPackLenTransferred(uint32_t Channel)
+{
+ __IO uint32_t *addr;
+
+ /* Check parameters */
+ assert_parameters(IS_DMA_CHANNEL(Channel));
+
+ addr = &DMA->C0LEN + Channel*4;
+ return (*addr&0xFF);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_flash.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_flash.c
new file mode 100644
index 0000000000..1bea70d7b9
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_flash.c
@@ -0,0 +1,441 @@
+/**
+ ******************************************************************************
+ * @file lib_flash.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief FLASH library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_flash.h"
+#include "lib_clk.h"
+
+/* FLASH Keys */
+#define FLASH_PASS_KEY 0x55AAAA55
+#define FLASH_SERASE_KEY 0xAA5555AA
+#define FLASH_CERASE_KEY 0xAA5555AA
+#define FLASH_DSTB_KEY 0xAA5555AA
+#define FLASH_ICE_KEY 0xAA5555AA
+
+#define FLASH_MODE_MASK 0x1F3
+
+/**
+ * @brief Initializes FLASH mode.
+ * @param CSMode:
+ FLASH_CSMODE_DISABLE
+ FLASH_CSMODE_ALWAYSON
+ FLASH_CSMODE_TMR2OF
+ FLASH_CSMODE_RTC
+ * @retval None
+ */
+void FLASH_Init(uint32_t CSMode)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_CSMODE(CSMode));
+
+ tmp = FLASH->CTRL;
+ tmp &= ~FLASH_MODE_MASK;
+ tmp |= CSMode;
+ FLASH->CTRL = tmp;
+}
+
+/**
+ * @brief Enables or disables FLASH interrupt.
+ * @param IntMask:
+ FLASH_INT_CS
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void FLASH_INTConfig(uint32_t IntMask, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_INT(IntMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = FLASH->CTRL;
+ tmp &= ~IntMask;
+ if (NewState == ENABLE)
+ {
+ tmp |= IntMask;
+ }
+ FLASH->CTRL = tmp;
+}
+
+/**
+ * @brief Initializes FLASH 1USCYCLE.
+ * @param None
+ * @retval None
+ */
+void FLASH_CycleInit(void)
+{
+ uint32_t hclk;
+
+ hclk = CLK_GetHCLKFreq();
+
+ if (hclk > 1000000)
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ else
+ MISC2->FLASHWC = 0;
+}
+
+/**
+ * @brief Erases a specified FLASH sector.
+ * @param SectorAddr: Erase start address.
+ * @retval None
+ */
+void FLASH_SectorErase(uint32_t SectorAddr)
+{
+ /* Check parameters */
+ assert_parameters(IS_FLASH_ADDRESS(SectorAddr));
+
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ FLASH->PGADDR = SectorAddr;
+ FLASH->SERASE = FLASH_SERASE_KEY;
+ while (FLASH->SERASE != 0);
+
+ /* Lock flash */
+ FLASH->PASS = 0;
+}
+
+/**
+ * @brief Erases chip.
+ * @param None.
+ * @retval None
+ */
+void FLASH_ChipErase(void)
+{
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ FLASH->PGADDR = 0;
+ FLASH->CERASE = FLASH_CERASE_KEY;
+ while (FLASH->CERASE != 0);
+
+ /* Lock flash */
+ FLASH->PASS = 0;
+}
+
+/**
+ * @brief Programs n word at a specified start address.
+ * @param Addr: program start address
+ WordBuffer: word's buffer pointer to write
+ Length: The length of WordBuffer
+ * @retval None
+ */
+void FLASH_ProgramWord(uint32_t Addr, uint32_t *WordBuffer, uint32_t Length)
+{
+ uint32_t i;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_ADRRW(Addr));
+
+ FLASH->PGADDR = Addr;
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ for (i=0; i<Length; i++)
+ {
+ FLASH->PGDATA = *(WordBuffer++);
+ while (FLASH->STS != 1);
+ }
+
+ /* Lock flash */
+ FLASH->PASS = 0;
+}
+
+/**
+ * @brief Programs n half-word at a specified start address.
+ * @param Addr: program start address
+ HWordBuffer: half-word's buffer pointer to write
+ Length: The length of HWordBuffer
+ * @retval None
+ */
+void FLASH_ProgramHWord(uint32_t Addr, uint16_t *HWordBuffer, uint32_t Length)
+{
+ uint32_t i;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_ADRRHW(Addr));
+
+ FLASH->PGADDR = Addr;
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ for (i=0; i<Length; i++)
+ {
+ if (((Addr + 2*i)&0x3) == 0)
+ *((__IO uint16_t*)(&FLASH->PGDATA)) = *(HWordBuffer++);
+ else
+ *((__IO uint16_t*)(&FLASH->PGDATA ) + 1) = *(HWordBuffer++);
+ while (FLASH->STS != 1);
+ }
+
+ /* Lock flash */
+ FLASH->PASS = 0;
+}
+
+/**
+ * @brief Programs n byte at a specified start address.
+ * @param Addr: program start address
+ ByteBuffer: byte's buffer pointer to write
+ Length: The length of ByteBuffer
+ * @retval None
+ */
+void FLASH_ProgramByte(uint32_t Addr, uint8_t *ByteBuffer, uint32_t Length)
+{
+ uint32_t i;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_ADDRESS(Addr));
+
+ FLASH->PGADDR = Addr;
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ for (i=0; i<Length; i++)
+ {
+ if (((Addr + i)&0x3) == 0)
+ *((__IO uint8_t*)(&FLASH->PGDATA)) = *(ByteBuffer++);
+ else if (((Addr + i)&0x3) == 1)
+ *((__IO uint8_t*)(&FLASH->PGDATA) + 1) = *(ByteBuffer++);
+ else if (((Addr + i)&0x3) == 2)
+ *((__IO uint8_t*)(&FLASH->PGDATA) + 2) = *(ByteBuffer++);
+ else
+ *((__IO uint8_t*)(&FLASH->PGDATA) + 3) = *(ByteBuffer++);
+ while (FLASH->STS != 1);
+ }
+
+ /* Lock flash */
+ FLASH->PASS = 0;
+}
+
+/**
+ * @brief Enables FLASH read protection.
+ * @param Block: can use the '|' operator.
+ FLASH_BLOCK_0 ~ FLASH_BLOCK_31 or FLASH_BLOCK_ALL
+ * @retval None
+ */
+void FLASH_SetReadProtection(uint32_t Block)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_RWBLOCK(Block));
+
+ tmp = *(volatile unsigned int *)(0x0007FC00);
+ tmp &= ~Block;
+
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ FLASH->PGADDR = 0x7FC00;
+ FLASH->PGDATA = tmp;
+ while (FLASH->STS != 1);
+ /* Lock flash */
+ FLASH->PASS = 0;
+
+ tmp = *(volatile unsigned int *)(0x0007FC00);
+}
+
+/**
+ * @brief Enables or disables FLASH write protection.
+ * @param Block: can use the '|' operator.
+ FLASH_BLOCK_0 ~ FLASH_BLOCK_31 or FLASH_BLOCK_ALL
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void FLASH_WriteProtection(uint32_t Block, uint32_t NewState)
+{
+ uint32_t wrprot;
+
+ /* Check parameters */
+ assert_parameters(IS_FLASH_RWBLOCK(Block));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ wrprot = FLASH->WRPROT;
+
+ if (NewState == ENABLE)
+ {
+ wrprot |= Block;
+ }
+ else
+ {
+ wrprot &= ~Block;
+ }
+ FLASH->WRPROT = wrprot;
+}
+
+/**
+ * @brief Enables or disables ICE protection.
+ * @param NewState:
+ ENABLE(ICE protection is successful when 0x7FC08 is 0xFFFFFFFF )
+ DISABLE
+ * @retval None.
+ */
+void FLASH_ICEProtection(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ /* Unlock flash */
+ FLASH->PASS = FLASH_PASS_KEY;
+
+ FLASH->PGADDR = 0x7FC08;
+ FLASH->PGDATA = 0x0A;
+ while (FLASH->STS != 1);
+ /* Lock flash */
+ FLASH->PASS = 0;
+ }
+ else
+ {
+ FLASH_SectorErase(0x7FFFF);
+ CORTEX_NVIC_SystemReset();
+ }
+}
+
+/**
+ * @brief Gets read/write/erase protection status.
+ * @param Block:
+ FLASH_BLOCK_0 ~ FLASH_BLOCK_31
+ Operation:
+ FLASH_READ
+ FLASH_WRITE
+ * @retval
+ When Operation is FLASH_READ:
+ 1: Read protection enabled.
+ 0: Read protection disabled.
+ When Operation is FLASH_WRITE:
+ 1: Write/erase protection enabled.
+ 0: Write/erase protection disabled.
+ */
+uint8_t FLASH_GetProtectionStatus(uint32_t Block, uint32_t Operation)
+{
+ /* Check parameters */
+ assert_parameters(IS_FLASH_BLOCK(Block));
+ assert_parameters(IS_FLASH_OPERATION(Operation));
+
+ if (Operation == FLASH_READ)
+ {
+ if (FLASH->RDPROT & Block)
+ return 1;
+ else
+ return 0;
+ }
+ else
+ {
+ if (FLASH->WRPROT & Block)
+ return 1;
+ else
+ return 0;
+ }
+}
+
+/**
+ * @brief Gets read/write/erase protection status.
+ * @param Operation:
+ FLASH_READ
+ FLASH_WRITE
+ * @retval Read or write/erase protection status.
+ */
+uint32_t FLASH_GetAllProtectionStatus(uint32_t Operation)
+{
+ if (Operation == FLASH_READ)
+ {
+ return FLASH->RDPROT;
+ }
+ else
+ {
+ return FLASH->WRPROT;
+ }
+}
+
+/**
+ * @brief Sets checksum range.
+ * @param AddrStart: checksum start address
+ AddrEnd: checksum end address
+ * @retval None
+ */
+void FLASH_SetCheckSumRange(uint32_t AddrStart, uint32_t AddrEnd)
+{
+ /* Check parameters */
+ assert_parameters(IS_FLASH_CHECKSUMADDR(AddrStart,AddrEnd));
+
+ FLASH->CSSADDR = AddrStart;
+ FLASH->CSEADDR = AddrEnd;
+}
+
+/**
+ * @brief Sets checksum compare value.
+ * @param Checksum: checksum compare value
+ * @retval None
+ */
+void FLASH_SetCheckSumCompValue(uint32_t Checksum)
+{
+ FLASH->CSCVALUE = Checksum;
+}
+
+/**
+ * @brief Gets FLASH checksum value.
+ * @param None
+ * @retval Checksum
+ */
+uint32_t FLASH_GetCheckSum(void)
+{
+ return FLASH->CSVALUE;
+}
+
+/**
+ * @brief Gets FLASH interrupt status.
+ * @param IntMask:
+ FLASH_INT_CS
+ * @retval 1: interrupt status set
+ 0: interrupt status reset
+ */
+uint8_t FLASH_GetINTStatus(uint32_t IntMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_FLASH_INT(IntMask));
+
+ if (FLASH->INTSTS & FLASH_INTSTS_CSERR)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears FLASH interrupt status.
+ * @param IntMask:
+ FLASH_INT_CS
+ * @retval None
+ */
+void FLASH_ClearINTStatus(uint32_t IntMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_FLASH_INT(IntMask));
+
+ if (IntMask == FLASH_INT_CS)
+ {
+ FLASH->INTSTS = FLASH_INTSTS_CSERR;
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_gpio.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_gpio.c
new file mode 100644
index 0000000000..5ff418b647
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_gpio.c
@@ -0,0 +1,486 @@
+/**
+ ******************************************************************************
+ * @file lib_gpio.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief GPIO library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_gpio.h"
+
+
+/**
+ * @brief Initializes GPIO.
+ * @param GPIOx: GPIOB~GPIOF
+ InitStruct:GPIO configuration.
+ GPIO_Pin: can use the '|' operator
+ GPIO_Pin_0 ~ GPIO_Pin_15 or GPIO_Pin_All
+ GPIO_Mode:
+ GPIO_MODE_INPUT
+ GPIO_MODE_OUTPUT_CMOS
+ GPIO_MODE_OUTPUT_OD
+ GPIO_MODE_INOUT_OD
+ GPIO_MODE_INOUT_CMOS
+ GPIO_MODE_FORBIDDEN
+ * @retval None
+ */
+void GPIOBToF_Init(GPIO_Type *GPIOx, GPIO_InitType *InitStruct)
+{
+ uint32_t tmp_reg1, tmp_reg2;
+
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PIN(InitStruct->GPIO_Pin));
+ assert_parameters(IS_GPIO_MODE(InitStruct->GPIO_Mode));
+
+ /* Configure ATT */
+ if (InitStruct->GPIO_Mode & 0x2U)
+ {
+ tmp_reg1 = GPIOx->ATT;
+ tmp_reg1 &= ~InitStruct->GPIO_Pin;
+ if (InitStruct->GPIO_Mode & 0x1U)
+ {
+ tmp_reg1 |= InitStruct->GPIO_Pin;
+ }
+ GPIOx->ATT = tmp_reg1;
+ }
+
+ /* Configure output/input mode */
+ tmp_reg1 = GPIOx->OEN;
+ tmp_reg1 &= ~InitStruct->GPIO_Pin;
+ tmp_reg2 = GPIOx->IE;
+ tmp_reg2 &= ~InitStruct->GPIO_Pin;
+ if (InitStruct->GPIO_Mode & 0x8U)
+ {
+ tmp_reg2 |= InitStruct->GPIO_Pin;
+ }
+ if (InitStruct->GPIO_Mode & 0x4U)
+ {
+ tmp_reg1 |= InitStruct->GPIO_Pin;
+ }
+ GPIOx->OEN = tmp_reg1;
+ GPIOx->IE = tmp_reg2;
+}
+
+/**
+ * @brief Initializes GPIOA.
+ * @param GPIOx: GPIOA
+ InitStruct:GPIO configuration.
+ GPIO_Pin: can use the '|' operator
+ GPIO_Pin_0 ~ GPIO_Pin_15 or GPIO_Pin_All
+ GPIO_Mode:
+ GPIO_MODE_INPUT
+ GPIO_MODE_OUTPUT_CMOS
+ GPIO_MODE_OUTPUT_OD
+ GPIO_MODE_INOUT_OD
+ GPIO_MODE_INOUT_CMOS
+ GPIO_MODE_FORBIDDEN
+ * @retval None
+ */
+void GPIOA_Init(GPIOA_Type *GPIOx, GPIO_InitType *InitStruct)
+{
+ uint32_t tmp_reg1, tmp_reg2;
+
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PIN(InitStruct->GPIO_Pin));
+ assert_parameters(IS_GPIO_MODE(InitStruct->GPIO_Mode));
+
+ /* Configure ATT */
+ if (InitStruct->GPIO_Mode & 0x2U)
+ {
+ tmp_reg1 = GPIOx->ATT;
+ tmp_reg1 &= ~InitStruct->GPIO_Pin;
+ if (InitStruct->GPIO_Mode & 0x1U)
+ {
+ tmp_reg1 |= InitStruct->GPIO_Pin;
+ }
+ GPIOx->ATT = tmp_reg1;
+ }
+
+ /* Configure output/input mode */
+ tmp_reg1 = GPIOx->OEN;
+ tmp_reg1 &= ~InitStruct->GPIO_Pin;
+ tmp_reg2 = GPIOx->IE;
+ tmp_reg2 &= ~InitStruct->GPIO_Pin;
+ if (InitStruct->GPIO_Mode & 0x8U)
+ {
+ tmp_reg2 |= InitStruct->GPIO_Pin;
+ }
+ if (InitStruct->GPIO_Mode & 0x4U)
+ {
+ tmp_reg1 |= InitStruct->GPIO_Pin;
+ }
+ GPIOx->OEN = tmp_reg1;
+ GPIOx->IE = tmp_reg2;
+}
+
+/**
+ * @brief Reads input data register bit.
+ * @param GPIOx: GPIOB~GPIOF
+ GPIO_Pin:GPIO_Pin_0~GPIO_Pin_15.
+ * @retval input pin value.
+ */
+uint8_t GPIOBToF_ReadInputDataBit(GPIO_Type *GPIOx, uint16_t GPIO_Pin)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PINR(GPIO_Pin));
+
+ if (GPIOx->STS & GPIO_Pin)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Reads input data register bit.
+ * @param GPIOx: GPIOA
+ GPIO_Pin:GPIO_Pin_0~GPIO_Pin_15.
+ * @retval input pin value.
+ */
+uint8_t GPIOA_ReadInputDataBit(GPIOA_Type *GPIOx, uint16_t GPIO_Pin)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PINR(GPIO_Pin));
+
+ if (GPIOx->STS & GPIO_Pin)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Reads input data register.
+ * @param GPIOx: GPIOB~GPIOF
+ * @retval input port value.
+ */
+uint16_t GPIOBToF_ReadInputData(GPIO_Type* GPIOx)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+
+ return GPIOx->STS;
+}
+
+/**
+ * @brief Reads input data register.
+ * @param GPIOx: GPIOA
+ * @retval input port value.
+ */
+uint16_t GPIOA_ReadInputData(GPIOA_Type* GPIOx)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+
+ return GPIOx->STS;
+}
+
+/**
+ * @brief Reads output data register bit.
+ * @param GPIOx: GPIOB~GPIOF
+ GPIO_Pin:GPIO_Pin_0~GPIO_Pin_15
+ * @retval output pin value.
+ */
+uint8_t GPIOBToF_ReadOutputDataBit(GPIO_Type* GPIOx, uint16_t GPIO_Pin)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PINR(GPIO_Pin));
+
+ if (GPIOx->DAT & GPIO_Pin)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Reads output data register bit.
+ * @param GPIOx: GPIOA
+ GPIO_Pin:GPIO_Pin_0~GPIO_Pin_15
+ * @retval output pin value.
+ */
+uint8_t GPIOA_ReadOutputDataBit(GPIOA_Type* GPIOx, uint16_t GPIO_Pin)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PINR(GPIO_Pin));
+
+ if (GPIOx->DAT & GPIO_Pin)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Reads output data register.
+ * @param GPIOx: GPIOB~GPIOF
+ * @retval Output port value.
+ */
+uint16_t GPIOBToF_ReadOutputData(GPIO_Type* GPIOx)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+
+ return GPIOx->DAT;
+}
+
+/**
+ * @brief Reads output data register.
+ * @param GPIOx: GPIOA
+ * @retval Output port value.
+ */
+uint16_t GPIOA_ReadOutputData(GPIOA_Type* GPIOx)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+
+ return GPIOx->DAT;
+}
+
+/**
+ * @brief Writes output data register bit.
+ * @param DATx: GPIO_A~GPIO_F
+ PinNum: 0~15
+ val:value write to register bit.
+ * @retval None.
+ */
+void GPIO_WriteBit(GPIO_DATInitType* DATx, uint8_t PinNum, uint8_t val)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_DAT(DATx));
+ assert_parameters(IS_GPIO_PINNUM(PinNum));
+ assert_parameters(IS_GPIO_BITVAL(val));
+
+ DATx->DATBitBand[PinNum] = val;
+}
+/**
+ * @brief Write output data register bit.
+ * @param GPIOx: GPIOB~GPIOF
+ GPIO_Pin: can use the ‘|’ operator
+ GPIO_Pin_0~GPIO_Pin_15 or GPIO_Pin_All
+ val:value write to register bit.
+ * @retval None.
+ */
+void GPIOBToF_WriteBit(GPIO_Type* GPIOx, uint16_t GPIO_Pin, uint8_t val)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PIN(GPIO_Pin));
+ assert_parameters(IS_GPIO_BITVAL(val));
+
+ if (val == 1)
+ {
+ GPIOx->DAT |= GPIO_Pin;
+ }
+ else
+ {
+ GPIOx->DAT &= ~GPIO_Pin;
+ }
+}
+
+/**
+ * @brief Write output data register bit.
+ * @param GPIOx: GPIOA
+ GPIO_Pin: can use the ‘|’ operator
+ GPIO_Pin_0~GPIO_Pin_15 or GPIO_Pin_All
+ val:value write to register bit.
+ * @retval None.
+ */
+void GPIOA_WriteBit(GPIOA_Type* GPIOx, uint16_t GPIO_Pin, uint8_t val)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_PIN(GPIO_Pin));
+ assert_parameters(IS_GPIO_BITVAL(val));
+
+ if (val == 1)
+ {
+ GPIOx->DAT |= GPIO_Pin;
+ }
+ else
+ {
+ GPIOx->DAT &= ~GPIO_Pin;
+ }
+}
+
+/**
+ * @brief Writes output data register.
+ * @param GPIOx: GPIOB~GPIOF
+ val:value write to register.
+ * @retval None.
+ */
+void GPIOBToF_Write(GPIO_Type* GPIOx, uint16_t val)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_ALL_INSTANCE(GPIOx));
+
+ GPIOx->DAT = val;
+}
+
+/**
+ * @brief Writes output data register.
+ * @param GPIOx: GPIOA
+ val:value write to register.
+ * @retval None.
+ */
+void GPIOA_Write(GPIOA_Type* GPIOx, uint16_t val)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMUIO_ALL_INSTANCE(GPIOx));
+
+ GPIOx->DAT = val;
+}
+
+/**
+ * @brief Enables or disables GPIO AF functiuon.
+ * @param GPIOx:GPIOB GPIOE
+ GPIO_AFx:
+ GPIOB_AF_PLLHDIV
+ GPIOB_AF_PLLLOUT
+ GPIOB_AF_OSC
+ GPIOE_AF_CMP1O
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void GPIOBToF_AFConfig(GPIO_Type* GPIOx, uint32_t GPIO_AFx, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIOAF_ALL_INSTANCE(GPIOx));
+ assert_parameters(IS_GPIO_GPIOAF(GPIO_AFx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (GPIOx == GPIOB)
+ {
+ if (NewState == ENABLE)
+ {
+ GPIOAF->IOB_SEL |= GPIO_AFx;
+ }
+ else
+ {
+ GPIOAF->IOB_SEL &= ~GPIO_AFx;
+ }
+ }
+ if (GPIOx == GPIOE)
+ {
+ if (NewState == ENABLE)
+ {
+ GPIOAF->IOE_SEL |= GPIO_AFx;
+ }
+ else
+ {
+ GPIOAF->IOE_SEL &= ~GPIO_AFx;
+ }
+ }
+}
+
+/**
+ * @brief Enables or disables GPIOA AF function.
+ * @param PMUIO_AFx:can use the '|' operator
+ PMUIO7_AF_PLLDIV
+ PMUIO6_AF_CMP2O
+ PMUIO3_AF_PLLDIV
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void GPIOA_AFConfig(uint32_t PMUIO_AFx, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PMUIOAF(PMUIO_AFx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ GPIOA->SEL |= PMUIO_AFx;
+ }
+ else
+ {
+ GPIOA->SEL &= ~PMUIO_AFx;
+ }
+}
+
+/**
+ * @brief Enables or disables GPIO pin remap function.
+ * @param GPIO_Remap:
+ GPIO_REMAP_I2C
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void GPIO_PinRemapConfig(uint32_t GPIO_Remap, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_REMAP(GPIO_Remap));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ GPIOAF->IO_MISC |= GPIO_Remap;
+ }
+ else
+ {
+ GPIOAF->IO_MISC &= ~GPIO_Remap;
+ }
+}
+
+/**
+ * @brief Configures GPIO PLLDIV function.
+ * @param Divider:
+ GPIO_PLLDIV_1
+ GPIO_PLLDIV_2
+ GPIO_PLLDIV_4
+ GPIO_PLLDIV_8
+ GPIO_PLLDIV_16
+ * @retval None.
+ */
+void GPIO_PLLDIVConfig(uint32_t Divider)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PLLDIV(Divider));
+
+ tmp = GPIOAF->IO_MISC;
+ tmp &= ~GPIOAF_IO_MISC_PLLHDIV;
+ tmp |= Divider;
+ GPIOAF->IO_MISC = tmp;
+}
+
+/**
+ * @brief Enables or disables GPIOA de-glitch circuit.
+ * @param GPIO_Pin: can use the '|' operator
+ GPIO_Pin_0~GPIO_Pin_15 or GPIO_Pin_All
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void GPIOA_DeGlitchCmd(uint16_t GPIO_Pin, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PIN(GPIO_Pin));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ /*IOA wake-up signal will go through de-glitch circuit.*/
+ if (NewState == ENABLE)
+ {
+ GPIOA->IOANODEG &= ~GPIO_Pin;
+ }
+ /*IOA wake-up signal will not go through de-glitch circuit.*/
+ else
+ {
+ GPIOA->IOANODEG |= GPIO_Pin;
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_i2c.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_i2c.c
new file mode 100644
index 0000000000..304528fc2d
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_i2c.c
@@ -0,0 +1,694 @@
+/**
+ ******************************************************************************
+ * @file lib_i2c.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief IIC library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_i2c.h"
+
+//registers default reset values
+#define I2C_ADDR_RSTValue 0
+#define I2C_CTRL_RSTValue 0
+#define I2C_CTRL2_RSTValue 0
+
+/* Private Functions -------------------------------------------------------- */
+static uint16_t I2C_CheckState(uint8_t State);
+static void I2C_SendStart(void);
+static void I2C_SendRestart(void);
+static void I2C_SendByte(uint8_t dat);
+static void I2C_SendStop(void);
+static uint8_t I2C_ReceiveByte(void);
+static void I2C_ClearBus(uint32_t remap);
+static void I2C_WaitForCrossPage(uint8_t sla);
+
+/**
+ * @brief Checks required state.
+ * @param State:
+ Required state.
+ * @retval 0: state OK
+ !0: state Error, [15:8]Required status code, [7:0] real status code.
+ */
+static uint16_t I2C_CheckState(uint8_t State)
+{
+ uint16_t ret;
+ if (I2C_GetStatusCode() != State)
+ {
+ ret = (State<<8)|(I2C_GetStatusCode());
+ return ret;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Sends start signal.
+ * @param None
+ * @retval None
+ */
+static void I2C_SendStart(void)
+{
+ I2C_GenerateSTART(ENABLE);
+ while (I2C_GetINTStatus() == 0);
+ I2C_GenerateSTART(DISABLE);
+}
+
+/**
+ * @brief Sends restart signal.
+ * @param None
+ * @retval None
+ */
+static void I2C_SendRestart(void)
+{
+ I2C_GenerateSTART(ENABLE);
+ I2C_ClearINTStatus();
+ while (I2C_GetINTStatus() == 0);
+ I2C_GenerateSTART(DISABLE);
+}
+
+/**
+ * @brief Sends stop signal.
+ * @param None
+ * @retval None
+ */
+static void I2C_SendStop(void)
+{
+ I2C_GenerateSTOP(ENABLE);
+ I2C_ClearINTStatus();
+ I2C_GenerateSTOP(DISABLE);
+}
+
+/**
+ * @brief Sends data.
+ * @param dat:data to send.
+ * @retval None
+ */
+static void I2C_SendByte(uint8_t dat)
+{
+ I2C_SendData(dat);
+ I2C_ClearINTStatus();
+ while (I2C_GetINTStatus() == 0);
+}
+
+/**
+ * @brief Receives byte.
+ * @param None
+ * @retval Byte received
+ */
+static uint8_t I2C_ReceiveByte(void)
+{
+ I2C_ClearINTStatus();
+ while (I2C_GetINTStatus() == 0);
+ return I2C_ReceiveData();
+}
+
+/**
+ * @brief Waits until cross page operation done.
+ * @param None
+ * @retval None
+ */
+static void I2C_WaitForCrossPage(uint8_t sla)
+{
+ do
+ {
+ I2C_SendRestart();
+ I2C_SendByte(sla); //device address
+ }while (I2C_GetStatusCode() !=0x18);
+ I2C_SendStop(); //stop
+}
+
+/**
+ * @brief Clears bus.
+ * @param None
+ * @retval None
+ */
+static void I2C_ClearBus(uint32_t remap)
+{
+ __IO uint8_t i, j;
+
+ if (remap) // I2C remap enable, SCL IOC4
+ {
+ GPIOC->DAT &= ~BIT4;
+ GPIOC->ATT |= BIT4;
+ GPIOC->OEN &= ~BIT4;
+ for (i=0; i<9; i++)
+ {
+ GPIOC->DAT |= BIT4;
+ for (j=0; j<100; j++)
+ __NOP();
+ GPIOC->DAT &= ~BIT4;
+ for (j=0; j<100; j++)
+ __NOP();
+ }
+ GPIOC->DAT |= BIT4;
+ GPIOC->OEN |= BIT4;
+ GPIOC->IE &= ~BIT4;
+ }
+ else // I2C remap disable, SCL IOB13
+ {
+ GPIOB->DAT &= ~BIT13;
+ GPIOB->ATT |= BIT13;
+ GPIOB->OEN &= ~BIT13;
+ for (i=0; i<9; i++)
+ {
+ GPIOB->DAT |= BIT13;
+ for (j=0; j<100; j++)
+ __NOP();
+ GPIOB->DAT &= ~BIT13;
+ for (j=0; j<100; j++)
+ __NOP();
+ }
+ GPIOB->DAT |= BIT13;
+ GPIOB->OEN |= BIT13;
+ GPIOB->IE &= ~BIT13;
+ }
+}
+
+/* Exported Functions ------------------------------------------------------- */
+
+/**
+ * @brief Initializes the I2C peripheral registers to their default reset values.
+ * @param remap: I2C_REMAP_ENABLE or I2C_REMAP_DISABLE
+ * @retval None
+ */
+void I2C_DeInit(uint32_t remap)
+{
+ I2C->CTRL &= ~I2C_CTRL_EN;
+
+ I2C->ADDR = I2C_ADDR_RSTValue;
+ I2C->CTRL = I2C_CTRL_RSTValue;
+ I2C->CTRL2 = I2C_CTRL2_RSTValue;
+
+ I2C_ClearBus(remap);
+}
+
+/**
+ * @brief Fills each InitStruct member with its default value.
+ * @param InitStruct: pointer to an I2C_InitType structure which will be initialized.
+ * @retval None
+ */
+void I2C_StructInit(I2C_InitType *InitStruct)
+{
+ /*--------------- Reset I2C init structure parameters values ---------------*/
+ /* Initialize the AssertAcknowledge member */
+ InitStruct->AssertAcknowledge = I2C_ASSERTACKNOWLEDGE_DISABLE;
+ /* Initialize the ClockSource member */
+ InitStruct->ClockSource = I2C_CLOCKSOURCE_APBD256;
+ /* Initialize the GeneralCallAck member */
+ InitStruct->GeneralCallAck = I2C_GENERALCALLACK_DISABLE;
+ /* Initialize the SlaveAddr member */
+ InitStruct->SlaveAddr = 0;
+}
+
+/**
+ * @brief Initializes I2C.
+ * @param InitStruct: I2C configuration.
+ SlaveAddr: Own I2C slave address (7 bit)
+ GeneralCallAck:
+ I2C_GENERALCALLACK_ENABLE
+ I2C_GENERALCALLACK_DISABLE
+ AssertAcknowledge:
+ I2C_ASSERTACKNOWLEDGE_ENABLE
+ I2C_ASSERTACKNOWLEDGE_DISABLE
+ ClockSource:
+ I2C_CLOCKSOURCE_APBD256
+ I2C_CLOCKSOURCE_APBD224
+ I2C_CLOCKSOURCE_APBD192
+ I2C_CLOCKSOURCE_APBD160
+ I2C_CLOCKSOURCE_APBD960
+ I2C_CLOCKSOURCE_APBD120
+ I2C_CLOCKSOURCE_APBD60
+ I2C_CLOCKSOURCE_TIM3OFD8
+ * @retval None.
+ */
+void I2C_Init(I2C_InitType *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_I2C_GC(InitStruct->GeneralCallAck));
+ assert_parameters(IS_I2C_AA(InitStruct->AssertAcknowledge));
+ assert_parameters(IS_I2C_CLKSRC(InitStruct->ClockSource));
+
+ I2C->ADDR = InitStruct->SlaveAddr\
+ |InitStruct->GeneralCallAck;
+ tmp = I2C->CTRL;
+ tmp &= ~(I2C_CTRL_CR\
+ |I2C_CTRL_AA);
+ tmp |= (InitStruct->ClockSource\
+ |InitStruct->AssertAcknowledge);
+ I2C->CTRL = tmp;
+}
+
+/**
+ * @brief Enables or disables I2C interrupt.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void I2C_INTConfig(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ I2C->CTRL2 |= I2C_CTRL2_INTEN;
+ else
+ I2C->CTRL2 &= ~I2C_CTRL2_INTEN;
+}
+
+/**
+ * @brief Gets I2C interrupt status.
+ * @param None
+ * @retval Interrupt status.
+ */
+uint8_t I2C_GetINTStatus(void)
+{
+ if (I2C->CTRL&I2C_CTRL_SI)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears I2C interrupt status.
+ * @param None
+ * @retval None.
+ */
+void I2C_ClearINTStatus(void)
+{
+ I2C->CTRL &= ~I2C_CTRL_SI;
+}
+
+/**
+ * @brief Reads a packge of data from slave device.
+ * @param InitStruct: I2C_WRType
+ SlaveAddr : Slave device address
+ SubAddress : start of slave device sub-address
+ PageRange : maximum range of page to Read operation
+ pBuffer : Read data pointer
+ Length : sum of Read datas
+ SubAddrType:
+ I2C_SUBADDR_1BYTE (Slave device sub-address type: 1 byte)
+ I2C_SUBADDR_2BYTE (Slave device sub-address type: 2 bytes)
+ I2C_SUBADDR_OTHER (Slave device sub-address type: othres)
+ * @retval 0: true
+ ��0��status code
+ bit15~8 status code(true)
+ bit7~0 status code(false)
+ */
+uint16_t I2C_MasterReadBytes(I2C_WRType *InitStruct)
+{
+ uint32_t i;
+ uint16_t ret_val;
+
+ /* Check parameters */
+ assert_parameters(I2C_SUBADDR_TYPE(InitStruct->SubAddrType));
+
+ I2C_AssertAcknowledgeConfig(ENABLE); //Enable AA
+ /*-------------------------------- START -----------------------------------*/
+ I2C_SendStart();
+ ret_val = I2C_CheckState(0x08);
+ if (ret_val) return ret_val;
+
+ /*------------------------------ Send SLA+W --------------------------------*/
+ /* Slave device sub-address type: 1 byte */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_1BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr);
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* Slave device sub-address type: 2 bytes */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_2BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr);
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress>>8)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* Slave device sub-address type: othres */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_OTHER)
+ {
+ if (InitStruct->PageRange < 256) // 8 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|((InitStruct->SubAddress>>7)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ else // 16 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|((InitStruct->SubAddress>>15)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress>>8)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ }
+
+ /*------------------------------- Restart ----------------------------------*/
+ I2C_SendRestart(); //restart
+ ret_val = I2C_CheckState(0x10);
+ if (ret_val) return ret_val;
+
+ /*----------------------------- Send SLA+R ---------------------------------*/
+ /* Slave device sub-address type: othres */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_OTHER)
+ {
+ if (InitStruct->PageRange < 256) // 8 + x
+ I2C_SendByte(InitStruct->SlaveAddr|0x01|((InitStruct->SubAddress>>7)&0xE));
+ else // 16 + x
+ I2C_SendByte(InitStruct->SlaveAddr|0x01|((InitStruct->SubAddress>>15)&0xE));
+ }
+ else
+ I2C_SendByte(InitStruct->SlaveAddr|0x01);
+
+ ret_val = I2C_CheckState(0x40);
+ if (ret_val) return ret_val;
+
+ /*----------------------------- Read datas ---------------------------------*/
+ for (i=0; i<(InitStruct->Length-1); i++)
+ {
+ *InitStruct->pBuffer = I2C_ReceiveByte();
+ InitStruct->pBuffer++;
+ ret_val = I2C_CheckState(0x50);
+ if (ret_val) return ret_val;
+ }
+ /*-------------------- Read the last data, disable AA ----------------------*/
+ I2C_AssertAcknowledgeConfig(DISABLE);
+ *InitStruct->pBuffer = I2C_ReceiveByte();
+ ret_val = I2C_CheckState(0x58);
+ if (ret_val) return ret_val;
+ /*--------------------------------- Stop -----------------------------------*/
+ I2C_SendStop(); //stop
+ return 0;
+}
+
+/**
+ * @brief Writes a packge of data to slave device.
+ * @param InitStruct: I2C_WRType
+ SlaveAddr : Slave device address
+ SubAddress : start of slave device sub-address
+ PageRange : maximum range of page to write operation
+ pBuffer : write data pointer
+ Length : sum of write datas
+ SubAddrType:
+ I2C_SUBADDR_1BYTE (Slave device sub-address type: 1 byte)
+ I2C_SUBADDR_2BYTE (Slave device sub-address type: 2 bytes)
+ I2C_SUBADDR_OTHER (Slave device sub-address type: othres)
+ * @retval 0: true
+ ��0��status code
+ bit15~8 status code(true)
+ bit7~0 status code(false)
+ */
+uint16_t I2C_MasterWriteBytes(I2C_WRType *InitStruct)
+{
+ uint16_t ret_val;
+ uint32_t i;
+
+ /* Check parameters */
+ assert_parameters(I2C_SUBADDR_TYPE(InitStruct->SubAddrType));
+
+ I2C_AssertAcknowledgeConfig(ENABLE); //Enable AA
+ /*-------------------------------- START -----------------------------------*/
+ I2C_SendStart();
+ ret_val = I2C_CheckState(0x08);
+ if (ret_val) return ret_val;
+
+ /*------------------------------ Send SLA+W --------------------------------*/
+ /* Slave device sub-address type: 1 byte */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_1BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr);
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* Slave device sub-address type: 2 bytes */
+ else if (InitStruct->SubAddrType == I2C_SUBADDR_2BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr); //device address
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress>>8)&0xFF); //first word address
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF); //second word address
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* Slave device sub-address type: othres */
+ else
+ {
+ if (InitStruct->PageRange < 256) // 8 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|((InitStruct->SubAddress>>7)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ else // 16 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|((InitStruct->SubAddress>>15)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress>>8)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(InitStruct->SubAddress&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ }
+
+ /*----------------------------- Write datas --------------------------------*/
+ for (i=0; i<(InitStruct->Length); i++)
+ {
+ /* Reach the page boundary */
+ if ((i > 0) && ((InitStruct->SubAddress+i)%InitStruct->PageRange == 0))
+ {
+ I2C_SendStop();
+ I2C_WaitForCrossPage(InitStruct->SlaveAddr);
+ I2C_SendStart(); //start
+ ret_val = I2C_CheckState(0x08);
+ if (ret_val) return ret_val;
+ /* WriteAddr: 1 byte */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_1BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr);
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress+i)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* WriteAddr: 2 byte */
+ if (InitStruct->SubAddrType == I2C_SUBADDR_2BYTE)
+ {
+ I2C_SendByte(InitStruct->SlaveAddr); //device address
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(((InitStruct->SubAddress+i)>>8)&0xFF); //first word address
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress+i)&0xFF); //second word address
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* WriteAddr: (16 or 8)+x*/
+ if (InitStruct->SubAddrType == I2C_SUBADDR_OTHER)
+ {
+ if (InitStruct->PageRange < 256) // 8 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|(((InitStruct->SubAddress+i)>>7)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress+i)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ else // 16 + x
+ {
+ I2C_SendByte(InitStruct->SlaveAddr|(((InitStruct->SubAddress+i)>>15)&0xE));
+ ret_val = I2C_CheckState(0x18);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte(((InitStruct->SubAddress+i)>>8)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+
+ I2C_SendByte((InitStruct->SubAddress+i)&0xFF);
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ }
+
+ I2C_SendByte(*InitStruct->pBuffer);
+ InitStruct->pBuffer++;
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ /* Not reaching the page boundary */
+ else
+ {
+ I2C_SendByte(*InitStruct->pBuffer);
+ InitStruct->pBuffer++;
+ ret_val = I2C_CheckState(0x28);
+ if (ret_val) return ret_val;
+ }
+ }
+
+ I2C_SendStop();
+ I2C_WaitForCrossPage(InitStruct->SlaveAddr);
+ return 0;
+}
+
+/**
+ * @brief Enables or disables I2C.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void I2C_Cmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ I2C->CTRL |= I2C_CTRL_EN;
+ else
+ I2C->CTRL &= ~I2C_CTRL_EN;
+}
+
+/* I2C Exported Functions Group5:
+ Others ------------------------------------*/
+
+/**
+ * @brief Configures sssert acknowledge.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void I2C_AssertAcknowledgeConfig(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ I2C->CTRL |= I2C_CTRL_AA;
+ else
+ I2C->CTRL &= ~I2C_CTRL_AA;
+}
+
+/**
+ * @brief Receives a byte data.
+ * @param None.
+ * @retval Data received.
+ */
+uint8_t I2C_ReceiveData(void)
+{
+ return I2C->DATA;
+}
+
+/**
+ * @brief Sends a byte data.
+ * @param Dat:data to transmit.
+ * @retval None
+ */
+void I2C_SendData(uint8_t Dat)
+{
+ I2C->DATA = Dat;
+}
+
+/**
+ * @brief Generates start signal.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void I2C_GenerateSTART(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ I2C->CTRL |= I2C_CTRL_STA;
+ else
+ I2C->CTRL &= ~I2C_CTRL_STA;
+}
+
+/**
+ * @brief Generates stop signal.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void I2C_GenerateSTOP(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ I2C->CTRL |= I2C_CTRL_STO;
+ else
+ I2C->CTRL &= ~I2C_CTRL_STO;
+}
+
+/**
+ * @brief Gets status code.
+ * @param None
+ * @retval status code.
+ */
+uint8_t I2C_GetStatusCode(void)
+{
+ return (I2C->STS&I2C_STS_STS);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_iso7816.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_iso7816.c
new file mode 100644
index 0000000000..a8bf8b56f6
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_iso7816.c
@@ -0,0 +1,405 @@
+/**
+ ******************************************************************************
+ * @file lib_iso7816.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief ISO7816 library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_iso7816.h"
+#include "lib_clk.h"
+
+//registers default reset values
+#define ISO7816_BAUDDIVL_RSTValue (0UL)
+#define ISO7816_BAUDDIVH_RSTValue (0UL)
+#define ISO7816_CFG_RSTValue (0x400)
+#define ISO7816_CLK_RSTValue (0UL)
+#define ISO7816_INFO_RC_MASK (0x3ECUL)
+
+
+/**
+ * @brief Initializes the ISO7816 peripheral registers to their default reset values.
+ * @param ISO7816x: ISO78160~ISO78161
+ * @retval None
+ */
+void ISO7816_DeInit(ISO7816_Type *ISO7816x)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+
+ ISO7816x->CFG &= ~ISO7816_CFG_EN;
+
+ ISO7816x->INFO = ISO7816_INFO_RC_MASK; /* clear interrupt flag */
+ ISO7816x->BAUDDIVH = ISO7816_BAUDDIVH_RSTValue;
+ ISO7816x->BAUDDIVL = ISO7816_BAUDDIVL_RSTValue;
+ ISO7816x->CFG = ISO7816_CFG_RSTValue;
+ ISO7816x->CLK = ISO7816_CLK_RSTValue;
+}
+
+
+/**
+ * @brief Fills each InitStruct member with its default value.
+ * @param InitStruct: pointer to an ISO7816_InitType structure which will be initialized.
+ * @retval None
+ */
+void ISO7816_StructInit(ISO7816_InitType *InitStruct)
+{
+ /*--------------- Reset ISO7816 init structure parameters values ---------------*/
+ /* Initialize the FirstBit member */
+ InitStruct->FirstBit = ISO7816_FIRSTBIT_MSB;
+ /* Initialize the Parity member */
+ InitStruct->Parity = ISO7816_PARITY_EVEN;
+ /* Initialize the Baudrate member */
+ InitStruct->Baudrate = 9600;
+ /* Initialize the TXRetry member */
+ InitStruct->TXRetry = ISO7816_TXRTY_0;
+ /* Initialize the RXACKLength member */
+ InitStruct->RXACKLength = ISO7816_RXACKLEN_2;
+ /* Initialize the TXNACKLength member */
+ InitStruct->TXNACKLength = ISO7816_TXNACKLEN_0;
+}
+
+/**
+ * @brief Initializes ISO7816.
+ * @param ISO7816x: ISO78160~ISO78161
+ Init_Struct:iso7816 configuration.
+ FirstBit:
+ ISO7816_FIRSTBIT_MSB
+ ISO7816_FIRSTBIT_LSB
+ Parity:
+ ISO7816_PARITY_EVEN
+ ISO7816_PARITY_ODD
+ Baudrate: baudrate value to configure, 200UL ~ 2625000UL
+ TXRetry:
+ ISO7816_TXRTY_0 ~ ISO7816_TXRTY_15
+ RXACKLength:
+ ISO7816_RXACKLEN_2
+ ISO7816_RXACKLEN_1
+ TXNACKLength:
+ ISO7816_TXNACKLEN_0
+ ISO7816_TXNACKLEN_1
+ ISO7816_TXNACKLEN_2
+ * @retval None
+ */
+void ISO7816_Init(ISO7816_Type *ISO7816x, ISO7816_InitType *Init_Struct)
+{
+ uint32_t tmp;
+ uint16_t div;
+ uint32_t pclk;
+
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_FIRSTBIT(Init_Struct->FirstBit));
+ assert_parameters(IS_ISO7816_PARITY(Init_Struct->Parity));
+ assert_parameters(IS_ISO7816_BAUDRATE(Init_Struct->Baudrate));
+ assert_parameters(IS_ISO7816_TXRTY(Init_Struct->TXRetry));
+ assert_parameters(IS_ISO7816_RXACKLEN(Init_Struct->RXACKLength));
+ assert_parameters(IS_ISO7816_TXNACKLEN(Init_Struct->TXNACKLength));
+
+ tmp = ISO7816x->CFG;
+ tmp &= ~(ISO7816_CFG_ACKLEN\
+ |ISO7816_CFG_AUTORXACK\
+ |ISO7816_CFG_LSB\
+ |ISO7816_CFG_CHKP\
+ |ISO7816_CFG_RXACKSET\
+ |ISO7816_CFG_TXRTYCNT);
+ tmp |= (Init_Struct->FirstBit\
+ |Init_Struct->Parity\
+ |Init_Struct->TXRetry\
+ |Init_Struct->RXACKLength\
+ |Init_Struct->TXNACKLength);
+ ISO7816x->CFG = tmp;
+
+ pclk = CLK_GetPCLKFreq();
+ div = 0x10000 - (pclk/Init_Struct->Baudrate);
+ ISO7816x->BAUDDIVH = (div>>8) & ISO7816_BAUDDIVH_BAUDDIVH;
+ ISO7816x->BAUDDIVL = div & ISO7816_BAUDDIVL_BAUDDIVL;
+}
+
+/**
+ * @brief Enables or disables ISO7816.
+ * @param ISO7816x: ISO78160~ISO78161
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None.
+ */
+void ISO7816_Cmd(ISO7816_Type *ISO7816x, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ ISO7816x->CFG |= ISO7816_CFG_EN;
+ }
+ else
+ {
+ ISO7816x->CFG &= ~ISO7816_CFG_EN;
+ }
+}
+
+/**
+ * @brief Configures ISO7816 baudrate.
+ * @param ISO7816x: ISO78160~ISO78161
+ BaudRate:Baud rate value
+ * @retval None
+ */
+void ISO7816_BaudrateConfig(ISO7816_Type *ISO7816x, uint32_t BaudRate)
+{
+ uint32_t pclk;
+ uint16_t div;
+
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_BAUDRATE(BaudRate));
+
+ pclk = CLK_GetPCLKFreq();
+ div = 0x10000 - (pclk/BaudRate);
+ ISO7816x->BAUDDIVH = (div>>8) & ISO7816_BAUDDIVH_BAUDDIVH;
+ ISO7816x->BAUDDIVL = div & ISO7816_BAUDDIVL_BAUDDIVL;
+}
+
+/**
+ * @brief Configures ISO7816 clock divider.
+ * @param ISO7816x: ISO78160~ISO78161
+ Prescaler:1~128
+ * @retval None
+ */
+void ISO7816_CLKDIVConfig(ISO7816_Type *ISO7816x, uint32_t Prescaler)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_PRESCALER(Prescaler));
+
+ tmp = ISO7816x->CLK;
+ tmp &= ~ISO7816_CLK_CLKDIV;
+ tmp |= (Prescaler - 1);
+ ISO7816x->CLK = tmp;
+}
+
+/**
+ * @brief Enables or disables ISO7816 clock output function.
+ * @param ISO7816x: ISO78160~ISO78161
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ISO7816_CLKOutputCmd(ISO7816_Type *ISO7816x, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState != DISABLE)
+ {
+ ISO7816x->CLK |= ISO7816_CLK_CLKEN;
+ }
+ else
+ {
+ ISO7816x->CLK &= ~ISO7816_CLK_CLKEN;
+ }
+}
+
+/**
+ * @brief Reads ISO7816 data.
+ * @param ISO7816: ISO78160~ISO78161
+ * @retval The received data.
+ */
+uint8_t ISO7816_ReceiveData(ISO7816_Type *ISO7816x)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+
+ return ISO7816x->DATA;
+}
+
+/**
+ * @brief Writes ISO7816 data.
+ * @param ISO7816x: ISO78160~ISO78161
+ * ch: data to send
+ * @retval None
+ */
+void ISO7816_SendData(ISO7816_Type *ISO7816x, uint8_t ch)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+
+ ISO7816x->DATA = ch;
+}
+
+/**
+ * @brief ENables or disables ISO7816 interrupt.
+ * @param ISO7816x: ISO78160~ISO78161
+ INTMask:
+ This parameter can be any combination of the following values
+ ISO7816_INT_TXRTYERR
+ ISO7816_INT_RXOV
+ ISO7816_INT_RX
+ ISO7816_INT_TXDONE
+ ISO7816_INT_RXERR
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void ISO7816_INTConfig(ISO7816_Type *ISO7816x, uint32_t INTMask, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ ISO7816x->CFG |= INTMask;
+ }
+ else
+ {
+ ISO7816x->CFG &= ~INTMask;
+ }
+}
+
+/**
+ * @brief Gets ISO7816 interrupt state.
+ * @param ISO7816x: ISO78160~ISO78161
+ INTMask:
+ ISO7816_INTSTS_TXRTYERR
+ ISO7816_INTSTS_TXDONE
+ ISO7816_INTSTS_RXOV
+ ISO7816_INTSTS_RX
+ ISO7816_INTSTS_RXERR
+ * @retval 1: state set
+ 0: state reset
+ */
+uint8_t ISO7816_GetINTStatus(ISO7816_Type *ISO7816x, uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_INTFLAGR(INTMask));
+
+ if (ISO7816x->INFO & INTMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears ISO7816 interrupt state.
+ * @param ISO7816x: ISO78160~ISO78161
+ INTMask:
+ This parameter can be any combination of the following values
+ ISO7816_INTSTS_TXRTYERR
+ ISO7816_INTSTS_TXDONE
+ ISO7816_INTSTS_RXOV
+ ISO7816_INTSTS_RX
+ ISO7816_INTSTS_RXERR
+ * @retval None
+ */
+void ISO7816_ClearINTStatus(ISO7816_Type *ISO7816x, uint32_t INTMask)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_INTFLAGC(INTMask));
+
+ tmp = ISO7816x->INFO;
+ tmp &= ~ISO7816_INFO_RC_MASK;
+ tmp |= INTMask;
+ ISO7816x->INFO = tmp;
+}
+
+/**
+ * @brief Gets ISO7816 peripheral flag.
+ * @param ISO7816x: ISO78160~ISO78161
+ FlagMask:
+ ISO7816_FLAG_DMATXDONE
+ * @retval 1: state set
+ 0: state reset
+ */
+uint8_t ISO7816_GetFlag(ISO7816_Type *ISO7816x, uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_FLAGR(FlagMask));
+
+ if (ISO7816x->INFO & FlagMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears ISO7816 peripheral flag.
+ * @param ISO7816x: ISO78160~ISO78161
+ FlagMask:
+ ISO7816_FLAG_DMATXDONE
+ * @retval None
+ */
+void ISO7816_ClearFlag(ISO7816_Type *ISO7816x, uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+ assert_parameters(IS_ISO7816_FLAGC(FlagMask));
+
+ ISO7816x->INFO |= FlagMask;
+}
+
+/**
+ * @brief Gets last transmited ACK.
+ * @param ISO7816: ISO78160~ISO78161
+ * @retval ACK value
+ */
+uint8_t ISO7816_GetLastTransmitACK(ISO7816_Type *ISO7816x)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+
+ if (ISO7816x->INFO&ISO7816_INFO_RXACK)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Gets last received check sum bit.
+ * @param ISO7816: ISO78160~ISO78161
+ * @retval CHKSUM bit value
+ */
+uint8_t ISO7816_GetLastReceiveCHKSUM(ISO7816_Type *ISO7816x)
+{
+ /* Check parameters */
+ assert_parameters(IS_ISO7816_ALL_INSTANCE(ISO7816x));
+
+ if (ISO7816x->INFO&ISO7816_INFO_CHKSUM)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_lcd.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_lcd.c
new file mode 100644
index 0000000000..404cf3381d
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_lcd.c
@@ -0,0 +1,241 @@
+/**
+ ******************************************************************************
+ * @file lib_lcd.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief LCD library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_lcd.h"
+#include "lib_LoadNVR.h"
+
+//registers default reset values
+#define LCD_CTRL_RSTValue 0
+#define LCD_CTRL2_RSTValue 0
+#define LCD_SEGCTRL0_RSTValue 0
+#define LCD_SEGCTRL1_RSTValue 0
+#define LCD_SEGCTRL2_RSTValue 0
+
+/* COMx IO */
+const LCD_COMIO lcd_comio[] =
+{
+ {&GPIOD->OEN, GPIO_Pin_0},
+ {&GPIOD->OEN, GPIO_Pin_1},
+ {&GPIOD->OEN, GPIO_Pin_2},
+ {&GPIOD->OEN, GPIO_Pin_3},
+ {&GPIOD->OEN, GPIO_Pin_4},
+ {&GPIOD->OEN, GPIO_Pin_5},
+ {&GPIOD->OEN, GPIO_Pin_6},
+ {&GPIOD->OEN, GPIO_Pin_7},
+};
+
+/**
+ * @brief Initializes LCD.
+ * @param InitStruct: LCD configuration.
+ Type:
+ LCD_TYPE_4COM
+ LCD_TYPE_6COM
+ LCD_TYPE_8COM
+ Drv:
+ LCD_DRV_300
+ LCD_DRV_600
+ LCD_DRV_150
+ LCD_DRV_200
+ FRQ:
+ LCD_FRQ_64H
+ LCD_FRQ_128H
+ LCD_FRQ_256H
+ LCD_FRQ_512H
+ SWPR: Frame buffer switch period(0.5 sec * (SWPR + 1)).
+ FBMODE:
+ LCD_FBMODE_BUFA
+ LCD_FBMODE_BUFAB
+ LCD_FBMODE_BUFABLANK
+ BKFILL:
+ LCD_BKFILL_1
+ LCD_BKFILL_0
+ * @retval None
+ */
+void LCD_Init(LCD_InitType *InitStruct)
+{
+ uint32_t tmp_reg1, tmp_reg2;
+
+ /* Check parameters */
+ assert_parameters(IS_LCD_TYPE(InitStruct->Type));
+ assert_parameters(IS_LCD_DRV(InitStruct->Drv));
+ assert_parameters(IS_LCD_FRQ(InitStruct->FRQ));
+ assert_parameters(IS_LCD_SWPR(InitStruct->SWPR));
+ assert_parameters(IS_LCD_FBMODE(InitStruct->FBMODE));
+ assert_parameters(IS_LCD_BKFILL(InitStruct->BKFILL));
+
+ tmp_reg1 = LCD->CTRL;
+ tmp_reg2 = LCD->CTRL2;
+ tmp_reg1 &= ~(LCD_CTRL_TYPE\
+ |LCD_CTRL_DRV\
+ |LCD_CTRL_FRQ);
+ tmp_reg1 |= (InitStruct->Type\
+ |InitStruct->Drv\
+ |InitStruct->FRQ);
+ tmp_reg2 &= ~(LCD_CTRL2_SWPR\
+ |LCD_CTRL2_FBMODE\
+ |LCD_CTRL2_BKFILL);
+ tmp_reg2 |= ((InitStruct->SWPR << 8)\
+ |InitStruct->FBMODE\
+ |InitStruct->BKFILL);
+ LCD->CTRL = tmp_reg1;
+ LCD->CTRL2 = tmp_reg2;
+}
+
+/**
+ * @brief Fills each LCD_InitStruct member with its default value.
+ * @param LCD_InitStruct: pointer to an LCD_InitType structure which will be initialized.
+ * @retval None
+ */
+void LCD_StructInit(LCD_InitType *LCD_InitStruct)
+{
+ /*--------------- Reset LCD init structure parameters values ---------------*/
+ /* Initialize the BKFILL member */
+ LCD_InitStruct->BKFILL = LCD_BKFILL_0;
+ /* Initialize the Drv member */
+ LCD_InitStruct->Drv = LCD_DRV_300;
+ /* Initialize the FBMODE member */
+ LCD_InitStruct->FBMODE = LCD_FBMODE_BUFA;
+ /* Initialize the FRQ member */
+ LCD_InitStruct->FRQ = LCD_FRQ_64H;
+ /* Initialize the SWPR member */
+ LCD_InitStruct->SWPR = 0;
+ /* Initialize the Type member */
+ LCD_InitStruct->Type = LCD_TYPE_4COM;
+}
+
+/**
+ * @brief Initializes the LCD registers to their default reset values.
+ * @param None
+ * @retval None
+ */
+void LCD_DeInit(void)
+{
+ LCD->CTRL &= ~LCD_CTRL_EN;
+
+ LCD->CTRL = LCD_CTRL_RSTValue;
+ LCD->CTRL2 = LCD_CTRL2_RSTValue;
+ LCD->SEGCTRL0 = LCD_SEGCTRL0_RSTValue;
+ LCD->SEGCTRL1 = LCD_SEGCTRL1_RSTValue;
+ LCD->SEGCTRL2 = LCD_SEGCTRL2_RSTValue;
+}
+
+/**
+ * @brief Enables or disables LCD controller.
+ * @param IOInitType: LCD SEG and COM configuration.
+ SegCtrl0:
+ SegCtrl1:
+ 0~0xFFFFFFFF
+ SegCtrl2:
+ 0~0xFFFF
+ COMMode:
+ LCD_TYPE_4COM
+ LCD_TYPE_6COM
+ LCD_TYPE_8COM
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void LCD_Cmd(LCD_IOInitType *IOInitType, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ assert_parameters(IS_LCD_COMMOD(IOInitType->COMMode));
+
+ if (NewState == ENABLE)
+ {
+ LCD->SEGCTRL0 = IOInitType->SegCtrl0;
+ LCD->SEGCTRL1 = IOInitType->SegCtrl1;
+ LCD->SEGCTRL2 = IOInitType->SegCtrl2;
+
+ /* COMs' IO configuration : forbidden */
+ *lcd_comio[0].GPIO |= lcd_comio[0].Pin;
+ *(lcd_comio[0].GPIO+1) &= ~lcd_comio[0].Pin;
+ *lcd_comio[1].GPIO |= lcd_comio[1].Pin;
+ *(lcd_comio[1].GPIO+1) &= ~lcd_comio[1].Pin;
+ *lcd_comio[2].GPIO |= lcd_comio[2].Pin;
+ *(lcd_comio[2].GPIO+1) &= ~lcd_comio[2].Pin;
+ *lcd_comio[3].GPIO |= lcd_comio[3].Pin;
+ *(lcd_comio[3].GPIO+1) &= ~lcd_comio[3].Pin;
+ if (IOInitType->COMMode & 2UL)
+ {
+ *lcd_comio[4].GPIO |= lcd_comio[4].Pin;
+ *(lcd_comio[4].GPIO+1) &= ~lcd_comio[4].Pin;
+ *lcd_comio[5].GPIO |= lcd_comio[5].Pin;
+ *(lcd_comio[5].GPIO+1) &= ~lcd_comio[5].Pin;
+ }
+ if (IOInitType->COMMode & 4UL)
+ {
+ *lcd_comio[6].GPIO |= lcd_comio[6].Pin;
+ *(lcd_comio[6].GPIO+1) &= ~lcd_comio[6].Pin;
+ *lcd_comio[7].GPIO |= lcd_comio[7].Pin;
+ *(lcd_comio[7].GPIO+1) &= ~lcd_comio[7].Pin;
+ }
+
+ /* Enable LCD */
+ LCD->CTRL |= LCD_CTRL_EN;
+ }
+ else
+ {
+ /* Disable LCD */
+ LCD->CTRL &= ~LCD_CTRL_EN;
+
+ LCD->SEGCTRL0 = IOInitType->SegCtrl0;
+ LCD->SEGCTRL1 = IOInitType->SegCtrl1;
+ LCD->SEGCTRL2 = IOInitType->SegCtrl2;
+
+ /* COMs' IO configuration : ouput low */
+ *(lcd_comio[0].GPIO+2) &= ~lcd_comio[0].Pin;
+ *lcd_comio[0].GPIO &= ~lcd_comio[0].Pin;
+ *(lcd_comio[1].GPIO+2) &= ~lcd_comio[1].Pin;
+ *lcd_comio[1].GPIO &= ~lcd_comio[1].Pin;
+ *(lcd_comio[2].GPIO+2) &= ~lcd_comio[2].Pin;
+ *lcd_comio[2].GPIO &= ~lcd_comio[2].Pin;
+ *(lcd_comio[3].GPIO+2) &= ~lcd_comio[3].Pin;
+ *lcd_comio[3].GPIO &= ~lcd_comio[3].Pin;
+ if (IOInitType->COMMode & 2UL)
+ {
+ *(lcd_comio[4].GPIO+2) &= ~lcd_comio[4].Pin;
+ *lcd_comio[4].GPIO &= ~lcd_comio[4].Pin;
+ *(lcd_comio[5].GPIO+2) &= ~lcd_comio[5].Pin;
+ *lcd_comio[5].GPIO &= ~lcd_comio[5].Pin;
+ }
+ if (IOInitType->COMMode & 4UL)
+ {
+ *(lcd_comio[6].GPIO+2) &= ~lcd_comio[6].Pin;
+ *lcd_comio[6].GPIO &= ~lcd_comio[6].Pin;
+ *(lcd_comio[7].GPIO+2) &= ~lcd_comio[7].Pin;
+ *lcd_comio[7].GPIO &= ~lcd_comio[7].Pin;
+ }
+ }
+}
+
+/**
+ * @brief Configures LCD BIAS mode.
+ * @param BiasSelection:
+ LCD_BMODE_DIV3
+ LCD_BMODE_DIV4
+ * @retval None
+ */
+void LCD_BiasModeConfig(uint32_t BiasSelection)
+{
+ uint32_t tmp;
+
+ assert_parameters(IS_LCD_BMODE(BiasSelection));
+
+ tmp = ANA->REG6;
+ tmp &= ~ANA_REG6_LCDBMODE;
+ tmp |= BiasSelection;
+ ANA->REG6 = tmp;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_misc.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_misc.c
new file mode 100644
index 0000000000..44d29fc26b
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_misc.c
@@ -0,0 +1,255 @@
+/**
+ ******************************************************************************
+ * @file lib_misc.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief MISC library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_misc.h"
+
+/**
+ * @brief Gets MISC flag status.
+ * @param FlagMask:
+ MISC_FLAG_LOCKUP
+ MISC_FLAG_PIAC
+ MISC_FLAG_HIAC
+ MISC_FLAG_PERR
+ * @retval Flag status.
+ */
+uint8_t MISC_GetFlag(uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_MISC_FLAGR(FlagMask));
+
+ if (MISC1->SRAMINT&FlagMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears MISC flag status.
+ * @param FlagMask: can use the '|' operator
+ MISC_FLAG_LOCKUP
+ MISC_FLAG_PIAC
+ MISC_FLAG_HIAC
+ MISC_FLAG_PERR
+ * @retval None
+ */
+void MISC_ClearFlag(uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_MISC_FLAGC(FlagMask));
+
+ MISC1->SRAMINT = FlagMask;
+}
+
+/**
+ * @brief Enables or disables MISC interrupt.
+ * @param INTMask: can use the '|' operator
+ MISC_INT_LOCK
+ MISC_INT_PIAC
+ MISC_INT_HIAC
+ MISC_INT_PERR
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void MISC_INTConfig(uint32_t INTMask, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_MISC_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = MISC1->SRAMINIT;
+ if (NewState == ENABLE)
+ {
+ tmp |= INTMask;
+ }
+ else
+ {
+ tmp &= ~INTMask;
+ }
+ MISC1->SRAMINIT = tmp;
+}
+
+/**
+ * @brief Enables or disables SRAM parity.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void MISC_SRAMParityCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ MISC1->SRAMINIT |= MISC1_SRAMINIT_PEN;
+ }
+ else
+ {
+ MISC1->SRAMINIT &= ~MISC1_SRAMINIT_PEN;
+ }
+}
+
+/**
+ * @brief Gets SRAM parity error address.
+ * @param None
+ * @retval parity error address.
+ */
+uint32_t MISC_GetSRAMPEAddr(void)
+{
+ uint32_t tmp;
+
+ tmp = MISC1->PARERR;
+ tmp = tmp*4 + 0x20000000;
+ return tmp;
+}
+
+/**
+ * @brief Gets APB error address.
+ * @param None
+ * @retval APB error address.
+ */
+uint32_t MISC_GetAPBErrAddr(void)
+{
+ uint32_t tmp;
+
+ tmp = MISC1->PIADDR;
+ tmp = tmp + 0x40000000;
+ return tmp;
+}
+
+/**
+ * @brief Gets AHB error address.
+ * @param None
+ * @retval AHB error address.
+ */
+uint32_t MISC_GetAHBErrAddr(void)
+{
+ return (MISC1->HIADDR);
+}
+
+/**
+ * @brief Enables or disables UART transmit IR function.
+ * @param IRx:
+ MISC_IREN_TX0
+ MISC_IREN_TX1
+ MISC_IREN_TX2
+ MISC_IREN_TX3
+ MISC_IREN_TX4
+ MISC_IREN_TX5
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void MISC_IRCmd(uint32_t IRx, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+ assert_parameters(IS_MISC_IREN(IRx));
+
+ tmp = MISC1->IREN;
+ if (NewState == ENABLE)
+ {
+ tmp |= IRx;
+ }
+ else
+ {
+ tmp &= ~IRx;
+ }
+ MISC1->IREN = tmp;
+}
+
+/**
+ * @brief Configures SUART transmit IR duty.
+ * @param DutyHigh
+ The high pulse width will be (DUTYH + 1)*APBCLK period.
+ DutyLow
+ The low pulse width will be (DUTYL + 1)*APBCLK period.
+ * @retval None
+ */
+void MISC_IRDutyConfig(uint16_t DutyHigh, uint16_t DutyLow)
+{
+ MISC1->DUTYH = DutyHigh;
+ MISC1->DUTYL = DutyLow;
+}
+
+/**
+ * @brief Enables or disables Hardfault generation.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void MISC_HardFaultCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ MISC1->IRQLAT &= ~MISC1_IRQLAT_NOHARDFAULT;
+ }
+ else
+ {
+ MISC1->IRQLAT |= MISC1_IRQLAT_NOHARDFAULT;
+ }
+}
+
+/**
+ * @brief Enables or disables a system reset when the CM0 lockup happened.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void MISC_LockResetCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ MISC1->IRQLAT |= MISC1_IRQLAT_LOCKRESET;
+ }
+ else
+ {
+ MISC1->IRQLAT &= ~MISC1_IRQLAT_LOCKRESET;
+ }
+}
+
+/**
+ * @brief Configures IRQ latency.
+ * @param Latency:0~255
+ * @retval None
+ */
+void MISC_IRQLATConfig(uint8_t Latency)
+{
+ uint32_t tmp;
+
+ tmp = MISC1->IRQLAT;
+ tmp &= ~MISC1_IRQLAT_IRQLAT;
+ tmp |= Latency;
+ MISC1->IRQLAT = tmp;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pmu.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pmu.c
new file mode 100644
index 0000000000..4ee20fa562
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pmu.c
@@ -0,0 +1,1194 @@
+/**
+ ******************************************************************************
+ * @file lib_pmu.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief PMU library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_pmu.h"
+#include "lib_gpio.h"
+#include "lib_CodeRAM.h"
+#include "lib_clk.h"
+#include "lib_cortex.h"
+
+#define DSLEEPPASS_KEY 0xAA5555AA
+#define DSLEEPEN_KEY 0x55AAAA55
+
+/**
+ * @brief Enters deep-sleep mode.
+ * @param None
+ * @retval 1: Current mode is debug mode, function failed.
+ * 2: Enter deep-sleep mode failed.
+ */
+uint32_t PMU_EnterDSleepMode(void)
+{
+ uint32_t hclk;
+
+ /* Current MODE is 0, debug mode, return error */
+ if (!(PMU->STS & PMU_STS_MODE))
+ return 1;
+
+ /* Enter deep sleep when WKU event is cleared */
+ while (PMU->DSLEEPEN & PMU_DSLEEPEN_WKU)
+ {
+ }
+
+ /* Flash 1USCYCLE configure */
+ hclk = CLK_GetHCLKFreq();
+ if(hclk > 1000000)
+ {
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ }
+ else
+ {
+ MISC2->FLASHWC = 0<<8;
+ }
+
+ PMU->DSLEEPPASS = DSLEEPPASS_KEY;
+ PMU->DSLEEPEN = DSLEEPEN_KEY;
+
+ return 2;
+}
+
+/**
+ * @brief Enters idle mode.
+ * @note Any interrupt generates to CPU will break idle mode.
+ * @param None
+ * @retval None
+ */
+void PMU_EnterIdleMode(void)
+{
+ /* Clear SLEEPDEEP bit of Cortex-M0 System Control Register */
+ SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
+
+ __WFI();
+}
+
+/**
+ * @brief Enters sleep mode.
+ * @param None
+ * @retval 1: Current mode is debug mode, function failed.
+ * 0: Quit sleep mode succeeded.
+ */
+uint32_t PMU_EnterSleepMode(void)
+{
+ uint32_t hclk;
+
+ /* Current MODE is 0, debug mode, return error */
+ if (!(PMU->STS & PMU_STS_MODE))
+ return 1;
+
+ /* Flash 1USCYCLE configure */
+ hclk = CLK_GetHCLKFreq();
+ if(hclk > 1000000)
+ {
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ }
+ else
+ {
+ MISC2->FLASHWC = 0<<8;
+ }
+
+ /* Set SLEEPDEEP bit of Cortex-M0 System Control Register */
+ SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
+
+ __WFI();
+
+ return 0;
+}
+
+/**
+ * @brief Enables or disables PMU interrupt.
+ * @param INTMask: can use the | operator
+ PMU_INT_IOAEN
+ PMU_INT_32K
+ PMU_INT_6M
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_INTConfig(uint32_t INTMask, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ PMU->CONTROL |= INTMask;
+ }
+ else
+ {
+ PMU->CONTROL &= ~INTMask;
+ }
+}
+
+/**
+ * @brief Gets PMU interrupt status.
+ * @param INTMask:
+ PMU_INTSTS_32K
+ PMU_INTSTS_6M
+ * @retval 1:status set
+ 0:status reset
+ */
+uint8_t PMU_GetINTStatus(uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_INTFLAGR(INTMask));
+
+ if (PMU->STS&INTMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears PMU interrupt status.
+ * @param INTMask:specifies the flag to clear.
+ This parameter can be any combination of the following values
+ PMU_INTSTS_32K
+ PMU_INTSTS_6M
+ * @retval None
+ */
+void PMU_ClearINTStatus(uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_INTFLAGC(INTMask));
+
+ PMU->STS = INTMask;
+}
+
+/**
+ * @brief Gets Crystal status.
+ * @param Mask:
+ PMU_STS_32K
+ PMU_STS_6M
+ * @retval 1:status set
+ 0:status reset
+ */
+uint8_t PMU_GetCrystalStatus(uint32_t Mask)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_FLAG(Mask));
+
+ if (PMU->STS&Mask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Gest all IOA interrupt status.
+ * @param None
+ * @retval IOA's interrupt status
+ */
+uint16_t PMU_GetIOAAllINTStatus(void)
+{
+ return (GPIOA->IOAINTSTS);
+}
+
+/**
+ * @brief Gest IOA interrupt status.
+ * @param INTMask:
+ GPIO_Pin_0 ~ GPIO_Pin_15
+ * @retval 1:status set
+ 0:status reset
+ */
+uint8_t PMU_GetIOAINTStatus(uint16_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PINR(INTMask));
+
+ if (GPIOA->IOAINTSTS & INTMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears IOA interrupt status.
+ * @param INTMask:
+ This parameter can be any combination of the following values
+ GPIO_Pin_0 ~ GPIO_Pin_15
+ * @retval None
+ */
+void PMU_ClearIOAINTStatus(uint16_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PIN(INTMask));
+
+ GPIOA->IOAINTSTS = INTMask;
+}
+
+/**
+ * @brief Configures Wake-up pin functions.
+ * @param IOAx: GPIO_Pin_0 ~ GPIO_Pin_15
+ Wakeup_Event:
+ IOA_DISABLE
+ IOA_RISING
+ IOA_FALLING
+ IOA_HIGH
+ IOA_LOW
+ IOA_EDGEBOTH
+ * @retval None
+ */
+void PMU_WakeUpPinConfig(uint32_t IOAx, uint32_t Wakeup_Event)
+{
+ uint32_t tmp;
+ uint32_t posision = 0x00U;
+ uint32_t iocurrent = 0x00U;
+
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PINR(IOAx));
+ assert_parameters(IS_PMU_WAKEUP(Wakeup_Event));
+
+ while ((IOAx >> posision) != 0U)
+ {
+ /* Get current io position */
+ iocurrent = IOAx & (0x01U << posision);
+
+ if (iocurrent)
+ {
+ /* Current IO Input configure*/
+ GPIOA->OEN |= iocurrent;
+ GPIOA->IE |= iocurrent;
+
+ tmp = GPIOA->IOAWKUEN;
+ tmp &= ~(3U << (2 * posision));
+ switch (Wakeup_Event)
+ {
+ /* Disable wake-up function */
+ default:
+ case IOA_DISABLE:
+ break;
+
+ /* wake-up function: Rising */
+ case IOA_RISING:
+ GPIOA->DAT &= ~iocurrent;
+ tmp |= 1 << (2 * posision);
+ break;
+
+ /* wake-up function: falling */
+ case IOA_FALLING:
+ GPIOA->DAT |= iocurrent;
+ tmp |= 1 << (2 * posision);
+ break;
+
+ /* wake-up function: high level */
+ case IOA_HIGH:
+ GPIOA->DAT &= ~iocurrent;
+ tmp |= 2 << (2 * posision);
+ break;
+
+ /* wake-up function: low level */
+ case IOA_LOW:
+ GPIOA->DAT |= iocurrent;
+ tmp |= 2 << (2 * posision);
+ break;
+
+ /* wake-up function: both edge */
+ case IOA_EDGEBOTH:
+ tmp |= 3 << (2 * posision);
+ break;
+ }
+ GPIOA->IOAWKUEN = tmp;
+ }
+ posision++;
+ }
+}
+
+/**
+ * @brief Enters deep-sleep mode with low-power configuration.
+ *
+ * @param InitStruct : pointer to PMU_LowPWRTypeDef
+ COMP1Power:
+ PMU_COMP1PWR_ON
+ PMU_COMP1PWR_OFF
+ COMP2Power:
+ PMU_COMP2PWR_ON
+ PMU_COMP2PWR_OFF
+ TADCPower:
+ PMU_TADCPWR_ON
+ PMU_TADCPWR_OFF
+ BGPPower:
+ PMU_BGPPWR_ON
+ PMU_BGPPWR_OFF
+ AVCCPower:
+ PMU_AVCCPWR_ON
+ PMU_AVCCPWR_OFF
+ VDCINDetector:
+ PMU_VDCINDET_ENABLE
+ PMU_VDCINDET_DISABLE
+ VDDDetector:
+ PMU_VDDDET_ENABLE
+ PMU_VDDDET_DISABLE
+ APBPeriphralDisable:
+ PMU_APB_ALL
+ PMU_APB_DMA
+ PMU_APB_I2C
+ PMU_APB_SPI1
+ PMU_APB_UART0
+ PMU_APB_UART1
+ PMU_APB_UART2
+ PMU_APB_UART3
+ PMU_APB_UART4
+ PMU_APB_UART5
+ PMU_APB_ISO78160
+ PMU_APB_ISO78161
+ PMU_APB_TIMER
+ PMU_APB_MISC
+ PMU_APB_U32K0
+ PMU_APB_U32K1
+ PMU_APB_SPI2
+ PMU_APB_SPI3
+ AHBPeriphralDisable:
+ PMU_AHB_ALL
+ PMU_AHB_DMA
+ PMU_AHB_GPIO
+ PMU_AHB_LCD
+ PMU_AHB_CRYPT
+
+ * @note This function performs the following:
+ Comparator 1 power control ON or OFF(optional)
+ Comparator 2 power control ON or OFF(optional)
+ Tiny ADC power control ON or OFF(optional)
+ Bandgap power control ON or OFF(optional)
+ AVCC power control ON or OFF(optional)
+ VDCIN detector control Disable or Enable(optional)
+ VDD detector control Disable or Enable(optional)
+ Disable AHB/APB periphral clock Modules(optional)
+ Disable AVCC output
+ Disable ADC
+ Disable resistance division for ADC input signal
+ Enable LCD
+
+ If 5V power supply, AVCCPower should be ON, if 3.3V power supply, AVCCPower should be OFF.
+
+ * @retval 1: Current MODE is debug mode, enter deep-sleep mode failed.
+ 2: VDCIN is not drop before enter deep-sleep mode or Failure to enter deep sleep mode.
+
+ */
+uint8_t PMU_EnterDSleep_LowPower(PMU_LowPWRTypeDef *InitStruct)
+{
+ uint32_t tmp;
+ uint32_t hclk;
+
+ /* Check parameters */
+ assert_parameters(IS_PMU_COMP1PWR(InitStruct->COMP1Power));
+ assert_parameters(IS_PMU_COMP2PWR(InitStruct->COMP2Power));
+ assert_parameters(IS_PMU_TADCPWR(InitStruct->TADCPower));
+ assert_parameters(IS_PMU_BGPPWR(InitStruct->BGPPower));
+ assert_parameters(IS_PMU_AVCCPWR(InitStruct->AVCCPower));
+ assert_parameters(IS_PMU_VDCINDET(InitStruct->VDCINDetector));
+ assert_parameters(IS_PMU_VDDDET(InitStruct->VDDDetector));
+
+ /* Current MODE is 0, debug mode, return error */
+ if (!(PMU->STS & PMU_STS_MODE))
+ return 1;
+
+ /* Disable AVCC output */
+ ANA->REGF &= ~ANA_REGF_AVCCOEN;
+
+ /* Disable ADC */
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+
+ /* Disable resistor division for ADC input signal */
+ ANA->ADCCTRL1 &= ~ANA_ADCCTRL1_RESDIV_CHx;
+
+ /******** Comparator 1 power control ********/
+ ANA->REG3 &= ~ANA_REG3_CMP1PDN;
+ ANA->REG3 |= InitStruct->COMP1Power;
+
+ /******** Comparator 2 power control ********/
+ ANA->REG3 &= ~ANA_REG3_CMP2PDN;
+ ANA->REG3 |= InitStruct->COMP2Power;
+
+ /******** Tiny ADC power control ********/
+ tmp = ANA->REGF;
+ tmp &= ~ANA_REGF_ADTPDN;
+ tmp |= InitStruct->TADCPower;
+ ANA->REGF = tmp;
+
+ /******** BGP power control ********/
+ ANA->REG3 &= ~ANA_REG3_BGPPD;
+ ANA->REG3 |= InitStruct->BGPPower;
+
+ /******** AVCC power control ********/
+ tmp = ANA->REG8;
+ tmp &= ~ANA_REG8_AVCCLDOPD;
+ tmp |= InitStruct->AVCCPower;
+ ANA->REG8 = tmp;
+
+ /******** LCD controller power control ********/
+ /* LCD should be ENABLE */
+ tmp = LCD->CTRL;
+ tmp |= LCD_CTRL_EN;
+ LCD->CTRL = tmp;
+
+ tmp = ANA->REG7;
+ tmp |= BIT7;
+ ANA->REG7 = tmp;
+
+ /******** VDCIN detector control ********/
+ tmp = ANA->REGA;
+ tmp &= ~ANA_REGA_VDCINDETPD;
+ tmp |= InitStruct->VDCINDetector;
+ ANA->REGA = tmp;
+
+ /******** VDD detector control *********/
+ tmp = ANA->REG9;
+ tmp &= ~ANA_REG9_VDDDETPD;
+ tmp |= InitStruct->VDDDetector;
+ ANA->REG9 = tmp;
+
+ /******** AHB Periphral clock disable selection ********/
+ tmp = MISC2->HCLKEN;
+ tmp &= ~((InitStruct->AHBPeriphralDisable) & PMU_AHB_ALL);
+ MISC2->HCLKEN = tmp;
+
+ /******** APB Periphral clock disable selection ********/
+ tmp = MISC2->PCLKEN;
+ tmp &= ~((InitStruct->APBPeriphralDisable) & PMU_APB_ALL);
+ MISC2->PCLKEN = tmp;
+
+ if ((InitStruct->VDCINDetector) != PMU_VDCINDET_DISABLE)
+ {
+ if (!(ANA->CMPOUT & ANA_CMPOUT_VDCINDROP))
+ {
+ return 2;
+ }
+ }
+ // make sure WKU is 0 before entering deep-sleep mode
+ while (PMU->DSLEEPEN & PMU_DSLEEPEN_WKU);
+
+ /* Flash 1USCYCLE configure */
+ hclk = CLK_GetHCLKFreq();
+ if(hclk > 1000000)
+ {
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ }
+ else
+ {
+ MISC2->FLASHWC = 0<<8;
+ }
+
+ /* Enter deep-sleep mode */
+ PMU->DSLEEPPASS = DSLEEPPASS_KEY;
+ PMU->DSLEEPEN = DSLEEPEN_KEY;
+
+ return 2;
+}
+
+/**
+ * @brief Enters sleep mode with low-power configuration.
+ *
+ * @param InitStruct : pointer to PMU_LowPWRTypeDef
+ COMP1Power:
+ PMU_COMP1PWR_ON
+ PMU_COMP1PWR_OFF
+ COMP2Power:
+ PMU_COMP2PWR_ON
+ PMU_COMP2PWR_OFF
+ TADCPower:
+ PMU_TADCPWR_ON
+ PMU_TADCPWR_OFF
+ BGPPower:
+ PMU_BGPPWR_ON
+ PMU_BGPPWR_OFF
+ AVCCPower:
+ PMU_AVCCPWR_ON
+ PMU_AVCCPWR_OFF
+ VDCINDetector:
+ PMU_VDCINDET_ENABLE
+ PMU_VDCINDET_DISABLE
+ VDDDetector:
+ PMU_VDDDET_ENABLE
+ PMU_VDDDET_DISABLE
+ APBPeriphralDisable:
+ PMU_APB_ALL
+ PMU_APB_DMA
+ PMU_APB_I2C
+ PMU_APB_SPI1
+ PMU_APB_SPI2
+ PMU_APB_UART0
+ PMU_APB_UART1
+ PMU_APB_UART2
+ PMU_APB_UART3
+ PMU_APB_UART4
+ PMU_APB_UART5
+ PMU_APB_ISO78160
+ PMU_APB_ISO78161
+ PMU_APB_TIMER
+ PMU_APB_MISC
+ PMU_APB_U32K0
+ PMU_APB_U32K1
+ PMU_APB_SPI3
+ AHBPeriphralDisable:
+ PMU_AHB_ALL
+ PMU_AHB_DMA
+ PMU_AHB_GPIO
+ PMU_AHB_LCD
+ PMU_AHB_CRYPT
+
+ * @note This function performs the following:
+ Comparator 1 power control ON or OFF(optional)
+ Comparator 2 power control ON or OFF(optional)
+ Tiny ADC power control ON or OFF(optional)
+ Bandgap power control ON or OFF(optional)
+ AVCC power control ON or OFF(optional)
+ VDCIN detector control Disable or Enable(optional)
+ VDD detector control Disable or Enable(optional)
+ Disable AHB/APB periphral clock Modules(optional)
+ Disable AVCC output
+ Disable ADC
+ Disable resistance division for ADC input signal
+ Enable LCD
+
+ If 5V power supply, AVCCPower should be ON, if 3.3V power supply, AVCCPower should be OFF.
+
+ * @retval 2: VDCIN is not drop before enter sleep mode(failed).
+ 1: Current mode is debug mode, enter sleep mode failed.
+ 0: Quit from sleep mode success.
+*/
+uint8_t PMU_EnterSleep_LowPower(PMU_LowPWRTypeDef *InitStruct)
+{
+ uint32_t tmp;
+ uint32_t hclk;
+
+ /* Check parameters */
+ assert_parameters(IS_PMU_COMP1PWR(InitStruct->COMP1Power));
+ assert_parameters(IS_PMU_COMP2PWR(InitStruct->COMP2Power));
+ assert_parameters(IS_PMU_TADCPWR(InitStruct->TADCPower));
+ assert_parameters(IS_PMU_BGPPWR(InitStruct->BGPPower));
+ assert_parameters(IS_PMU_AVCCPWR(InitStruct->AVCCPower));
+ assert_parameters(IS_PMU_VDCINDET(InitStruct->VDCINDetector));
+ assert_parameters(IS_PMU_VDDDET(InitStruct->VDDDetector));
+
+ /* Current MODE is 0, debug mode, return error */
+ if (!(PMU->STS & PMU_STS_MODE))
+ return 1;
+
+ /* Disable AVCC output */
+ ANA->REGF &= ~ANA_REGF_AVCCOEN;
+
+ /* Disable ADC */
+ ANA->ADCCTRL2 &= ~ANA_ADCCTRL2_ADC_EN;
+
+ /* Disable resistor division for ADC input signal */
+ ANA->ADCCTRL1 &= ~ANA_ADCCTRL1_RESDIV_CHx ;
+
+ /******** Comparator 1 power control ********/
+ ANA->REG3 &= ~ANA_REG3_CMP1PDN;
+ ANA->REG3 |= InitStruct->COMP1Power;
+
+ /******** Comparator 2 power control ********/
+ ANA->REG3 &= ~ANA_REG3_CMP2PDN;
+ ANA->REG3 |= InitStruct->COMP2Power;
+
+
+ /******** Tiny ADC power control ********/
+ tmp = ANA->REGF;
+ tmp &= ~ANA_REGF_ADTPDN;
+ tmp |= InitStruct->TADCPower;
+ ANA->REGF = tmp;
+
+ /******** BGP power control ********/
+ ANA->REG3 &= ~ANA_REG3_BGPPD;
+ ANA->REG3 |= InitStruct->BGPPower;
+
+ /******** AVCC power control ********/
+ tmp = ANA->REG8;
+ tmp &= ~ANA_REG8_AVCCLDOPD;
+ tmp |= InitStruct->AVCCPower;
+ ANA->REG8 = tmp;
+
+ /******** LCD controller power control ********/
+ /* LCD should be ENABLE */
+ tmp = LCD->CTRL;
+ tmp |= LCD_CTRL_EN;
+ LCD->CTRL = tmp;
+
+ tmp = ANA->REG7;
+ tmp |= BIT7;
+ ANA->REG7 = tmp;
+
+ /******** VDCIN detector control ********/
+ tmp = ANA->REGA;
+ tmp &= ~ANA_REGA_VDCINDETPD;
+ tmp |= InitStruct->VDCINDetector;
+ ANA->REGA = tmp;
+
+ /******** VDD detector control *********/
+ tmp = ANA->REG9;
+ tmp &= ~ANA_REG9_VDDDETPD;
+ tmp |= InitStruct->VDDDetector;
+ ANA->REG9 = tmp;
+
+ /******** AHB Periphral clock disable selection ********/
+ tmp = MISC2->HCLKEN;
+ tmp &= ~((InitStruct->AHBPeriphralDisable) & PMU_AHB_ALL);
+ MISC2->HCLKEN = tmp;
+
+ /******** APB Periphral clock disable selection ********/
+ tmp = MISC2->PCLKEN;
+ tmp &= ~((InitStruct->APBPeriphralDisable) & PMU_APB_ALL);
+ MISC2->PCLKEN = tmp;
+
+ if ((InitStruct->VDCINDetector) != PMU_VDCINDET_DISABLE)
+ {
+ if (!(ANA->CMPOUT & ANA_CMPOUT_VDCINDROP))
+ {
+ return 2;
+ }
+ }
+
+ /* Flash 1USCYCLE configure */
+ hclk = CLK_GetHCLKFreq();
+ if(hclk > 1000000)
+ {
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ }
+ else
+ {
+ MISC2->FLASHWC = 0<<8;
+ }
+
+ /* Set SLEEPDEEP bit of Cortex-M0 System Control Register */
+ SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
+ __WFI();
+
+ return 0;
+}
+
+
+/**
+ * @brief Enter idle mode with flash deep standby.
+ * @param None
+ * @retval None
+ */
+#ifndef __GNUC__
+void PMU_EnterIdle_LowPower(void)
+{
+ uint32_t hclk;
+
+ /* Flash 1USCYCLE configure */
+ hclk = CLK_GetHCLKFreq();
+ if(hclk > 1000000)
+ {
+ MISC2->FLASHWC = (hclk/1000000)<<8;
+ }
+ else
+ {
+ MISC2->FLASHWC = 0<<8;
+ }
+
+ PMU_EnterIdle_FlashDSTB();
+}
+#endif
+
+/**
+ * @brief Configures IOA wake-up source about sleep mode.
+ * @param IOAx: GPIO_Pin_0 ~ GPIO_Pin_15
+ Wakeup_Event:
+ IOA_DISABLE
+ IOA_RISING
+ IOA_FALLING
+ IOA_HIGH
+ IOA_LOW
+ IOA_EDGEBOTH
+ Priority: The preemption priority for the IRQn channel.
+ This parameter can be a value between 0 and 3.
+ * @retval
+ */
+void PMU_SleepWKUSRCConfig_IOA(uint16_t IOAx, uint32_t Wakeup_Event, uint32_t Priority)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PINR(IOAx));
+ assert_parameters(IS_PMU_WAKEUP(Wakeup_Event));
+
+ /* Disable PMU interrupt in NVIC */
+ NVIC_DisableIRQ(PMU_IRQn);
+ /* Wake-up pins configuration */
+ PMU_WakeUpPinConfig(IOAx, Wakeup_Event);
+ /* Clear interrupt flag */
+ GPIOA->IOAINTSTS = IOAx;
+ /* Enable PMU interrupt */
+ PMU->CONTROL |= PMU_CONTROL_INT_IOA_EN;
+ CORTEX_SetPriority_ClearPending_EnableIRQ(PMU_IRQn, Priority);
+}
+
+/**
+ * @brief Configures RTC wake-up source about sleep mode.
+ * @param Wakeup_Event:
+ This parameter can be any combination of the following values
+ PMU_RTCEVT_ALARM
+ PMU_RTCEVT_WKUCNT
+ PMU_RTCEVT_MIDNIGHT
+ PMU_RTCEVT_WKUHOUR
+ PMU_RTCEVT_WKUMIN
+ PMU_RTCEVT_WKUSEC
+ PMU_RTCEVT_TIMEILLE
+ PMU_RTCEVT_ITVSITV
+ Priority: The preemption priority for the IRQn channel.
+ This parameter can be a value between 0 and 3.
+ * @retval
+ */
+void PMU_SleepWKUSRCConfig_RTC(uint32_t Wakeup_Event, uint32_t Priority)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_RTCEVT(Wakeup_Event));
+
+ /* Disable RTC interrupt in NVIC */
+ NVIC_DisableIRQ(RTC_IRQn);
+ /* Clear interrupt flag */
+ RTC->INTSTS = Wakeup_Event;
+ /* Enable RTC interrupt */
+ RTC->INTEN |= Wakeup_Event;
+ CORTEX_SetPriority_ClearPending_EnableIRQ(RTC_IRQn, Priority);
+}
+/**
+ * @brief Configures IOA wake-up source about deep-sleep mode.
+ * @param IOAx: GPIO_Pin_0 ~ GPIO_Pin_15
+ Wakeup_Event:
+ IOA_DISABLE
+ IOA_RISING
+ IOA_FALLING
+ IOA_HIGH
+ IOA_LOW
+ IOA_EDGEBOTH
+ * @retval
+ */
+void PMU_DeepSleepWKUSRCConfig_IOA(uint16_t IOAx, uint32_t Wakeup_Event)
+{
+ /* Check parameters */
+ assert_parameters(IS_GPIO_PINR(IOAx));
+ assert_parameters(IS_PMU_WAKEUP(Wakeup_Event));
+
+ /* Wake-up pins configuration */
+ PMU_WakeUpPinConfig(IOAx, Wakeup_Event);
+ /* Clear interrupt flag */
+ GPIOA->IOAINTSTS = IOAx;
+}
+
+/**
+ * @brief Configures RTC wake-up source about deep-sleep mode.
+ * @param Wakeup_Event:
+ This parameter can be any combination of the following values
+ PMU_RTCEVT_ALARM
+ PMU_RTCEVT_WKUCNT
+ PMU_RTCEVT_MIDNIGHT
+ PMU_RTCEVT_WKUHOUR
+ PMU_RTCEVT_WKUMIN
+ PMU_RTCEVT_WKUSEC
+ PMU_RTCEVT_TIMEILLE
+ PMU_RTCEVT_ITVSITV
+ * @retval
+ */
+void PMU_DeepSleepWKUSRCConfig_RTC(uint32_t Wakeup_Event)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_RTCEVT(Wakeup_Event));
+
+ /* Clear interrupt flag */
+ RTC->INTSTS = Wakeup_Event;
+ /* Enable RTC interrupt */
+ RTC->INTEN |= Wakeup_Event;
+}
+
+/**
+ * @brief Configures the deep sleep behavior when VDD/VDCIN is not drop.
+ * @param VDCIN_PDNS:
+ PMU_VDCINPDNS_0 , can't enter deep-sleep mode when VDCIN is not drop
+ can wake-up mcu from deep-sleep, when VDCIN is not drop.
+ PMU_VDCINPDNS_1 , The condition for entering deep sleep mode is independent of VDCIN.
+ VDD_PDNS:
+ PMU_VDDPDNS_0 , can't enter deep-sleep mode when VDD is not drop(>Threshold)
+ can wake-up mcu from deep-sleep, when VDD is not drop.
+ PMU_VDDPDNS_1 , The condition for entering deep sleep mode is independent of VDD.
+ * @retval None
+ */
+void PMU_PDNDSleepConfig(uint32_t VDCIN_PDNS, uint32_t VDD_PDNS)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PMU_VDCINPDNS(VDCIN_PDNS));
+ assert_parameters(IS_PMU_VDDPDNS(VDD_PDNS));
+
+ tmp = ANA->CTRL;
+ tmp &= ~(ANA_CTRL_PDNS | ANA_CTRL_PDNS2);
+ tmp |= (VDCIN_PDNS | VDD_PDNS);
+
+ ANA->CTRL = tmp;
+}
+
+/**
+ * @brief Enables or disables BGP power.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_BGPCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ ANA->REG3 &= ~ANA_REG3_BGPPD;
+ else
+ ANA->REG3 |= ANA_REG3_BGPPD;
+}
+
+/**
+ * @brief Configures VDD alarm threshold voltage.
+ * @param CheckTHR:
+ PMU_VDDALARM_4_5V
+ PMU_VDDALARM_4_2V
+ PMU_VDDALARM_3_9V
+ PMU_VDDALARM_3_6V
+ PMU_VDDALARM_3_2V
+ PMU_VDDALARM_2_9V
+ PMU_VDDALARM_2_6V
+ PMU_VDDALARM_2_3V
+ CheckFrequency:
+ PMU_VDDALARM_CHKFRE_NOCHECK
+ PMU_VDDALARM_CHKFRE_30US
+ * @retval None
+ */
+void PMU_VDDAlarmConfig(uint32_t CheckTHR,uint32_t CheckFrequency)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PMU_VDDALARM_THR(CheckTHR));
+ assert_parameters(IS_PMU_VDDALARM_CHKFRE(CheckFrequency));
+
+ /* Configure CheckTHR */
+ tmp = ANA->REG8;
+ tmp &= ~ANA_REG8_VDDPVDSEL;
+ tmp |= CheckTHR;
+ ANA->REG8 = tmp;
+
+ /* Configure CheckFrequency */
+ tmp = ANA->CMPCTL;
+ tmp &= ~ANA_CMPCTL_VDDALARM_CHK_FRQ_SEL;
+ tmp |= CheckFrequency;
+ ANA->CMPCTL = tmp;
+
+ if (CheckFrequency == PMU_VDDALARM_CHKFRE_NOCHECK)
+ {
+ ANA->REG9 |= ANA_REG9_VDDDETPD;
+ }
+ else
+ {
+ ANA->REG9 &= ~ANA_REG9_VDDDETPD;
+ }
+}
+
+/**
+ * @brief Gets VDD alarm status.
+ * @param None
+ * @retval POWALARM status
+ 0: Voltage of VDD is higher than threshold.
+ 1: Voltage of VDD is lower than threshold.
+ */
+uint8_t PMU_GetVDDAlarmStatus(void)
+{
+ if (ANA->CMPOUT & ANA_CMPOUT_VDDALARM)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Gets current MODE pin status.
+ * @param None
+ * @retval MODE pin status
+ * 0: Debug mode.
+ * 1: Normal mode.
+ */
+uint8_t PMU_GetModeStatus(void)
+{
+ if(PMU->STS & PMU_STS_MODE)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Enables or disables AVCC.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_AVCCCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ ANA->REG8 &= ~ANA_REG8_AVCCLDOPD;
+ else
+ ANA->REG8 |= ANA_REG8_AVCCLDOPD;
+}
+
+/**
+ * @brief Enables or disables VDD33_O pin power.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_AVCCOutputCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == DISABLE)
+ ANA->REGF &= ~ANA_REGF_AVCCOEN;
+ else
+ ANA->REGF |= ANA_REGF_AVCCOEN;
+}
+
+/**
+ * @brief Enables or disables AVCC Low Voltage detector.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_AVCCLVDetectorCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ ANA->REG5 &= ~ANA_REG5_AVCCLVDETPD;
+ else
+ ANA->REG5 |= ANA_REG5_AVCCLVDETPD;
+}
+
+/**
+ * @brief Gets AVCC low power status.
+ * @param None
+ * @retval low power status of AVCC
+ * 0: status not set, AVCC is higher than 2.5V.
+ * 1: status set, AVCC is lower than 2.5V.
+ */
+uint8_t PMU_GetAVCCLVStatus(void)
+{
+ if (ANA->CMPOUT & ANA_CMPOUT_AVCCLV)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Enables or disables VDCIN decector.
+ * @param NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_VDCINDetectorCmd(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ ANA->REGA &= ~ANA_REGA_VDCINDETPD;
+ else
+ ANA->REGA |= ANA_REGA_VDCINDETPD;
+}
+
+/**
+ * @brief Gets VDCIN drop status.
+ * @param None
+ * @retval drop status of VDCIN
+ 0: status not set, VDCIN is not drop.
+ 1: status set, VDCIN is drop.
+ */
+uint8_t PMU_GetVDCINDropStatus(void)
+{
+ if (ANA->CMPOUT & ANA_CMPOUT_VDCINDROP)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Configures VDDALARM, VDCIN and AVCCDET de-bounce.
+ * @param DEBSel:
+ 0: No de-bounce.
+ 1: 2 RTCCLK de-bounce.
+ 2: 3 RTCCLK de-bounce.
+ 3: 4 RTCCLK de-bounce.
+ 4: 5 RTCCLK de-bounce.
+ ...
+ 255: 256 RTCCLK de-bounce.
+ * @retval None
+ */
+void PMU_PWRDEBSel(uint32_t DEBSel)
+{
+ uint32_t tmp;
+ /* Check parameters */
+ assert_parameters(IS_PMU_PWR_DEBSEL(DEBSel));
+
+ tmp = ANA->CMPCTL;
+ tmp &= ~ANA_CMPCTL_PWR_DEB_SEL;
+ tmp |= (DEBSel << ANA_CMPCTL_PWR_DEB_SEL_Pos);
+ ANA->CMPCTL = tmp;
+}
+
+/**
+ * @brief Discharges or not discharges the BAT battery.
+ * @param BATDisc:
+ PMU_BAT1
+ PMU_BATRTC
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PMU_BATDischargeConfig(uint32_t BATDisc, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_BATRTCDISC(BATDisc));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ ANA->REG6 |= BATDisc;
+ else
+ ANA->REG6 &= ~BATDisc;
+}
+
+
+/**
+ * @brief Gets power status.
+ * @param StatusMask:
+ PMU_PWRSTS_AVCCLV
+ PMU_PWRSTS_VDCINDROP
+ PMU_PWRSTS_VDDALARM
+ * @retval power status
+ * 1 status set
+ * 0 status not set
+ */
+uint8_t PMU_GetPowerStatus(uint32_t StatusMask)
+{
+ if (ANA->CMPOUT & StatusMask)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Gets reset source status.
+ * @param Mask:
+ PMU_RSTSRC_EXTRST
+ PMU_RSTSRC_PORST
+ PMU_RSTSRC_DPORST
+ PMU_RSTSRC_WDTRST
+ PMU_RSTSRC_SFTRST
+ PMU_RSTSRC_MODERST
+ * @retval 1: Reset status set
+ 0: Reset status reset
+ */
+uint8_t PMU_GetResetSource(uint32_t Mask)
+{
+ /* Check parameters */
+ assert_parameters(PMU_RESETSRC(Mask));
+
+ if (PMU->STS & Mask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears reset source status.
+ * @param Mask: can use the '|' operator
+ PMU_RSTSRC_EXTRST
+ PMU_RSTSRC_PORST
+ PMU_RSTSRC_DPORST
+ PMU_RSTSRC_WDTRST
+ PMU_RSTSRC_SFTRST
+ PMU_RSTSRC_MODERST
+ PMU_RSTSRC_ALL
+ * @retval None
+ */
+void PMU_ClearResetSource(uint32_t Mask)
+{
+ /* Check parameters */
+ assert_parameters(PMU_RESETSRC_CLR(Mask));
+
+ PMU->STS = Mask;
+}
+
+/**
+ * @brief Gets all reset source status.
+ * @param None
+ * @retval All reset source status
+ */
+uint32_t PMU_GetAllResetSource(void)
+{
+ return (PMU->STS & PMU_RSTSRC_Msk);
+}
+
+/**
+ * @brief Gets deep-sleep wakeup source status.
+ * @param Mask:
+ PMU_DSLEEPWKUSRC_MODE
+ PMU_DSLEEPWKUSRC_XTAL
+ PMU_DSLEEPWKUSRC_U32K
+ PMU_DSLEEPWKUSRC_ANA
+ PMU_DSLEEPWKUSRC_RTC
+ PMU_DSLEEPWKUSRC_IOA
+ * @retval 1: Wakeup status set
+ 0: Wakeup status reset
+ */
+uint8_t PMU_GetDSleepWKUSource(uint32_t Mask)
+{
+ /* Check parameters */
+ assert_parameters(IS_PMU_DSLEEPWKUSRC(Mask));
+
+ if (PMU->STS & Mask)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Gest deep-sleep wakeup source status.
+ * @param None
+ * @retval All deep-sleep wakeup source status
+ */
+uint32_t PMU_GetAllDSleepWKUSource(void)
+{
+ return (PMU->STS & PMU_DSLEEPWKUSRC_Msk);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pwm.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pwm.c
new file mode 100644
index 0000000000..23f3f64c7b
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_pwm.c
@@ -0,0 +1,530 @@
+/**
+ ******************************************************************************
+ * @file lib_pwm.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief PWM library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_pwm.h"
+
+/**
+ * @brief Initializes PWM timebase.
+ * @param PWMx: PWM0~PWM3
+ InitStruct:PWM BASE configuration.
+ ClockDivision:
+ PWM_CLKDIV_2
+ PWM_CLKDIV_4
+ PWM_CLKDIV_8
+ PWM_CLKDIV_16
+ Mode:
+ PWM_MODE_STOP
+ PWM_MODE_UPCOUNT
+ PWM_MODE_CONTINUOUS
+ PWM_MODE_UPDOWN
+ ClockSource:
+ PWM_CLKSRC_APB
+ PWM_CLKSRC_APBD128
+ * @retval None
+ */
+void PWM_BaseInit(PWM_Type *PWMx, PWM_BaseInitType *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CLKDIV(InitStruct->ClockDivision));
+ assert_parameters(IS_PWM_CNTMODE(InitStruct->Mode));
+ assert_parameters(IS_PWM_CLKSRC(InitStruct->ClockSource));
+
+ tmp = PWMx->CTL;
+ tmp &= ~(PWM_CTL_ID\
+ |PWM_CTL_MC\
+ |PWM_CTL_TSEL);
+ tmp |= (InitStruct->ClockDivision\
+ |InitStruct->Mode\
+ |InitStruct->ClockSource);
+ PWMx->CTL = tmp;
+}
+
+/**
+ * @brief Fills each PWM_BaseInitType member with its default value.
+ * @param InitStruct: pointer to an PWM_BaseInitType structure which will be initialized.
+ * @retval None
+ */
+void PWM_BaseStructInit(PWM_BaseInitType *InitStruct)
+{
+ /*------------ Reset PWM base init structure parameters values ------------*/
+ /* Initialize the ClockDivision member */
+ InitStruct->ClockDivision = PWM_CLKDIV_2;
+ /* Initialize the ClockSource member */
+ InitStruct->ClockSource = PWM_CLKSRC_APBD128;
+ /* Initialize the Mode member */
+ InitStruct->Mode = PWM_MODE_STOP;
+}
+
+/**
+ * @brief Fills each PWM_OCInitType member with its default value.
+ * @param OCInitType: pointer to an PWM_OCInitType structure which will be initialized.
+ * @retval None
+ */
+void PWM_OCStructInit(PWM_OCInitType *OCInitType)
+{
+ /*------- Reset PWM output channel init structure parameters values --------*/
+ /* Initialize the Channel member */
+ OCInitType->Channel = PWM_CHANNEL_0;
+ /* Initialize the OutMode member */
+ OCInitType->OutMode = PWM_OUTMOD_CONST;
+ /* Initialize the Period member */
+ OCInitType->Period = 0;
+}
+
+/**
+ * @brief Initializes PWM channel output compare function.
+ * @param PWMx: PWM0~PWM3
+ OCInitType:PWM output compare configuration.
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ OutMode:
+ PWM_OUTMOD_CONST
+ PWM_OUTMOD_SET
+ PWM_OUTMOD_TOGGLE_RESET
+ PWM_OUTMOD_SET_RESET
+ PWM_OUTMOD_TOGGLE
+ PWM_OUTMOD_RESET
+ PWM_OUTMOD_TOGGLE_SET
+ PWM_OUTMOD_RESET_SET
+ Period: 0 ~ 0xFFFF
+ * @retval None
+ */
+void PWM_OCInit(PWM_Type *PWMx, PWM_OCInitType *OCInitType)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(OCInitType->Channel));
+ assert_parameters(IS_PWM_OUTMODE(OCInitType->OutMode));
+ assert_parameters(IS_PWM_CCR(OCInitType->Period));
+
+ tmp = PWMx->CCTL[OCInitType->Channel];
+ tmp &= ~(PWM_CCTL_CAP | PWM_CCTL_OUTMOD | PWM_CCTL_CCIFG | PWM_CCTL_COV);
+ tmp |= OCInitType->OutMode;
+ PWMx->CCTL[OCInitType->Channel] = tmp;
+ PWMx->CCR[OCInitType->Channel] = OCInitType->Period;
+}
+
+/**
+ * @brief Fills each PWM_ICInitType member with its default value.
+ * @param ICInitType: pointer to a PWM_OCInitType structure which will be initialized.
+ * @retval None
+ */
+void PWM_ICStructInit(PWM_ICInitType *ICInitType)
+{
+ /*------- Reset PWM output channel init structure parameters values --------*/
+ /* Initialize the Channel member */
+ ICInitType->Channel = PWM_CHANNEL_0;
+ /* Initialize the CaptureMode member */
+ ICInitType->CaptureMode = PWM_CM_DISABLE;
+}
+
+
+/**
+ * @brief Initializes PWM channel input capture function.
+ * @param PWMx: PWM0~PWM3
+ ICInitType:PWM output compare configuration.
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ CaptureMode:
+ PWM_CM_DISABLE
+ PWM_CM_RISING
+ PWM_CM_FALLING
+ PWM_CM_BOTH
+ * @retval None
+ */
+void PWM_ICInit(PWM_Type *PWMx, PWM_ICInitType *ICInitType)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(ICInitType->Channel));
+ assert_parameters(IS_PWM_CAPMODE(ICInitType->CaptureMode));
+
+ tmp = PWMx->CCTL[ICInitType->Channel];
+ tmp &= ~(PWM_CCTL_CM | PWM_CCTL_CAP | PWM_CCTL_CCIFG | PWM_CCTL_COV);
+ tmp |= (ICInitType->CaptureMode | PWM_CCTL_CAP);
+ PWMx->CCTL[ICInitType->Channel] = tmp;
+}
+
+/**
+ * @brief Enables or disables PWM base interrupt.
+ * @param PWMx: PWM0~PWM3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PWM_BaseINTConfig(PWM_Type *PWMx, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = PWMx->CTL;
+ tmp &= ~(PWM_CTL_IE | PWM_CTL_IFG);
+ if (NewState == ENABLE)
+ {
+ tmp |= PWM_CTL_IE;
+ }
+ PWMx->CTL = tmp;
+}
+
+/**
+ * @brief Gets PWM base interrupt status.
+ * @param PWMx: PWM0~PWM3
+ * @retval interrupt status.
+ */
+uint8_t PWM_GetBaseINTStatus(PWM_Type *PWMx)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+
+ if (PWMx->CTL&PWM_CTL_IFG)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears PWM base interrupt status.
+ * @param PWMx: PWM0~PWM3
+ * @retval None.
+ */
+void PWM_ClearBaseINTStatus(PWM_Type *PWMx)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+
+ PWMx->CTL |= PWM_CTL_IFG;
+}
+
+/**
+ * @brief Enables or disables channel interrupt.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PWM_ChannelINTConfig(PWM_Type *PWMx, uint32_t Channel, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = PWMx->CCTL[Channel];
+ tmp &= ~(PWM_CCTL_CCIE | PWM_CCTL_CCIFG | PWM_CCTL_COV);
+ if (NewState == ENABLE)
+ {
+ tmp |= PWM_CCTL_CCIE;
+ }
+ PWMx->CCTL[Channel] = tmp;
+}
+
+/**
+ * @brief Gets channel interrupt status.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ IntMask:
+ PWM_INT_CCIFG
+ PWM_INT_COV
+ * @retval interrupt status
+ */
+uint8_t PWM_GetChannelINTStatus(PWM_Type *PWMx, uint32_t Channel, uint32_t IntMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+ assert_parameters(IS_PWM_INTFLAGR(IntMask));
+
+ if (PWMx->CCTL[Channel] & IntMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears channel interrupt status.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ Int_Mask:
+ PWM_INT_CCIFG
+ PWM_INT_COV
+ * @retval None
+ */
+void PWM_ClearChannelINTStatus(PWM_Type *PWMx, uint32_t Channel, uint32_t IntMask)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+ assert_parameters(IS_PWM_INTFLAGC(IntMask));
+
+ tmp = PWMx->CCTL[Channel];
+ tmp &= ~PWM_INT_Msk;
+ tmp |= IntMask;
+ PWMx->CCTL[Channel] = tmp;
+}
+
+/**
+ * @brief Clears PWM counter.
+ * @param PWMx: PWM0~PWM3
+ * @retval None
+ */
+void PWM_ClearCounter(PWM_Type *PWMx)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+
+ PWMx->CTL |= PWM_CTL_CLR;
+}
+
+/**
+ * @brief Configures PWM channel CCR value.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ Period: 0 ~ 0xFFFF
+ * @retval None
+ */
+void PWM_CCRConfig(PWM_Type *PWMx, uint32_t Channel, uint16_t Period)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+
+ PWMx->CCR[Channel] = Period;
+}
+
+/**
+ * @brief Configures PWM output line.
+ * @param OutSelection:
+ PWM0_OUT0
+ PWM0_OUT1
+ PWM0_OUT2
+ PWM1_OUT0
+ PWM1_OUT1
+ PWM1_OUT2
+ PWM2_OUT0
+ PWM2_OUT1
+ PWM2_OUT2
+ PWM3_OUT0
+ PWM3_OUT1
+ PWM3_OUT2
+ OLine: can use the '|' operator
+ PWM_OLINE_0
+ PWM_OLINE_1
+ PWM_OLINE_2
+ PWM_OLINE_3
+ * @note PWM Single channel's output waveform can be output on multiple output lines.
+ * Multiple-line configuration can be performed by using the '|' operator.
+ * ex: PWM_OLineConfig(PWM0_OUT0, PWM_OLINE_0 | PWM_OLINE_2)
+ * PWM0 channel0 output by PWM0&PWM2's line.
+ * @retval None
+ */
+void PWM_OLineConfig(uint32_t OutSelection, uint32_t OLine)
+{
+ uint32_t tmp;
+ uint32_t position = 0;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_OUTLINE(OLine));
+ assert_parameters(IS_PWM_OUTSEL(OutSelection));
+
+ tmp = PWM_SEL->O_SEL;
+ while ((OLine >> position) != 0UL)
+ {
+ if ((OLine >> position) & 1UL)
+ {
+ tmp &= ~(PWM_SEL_O_SEL_SEL0 << (position * 4));
+ tmp |= (OutSelection << (position * 4));
+ }
+ position++;
+ }
+ PWM_SEL->O_SEL = tmp;
+}
+
+/**
+ * @brief Enables disables PWM output function.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void PWM_OutputCmd(PWM_Type *PWMx, uint32_t Channel, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = PWMx->CCTL[Channel];
+ tmp &= ~(PWM_CCTL_CCIFG | PWM_CCTL_COV);
+ if (NewState == ENABLE)
+ {
+ tmp |= PWM_CCTL_OUTEN;
+ }
+ else
+ {
+ tmp &= ~PWM_CCTL_OUTEN;
+ }
+ PWMx->CCTL[Channel] = tmp;
+}
+
+/**
+ * @brief Sets PWM channel output level.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ Level:
+ PWM_LEVEL_HIGH
+ PWM_LEVEL_LOW
+ * @retval None
+ */
+void PWM_SetOutLevel(PWM_Type *PWMx, uint32_t Channel, uint32_t Level)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+ assert_parameters(IS_PWM_OUTLVL(Level));
+
+ tmp = PWMx->CCTL[Channel];
+ tmp &= ~(PWM_CCTL_OUT | PWM_CCTL_CCIFG | PWM_CCTL_COV);
+ tmp |= Level;
+ PWMx->CCTL[Channel] = tmp;
+}
+
+/**
+ * @brief Configures PWM input line.
+ * @param InSelection:
+ PWM1_IN2
+ PWM1_IN1
+ PWM1_IN0
+ PWM0_IN2
+ PWM0_IN1
+ PWM0_IN0
+ PWM3_IN2
+ PWM3_IN1
+ PWM3_IN0
+ PWM2_IN2
+ PWM2_IN1
+ PWM2_IN0
+ ILine:
+ PWM_ILINE_0
+ PWM_ILINE_1
+ PWM_ILINE_2
+ PWM_ILINE_3
+ * @retval None
+ */
+void PWM_ILineConfig(uint32_t InSelection, uint32_t ILine)
+{
+ __IO uint32_t *addr;
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_PWM_INLINE(ILine));
+ assert_parameters(IS_PWM_INSEL(InSelection));
+
+ addr = &PWM_SEL->I_SEL01 + ((InSelection&0xF00)>>8);
+ tmp = *addr;
+ tmp &= ~( 3 << (InSelection&0xFF));
+ tmp |= (ILine << (InSelection&0xFF));
+ *addr = tmp;
+}
+
+/**
+ * @brief Gets PWM channel SCCI value.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ * @retval INx��s input value when the TAR is equal to CCRx
+ */
+uint8_t PWM_GetSCCI(PWM_Type *PWMx, uint32_t Channel)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+
+ if (PWMx->CCTL[Channel] & PWM_CCTL_SCCI)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Gets PWM channel capture value.
+ * @param PWMx: PWM0~PWM3
+ Channel:
+ PWM_CHANNEL_0
+ PWM_CHANNEL_1
+ PWM_CHANNEL_2
+ * @retval The value of CCRx.
+ */
+uint32_t PWM_GetCapture(PWM_Type *PWMx, uint32_t Channel)
+{
+ /* Check parameters */
+ assert_parameters(IS_PWM_ALL_INSTANCE(PWMx));
+ assert_parameters(IS_PWM_CHANNEL(Channel));
+
+ return PWMx->CCR[Channel];
+}
+
+/******************* (C) COPYRIGHT Vango Technologies, Inc *****END OF FILE****/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_rtc.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_rtc.c
new file mode 100644
index 0000000000..b20546572d
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_rtc.c
@@ -0,0 +1,793 @@
+/**
+ ******************************************************************************
+ * @file lib_rtc.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief RTC library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_rtc.h"
+
+#define RTCPWD_KEY 0x5AA55AA5
+#define RTCCE_SETKEY 0xA55AA55B
+#define RTCCE_CLRKEY 0xA55AA55A
+
+/**
+ * @brief Enables or disables RTC registers write protection.
+ * @param NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void RTC_WriteProtection(uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ /* Enable RTC Write-Protection */
+ if (NewState != DISABLE)
+ {
+ RTC->PWD = RTCPWD_KEY;
+ RTC->CE = RTCCE_CLRKEY;
+ }
+ /* Disable RTC Write-Protection */
+ else
+ {
+ RTC->PWD = RTCPWD_KEY;
+ RTC->CE = RTCCE_SETKEY;
+ }
+}
+
+/**
+ * @brief Waits until the RTC registers (be W/R protected) are synchronized
+ * with RTC APB clock.
+ * @note The RTC Resynchronization mode is write protected, use the
+ * RTC_WriteProtection(DISABLE) before calling this function.
+ * Write-Operation process as follows:
+ * 1. RTC_WriteProtection(DISABLE);
+ * 2. RTC Registers write operation(only first write-operation be
+ * valid on the same register).
+ * 3. RTC_WriteProtection(ENABLE);
+ * 4. RTC_WaitForSynchro(); Wait until the RTC registers be
+ * synchronized by calling this function.
+ * @retval None
+ */
+void RTC_WaitForSynchro(void)
+{
+ while (RTC->CE & RTC_CE_BSY)
+ {
+ }
+}
+
+/**
+ * @brief Writes RTC registers(continuous/be write-protected).
+ * @param[in] StartAddr the start address of registers be written
+ * @param[in] wBuffer pointer to write
+ * @param[in] Len number of registers be written
+ * @retval None
+ */
+void RTC_WriteRegisters(uint32_t StartAddr, const uint32_t *wBuffer, uint8_t Len)
+{
+ uint8_t cnt;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_REGOP_STARTADDR(StartAddr));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write registers */
+ for (cnt=0; cnt<Len; cnt++)
+ {
+ *(volatile uint32_t *)(StartAddr) = *(wBuffer++);
+ StartAddr += 4;
+ }
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Reads RTC registers(continuous/be read-protected).
+ * @param[in] StartAddr the start address of registers be read
+ * @param[out] rBuffer pointer to read
+ * @param[in] Len number of registers be read
+ * @retval None
+ */
+void RTC_ReadRegisters(uint32_t StartAddr, uint32_t *rBuffer, uint8_t Len)
+{
+ __IO uint32_t tmp;
+ uint8_t cnt;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_REGOP_STARTADDR(StartAddr));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Dummy read-operation to RTC->LOAD */
+ tmp = RTC->LOAD;
+ tmp += 1;
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Read registers */
+ for (cnt=0; cnt<Len; cnt++)
+ {
+ *(rBuffer++) = *(volatile uint32_t *)(StartAddr);
+ StartAddr += 4;
+ }
+}
+
+/**
+ * @brief Sets RTC current time.
+ * @param sTime: Pointer to Time structure
+ * AccurateSel:
+ * RTC_ACCURATE
+ * RTC_INACCURATE
+ * @retval None
+ */
+void RTC_SetTime(RTC_TimeTypeDef *sTime, uint32_t AccurateSel)
+{
+ uint32_t subsec,sec,alarmctl;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_TIME_YEAR(sTime->Year));
+ assert_parameters(IS_RTC_TIME_MONTH(sTime->Month));
+ assert_parameters(IS_RTC_TIME_DATE(sTime->Date));
+ assert_parameters(IS_RTC_TIME_WEEKDAY(sTime->WeekDay));
+ assert_parameters(IS_RTC_TIME_HOURS(sTime->Hours));
+ assert_parameters(IS_RTC_TIME_MINS(sTime->Minutes));
+ assert_parameters(IS_RTC_TIME_SECS(sTime->Seconds));
+ if (AccurateSel == RTC_ACCURATE)
+ assert_parameters(IS_RTC_TIME_SubSECS(sTime->SubSeconds));
+ assert_parameters(IS_RTC_ACCURATESEL(AccurateSel));
+
+ subsec = sTime->SubSeconds;
+ subsec = subsec -(subsec>>8)*156 -((subsec&0xFF)>>4)*6;
+ sec = sTime->Seconds;
+ sec = sec - (sec>>4)*6;
+ subsec = sec * 32768 + subsec * 32768 / 1000;
+
+ alarmctl = RTC->ALARMCTL;
+ if (AccurateSel == RTC_ACCURATE)
+ alarmctl |= RTC_ALARMCTL_TIME_CNT_EN;
+ else
+ alarmctl &= ~RTC_ALARMCTL_TIME_CNT_EN;
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write RTC time registers */
+ RTC->TIME = subsec;
+ RTC->SEC = sTime->Seconds;
+ RTC->MIN = sTime->Minutes;
+ RTC->HOUR = sTime->Hours;
+ RTC->DAY = sTime->Date;
+ RTC->WEEK = sTime->WeekDay;
+ RTC->MON = sTime->Month;
+ RTC->YEAR = sTime->Year;
+ RTC->ALARMCTL = alarmctl;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Gets RTC current time.
+ * @param[out] gTime: Pointer to Time structure
+ * @param[in] AccurateSel:
+ * RTC_ACCURATE
+ * RTC_INACCURATE
+ * @retval None
+*/
+void RTC_GetTime(RTC_TimeTypeDef *gTime, uint32_t AccurateSel)
+{
+ __IO uint32_t dummy_data = 0;
+ uint32_t subsec,sec;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_ACCURATESEL(AccurateSel));
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Dummy read-operation to RTC->LOAD register */
+ dummy_data = RTC->LOAD;
+ dummy_data += 1;
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Read RTC time registers */
+ gTime->Seconds = RTC->SEC;
+ gTime->Minutes = RTC->MIN;
+ gTime->Hours = RTC->HOUR;
+ gTime->Date = RTC->DAY;
+ gTime->WeekDay = RTC->WEEK;
+ gTime->Month = RTC->MON;
+ gTime->Year = RTC->YEAR;
+ subsec = RTC->TIME;
+
+ if (AccurateSel == RTC_ACCURATE)
+ {
+ sec = subsec/32768;
+ sec = sec + (sec/10)*6;
+ gTime->Seconds = sec;
+ subsec = (subsec%32768)*1000/32768;
+ subsec = subsec + ((subsec%100)/10)*6 + (subsec/100)*156;
+ gTime->SubSeconds = subsec;
+ }
+ else
+ {
+ gTime->SubSeconds = 0;
+ }
+}
+
+/**
+ * @brief Enables or disables the RTC Sub Seconds.
+ * @param NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void RTC_SubSecondCmd(uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Parameter check */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = RTC->ALARMCTL;
+ if (NewState == ENABLE)
+ {
+ tmp |= RTC_ALARMCTL_TIME_CNT_EN;
+ }
+ else
+ {
+ tmp &= ~RTC_ALARMCTL_TIME_CNT_EN;
+ }
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ALARMCTL = tmp;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Sets the RTC Alarm.
+ * @param RTC_AlarmStruct: pointer to a RTC_AlarmTypeDef structure that
+ * contains the alarm configuration parameters.
+ * AccurateSel:
+ * RTC_ACCURATE
+ * RTC_INACCURATE
+ * @retval None
+ */
+void RTC_SetAlarm(RTC_AlarmTypeDef *RTC_AlarmStruct, uint32_t AccurateSel)
+{
+ uint32_t subsec,sec,alarmctl;
+ /* Parameter check */
+ assert_parameters(IS_RTC_TIME_HOURS(RTC_AlarmStruct->AlarmHours));
+ assert_parameters(IS_RTC_TIME_MINS(RTC_AlarmStruct->AlarmMinutes));
+ assert_parameters(IS_RTC_TIME_SECS(RTC_AlarmStruct->AlarmSeconds));
+ if (AccurateSel == RTC_ACCURATE)
+ assert_parameters(IS_RTC_TIME_SubSECS(RTC_AlarmStruct->AlarmSubSeconds));
+ assert_parameters(IS_RTC_ACCURATESEL(AccurateSel));
+
+ subsec = RTC_AlarmStruct->AlarmSubSeconds;
+ subsec = subsec -(subsec>>8)*156 -((subsec&0xFF)>>4)*6;
+ sec = RTC_AlarmStruct->AlarmSeconds;
+ sec = sec - (sec>>4)*6;
+ subsec = sec * 32768 + subsec * 32768 / 1000;
+
+ alarmctl = RTC->ALARMCTL;
+ if (AccurateSel == RTC_ACCURATE)
+ alarmctl &= ~RTC_ALARMCTL_ALARM_INACCURATE;
+ else
+ alarmctl |= RTC_ALARMCTL_ALARM_INACCURATE;
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ALARMHOUR = RTC_AlarmStruct->AlarmHours;
+ RTC->ALARMMIN = RTC_AlarmStruct->AlarmMinutes;
+ RTC->ALARMSEC = RTC_AlarmStruct->AlarmSeconds;
+ RTC->ALARMTIME = subsec;
+ RTC->ALARMCTL = alarmctl;
+ /* Write RTC time registers */
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Gets the RTC Alarm.
+ * @param[out] RTC_AlarmStruct: pointer to a RTC_AlarmTypeDef structure that will
+ * contains the output alarm configuration values.
+ * @param[in] AccurateSel:
+ * RTC_ACCURATE
+ * RTC_INACCURATE
+ * @retval None
+ */
+void RTC_GetAlarm(RTC_AlarmTypeDef *RTC_AlarmStruct, uint32_t AccurateSel)
+{
+ uint32_t sec,subsec;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_ACCURATESEL(AccurateSel));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+
+ /* Read RTC time registers */
+ RTC_AlarmStruct->AlarmHours = RTC->ALARMHOUR;
+ RTC_AlarmStruct->AlarmMinutes = RTC->ALARMMIN;
+ RTC_AlarmStruct->AlarmSeconds = RTC->ALARMSEC;
+ subsec = RTC->ALARMTIME;
+
+ if (AccurateSel == RTC_ACCURATE)
+ {
+ sec = subsec/32768;
+ sec = sec + (sec/10)*6;
+ RTC_AlarmStruct->AlarmSeconds = sec;
+ subsec = (subsec%32768)*1000/32768;
+ subsec = subsec + ((subsec%100)/10)*6 + (subsec/100)*156;
+ RTC_AlarmStruct->AlarmSubSeconds = subsec;
+ }
+ else
+ {
+ RTC_AlarmStruct->AlarmSubSeconds = 0;
+ }
+}
+
+/**
+ * @brief Enables or disables the RTC Alarm.
+ * @param NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void RTC_AlarmCmd(uint32_t NewState)
+{
+ uint32_t tmp;
+ /* Parameter check */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = RTC->ALARMCTL;
+ if (NewState == ENABLE)
+ {
+ tmp |= (RTC_ALARMCTL_ALARM_EN);
+ }
+ else
+ {
+ tmp &= ~(RTC_ALARMCTL_ALARM_EN);
+ }
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ALARMCTL = tmp;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Enables or disables the RTC alarm accurate.
+ * @param NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void RTC_AlarmAccurateCmd(uint32_t NewState)
+{
+ uint32_t tmp = 0;
+ /* Parameter check */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = RTC->ALARMCTL;
+ if (NewState == ENABLE)
+ {
+ tmp &= ~RTC_ALARMCTL_ALARM_INACCURATE;
+ }
+ else
+ {
+ tmp |= RTC_ALARMCTL_ALARM_INACCURATE;
+ }
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ALARMCTL = tmp;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Enables or disables RTC interrupt.
+ * @param INTMask: can use the '|' operator
+ RTC_INT_ALARM
+ RTC_INT_CEILLE
+ RTC_INT_ACDONE
+ RTC_INT_WKUCNT
+ RTC_INT_MIDNIGHT
+ RTC_INT_WKUHOUR
+ RTC_INT_WKUMIN
+ RTC_INT_WKUSEC
+ RTC_INT_TIMEILLE
+ RTC_INT_ITVSITV
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void RTC_INTConfig(uint32_t INTMask, uint32_t NewState)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ RTC->INTEN |= INTMask;
+ else
+ RTC->INTEN &= ~INTMask;
+}
+
+/**
+ * @brief Gets RTC interrupt status.
+ * @param INTMask:
+ RTC_INTSTS_ALARM
+ RTC_INTSTS_CEILLE
+ RTC_INTSTS_WKUCNT
+ RTC_INTSTS_MIDNIGHT
+ RTC_INTSTS_WKUHOUR
+ RTC_INTSTS_WKUMIN
+ RTC_INTSTS_WKUSEC
+ RTC_INTSTS_TIMEILLE
+ RTC_INTSTS_ITVSITV
+ * @retval 1: status set
+ 0: status reset.
+ */
+uint8_t RTC_GetINTStatus(uint32_t FlagMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_INTFLAGR(FlagMask));
+
+ if (RTC->INTSTS&FlagMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears RTC interrupt status.
+ * @param INTMask: can use the '|' operator
+ RTC_INTSTS_ALARM
+ RTC_INTSTS_CEILLE
+ RTC_INTSTS_WKUCNT
+ RTC_INTSTS_MIDNIGHT
+ RTC_INTSTS_WKUHOUR
+ RTC_INTSTS_WKUMIN
+ RTC_INTSTS_WKUSEC
+ RTC_INTSTS_TIMEILLE
+ RTC_INTSTS_ITVSITV
+ * @retval None
+ */
+void RTC_ClearINTStatus(uint32_t FlagMask)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_INTFLAGC(FlagMask));
+
+ RTC->INTSTS = FlagMask;
+}
+
+/*
+ * @brief Configures Multi-second wake up function.
+ * @param nPeriod��N seconds interval.
+ * @note For the first interrupt generated by calling this function, it may
+ * have < 1 sec error if the new WKUSEC number(parameter) is not equal
+ * to current WKUSEC number. If the new WKUSEC is equal to current WKUSEC,
+ * the first interrupt time may have 0~(WKUSEC +1) variation.
+ * To avoid this problem, set an alternative parameter (like 1) by calling
+ * this function, then set the correct parameter to it.
+ * @retval None
+ */
+void RTC_WKUSecondsConfig(uint8_t nPeriod)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_WKUSEC_PERIOD(nPeriod));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write registers */
+ RTC->WKUSEC = nPeriod - 1;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/*
+ * @brief Configures Multi-minute wake up function.
+ * @param nPeriod��N minute interval.
+ * @note For the first interrupt generated by calling this function, it may
+ * have < 1 min error if the new WKUMIN number(parameter) is not equal
+ * to current WKUMIN number. If the new WKUMIN is equal to current WKUMIN,
+ * the first interrupt time may have 0~(WKUMIN +1) variation.
+ * To avoid this problem, set an alternative parameter (like 1) by calling
+ * this function, then set the correct parameter to it.
+ * @retval None
+ */
+void RTC_WKUMinutesConfig(uint8_t nPeriod)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_WKUMIN_PERIOD(nPeriod));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write registers */
+ RTC->WKUMIN = nPeriod - 1;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/*
+ * @brief Configures Multi-hour wake up function.
+ * @param nPeriod��N hour interval.
+ * @note For the first interrupt generated by calling this function, it may
+ * have < 1 hour error if the new WKUHOUR number(parameter) is not equal
+ * to current WKUHOUR number. If the new WKUHOUR is equal to current WKUHOUR,
+ * the first interrupt time may have 0~(WKUHOUR +1) variation.
+ * To avoid this problem, set an alternative parameter (like 1) by calling
+ * this function, then set the correct parameter to it.
+ * @retval None
+ */
+void RTC_WKUHoursConfig(uint8_t nPeriod)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_WKUHOUR_PERIOD(nPeriod));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write registers */
+ RTC->WKUHOUR = nPeriod - 1;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Configures RTC counter wake up function.
+ * @param nClock:
+ CNTCLK:
+ RTC_WKUCNT_RTCCLK
+ RTC_WKUCNT_2048
+ RTC_WKUCNT_512
+ RTC_WKUCNT_128
+ * @retval None
+ */
+void RTC_WKUCounterConfig(uint32_t nClock,uint32_t CNTCLK)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_WKUCNT_PERIOD(nClock));
+ assert_parameters(IS_RTC_WKUCNT_CNTSEL(CNTCLK));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ /* Write registers */
+ RTC->WKUCNT = (CNTCLK & RTC_WKUCNT_CNTSEL) | ((nClock & RTC_WKUCNT_WKUCNT) -1 );
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Configures RTC ITV wake up function.
+ * @param nType:
+ RTC_ITV_SEC
+ RTC_ITV_MIN
+ RTC_ITV_HOUR
+ RTC_ITV_DAY
+ RTC_ITV_500MS
+ RTC_ITV_250MS
+ RTC_ITV_125MS
+ RTC_ITV_62MS
+ * @retval None
+ */
+void RTC_WAKE_ITV(uint8_t nType)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_ITV(nType));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ITV = nType;
+ RTC->SITV = 0;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Configures RTC SITV wake up function.
+ * @param nPeriod:1~63
+ * @retval None
+ */
+void RTC_WAKE_SITV(uint8_t nPeriod)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_SITV(nPeriod));
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->ITV = RTC_ITV_SITVSEC;
+ RTC->SITV = RTC_SITV_SITVEN | (nPeriod - 1);
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Gets RTC wake-up counter value.
+ * @retval RTC wake-up counter value
+ */
+uint32_t RTC_GetWKUCounterValue(void)
+{
+ return RTC->WKUCNTR;
+}
+
+/**
+ * @brief Configures RTC clock prescaler.
+ * @param[in] Prescaler:
+ * RTC_CLKDIV_1
+ * RTC_CLKDIV_4
+ * @retval None
+ */
+void RTC_PrescalerConfig(uint32_t Prescaler)
+{
+ uint32_t tmp;
+
+ /* Parameter check */
+ assert_parameters(IS_RTC_CLKDIV(Prescaler));
+
+ tmp = RTC->PSCA;
+ tmp &= ~RTC_PSCA_PSCA;
+ tmp |= Prescaler;
+
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+ /* Disable RTC Registers write-protection */
+ RTC_WriteProtection(DISABLE);
+
+ RTC->PSCA = tmp;
+
+ /* Enable RTC Registers write-protection */
+ RTC_WriteProtection(ENABLE);
+ /* Wait until the RTC registers be synchronized */
+ RTC_WaitForSynchro();
+}
+
+/**
+ * @brief Configures RTC PLLDIV clock-source and frequency.
+ * @param Source:
+ RTC_PLLDIVSOURCE_PLLL
+ RTC_PLLDIVSOURCE_PCLK
+ nfrequency(HZ): the frequency of RTC PLLDIV output configuration.
+ * @note Ensure clocks be configured by calling function CLK_ClockConfig(),
+ * get correct PCLK frequency by calling function CLK_GetPCLKFreq().
+ * @retval None
+ */
+void RTC_PLLDIVConfig(uint32_t DIVSource,uint32_t nfrequency)
+{
+ /* Parameter check */
+ assert_parameters(IS_RTC_PLLDIVSOURCE(DIVSource));
+
+ if (DIVSource == RTC_PLLDIVSOURCE_PLLL)
+ {
+ RTC->CTL |= RTC_CTL_RTCPLLCLKSEL;
+ if (nfrequency == 0)
+ {
+ RTC->DIV = RTC_DIV_RTCDIV;
+ }
+ else
+ {
+ RTC->DIV = CLK_GetPLLLFreq()/2/nfrequency - 1;
+ }
+ }
+ else
+ {
+ RTC->CTL &= ~RTC_CTL_RTCPLLCLKSEL;
+ if (nfrequency == 0)
+ {
+ RTC->DIV = RTC_DIV_RTCDIV;
+ }
+ else
+ {
+ RTC->DIV = CLK_GetPLLLFreq()/2/nfrequency - 1;
+ }
+ }
+}
+
+/**
+ * @brief Enables or disables RTC PLLDIV output function.
+ * @param NewState:
+ * ENABLE
+ * DISABLE
+ * @retval None
+ */
+void RTC_PLLDIVOutputCmd(uint8_t NewState)
+{
+ /* Parameter check */
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE) RTC->CTL |= RTC_CTL_RTCPLLOE;
+ else RTC->CTL &= ~RTC_CTL_RTCPLLOE;
+}
+
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_spi.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_spi.c
new file mode 100644
index 0000000000..5da4a1e3d0
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_spi.c
@@ -0,0 +1,433 @@
+/**
+ ******************************************************************************
+ * @file lib_spi.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief SPI library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_spi.h"
+
+#define SPI_MISC_RSTValue (0UL)
+
+/**
+ * @brief Initializes SPI peripheral registers to their default reset values(Reset SPI FIFO when this function is called).
+ * @param SPIx:SPI1~SPI3
+ * @retval None
+ */
+void SPI_DeviceInit(SPI_Type *SPIx)
+{
+ __IO uint32_t dummy_data = 0UL;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+
+ /* Disable SPI */
+ SPIx->CTRL = 0;
+ /* SPI soft reset */
+ SPIx->CTRL |= SPI_CTRL_RST;
+ SPIx->CTRL &= ~SPI_CTRL_RST;
+ /* Clear flag */
+ dummy_data = SPIx->RXDAT;
+ dummy_data += 1;
+ SPIx->TXSTS = SPI_TXSTS_TXIF|SPI_TXSTS_DMATXDONE;
+ SPIx->RXSTS = SPI_RXSTS_RXIF;
+ /* write default values */
+ SPIx->MISC = SPI_MISC_RSTValue;
+}
+
+/**
+ * @brief Fills each SPI_InitType member with its default value.
+ * @param InitStruct: pointer to an SPI_InitType structure which will be initialized.
+ * @retval None
+ */
+void SPI_StructInit(SPI_InitType *InitStruct)
+{
+ /*--------------- Reset SPI init structure parameters values ---------------*/
+ /* Initialize the ClockDivision member */
+ InitStruct->ClockDivision = SPI_CLKDIV_2;
+ /* Initialize the CSNSoft member */
+ InitStruct->CSNSoft = SPI_CSNSOFT_DISABLE;
+ /* Initialize the Mode member */
+ InitStruct->Mode = SPI_MODE_MASTER;
+ /* Initialize the SPH member */
+ InitStruct->SPH = SPI_SPH_0;
+ /* Initialize the SPO member */
+ InitStruct->SPO = SPI_SPO_0;
+ /* Initialize the SWAP member */
+ InitStruct->SWAP = SPI_SWAP_DISABLE;
+}
+
+/**
+ * @brief Initializes SPI.
+ * @param SPIx:SPI1~SPI3
+ InitStruct: SPI configuration.
+ Mode:
+ SPI_MODE_MASTER
+ SPI_MODE_SLAVE
+ SPH:
+ SPI_SPH_0
+ SPI_SPH_1
+ SPO:
+ SPI_SPO_0
+ SPI_SPO_1
+ ClockDivision:
+ SPI_CLKDIV_2
+ SPI_CLKDIV_4
+ SPI_CLKDIV_8
+ SPI_CLKDIV_16
+ SPI_CLKDIV_32
+ SPI_CLKDIV_64
+ SPI_CLKDIV_128
+ CSNSoft:
+ SPI_CSNSOFT_ENABLE
+ SPI_CSNSOFT_DISABLE
+ SWAP:
+ SPI_SWAP_ENABLE
+ SPI_SWAP_DISABLE
+ * @retval None
+ */
+void SPI_Init(SPI_Type *SPIx, SPI_InitType *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_MODE(InitStruct->Mode));
+ assert_parameters(IS_SPI_SPH(InitStruct->SPH));
+ assert_parameters(IS_SPI_SPO(InitStruct->SPO));
+ assert_parameters(IS_SPI_CLKDIV(InitStruct->ClockDivision));
+ assert_parameters(IS_SPI_CSN(InitStruct->CSNSoft));
+ assert_parameters(IS_SPI_SWAP(InitStruct->SWAP));
+
+ tmp = SPIx->CTRL;
+ tmp &= ~(SPI_CTRL_MOD\
+ |SPI_CTRL_SCKPHA\
+ |SPI_CTRL_SCKPOL\
+ |SPI_CTRL_CSGPIO\
+ |SPI_CTRL_SWAP\
+ |SPI_CTRL_SCKSEL);
+ tmp |= (InitStruct->Mode\
+ |InitStruct->SPH\
+ |InitStruct->SPO\
+ |InitStruct->CSNSoft\
+ |InitStruct->SWAP\
+ |InitStruct->ClockDivision);
+ SPIx->CTRL = tmp;
+}
+
+/**
+ * @brief Enables or disables SPI.
+ * @param SPIx:SPI1~SPI3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void SPI_Cmd(SPI_Type *SPIx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ SPIx->CTRL |= SPI_CTRL_EN;
+ else
+ SPIx->CTRL &= ~SPI_CTRL_EN;
+}
+
+/**
+ * @brief Enables or disables SPI interrupt.
+ * @param SPIx:SPI1~SPI3
+ INTMask: can use the '|' operator
+ SPI_INT_TX
+ SPI_INT_RX
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void SPI_INTConfig(SPI_Type *SPIx, uint32_t INTMask, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (INTMask & 0x80000000)
+ {
+ INTMask &= 0xFFFF;
+ tmp = SPIx->TXSTS;
+ tmp &= ~SPI_TXSTS_TXIF;
+ if (NewState == ENABLE)
+ {
+ tmp |= INTMask;
+ SPIx->TXSTS = tmp;
+ }
+ else
+ {
+ tmp &= ~INTMask;
+ SPIx->TXSTS = tmp;
+ }
+ }
+ if (INTMask & 0x40000000)
+ {
+ INTMask &= 0xFFFF;
+ tmp = SPIx->RXSTS;
+ tmp &= ~SPI_RXSTS_RXIF;
+ if (NewState == ENABLE)
+ {
+ tmp |= INTMask;
+ SPIx->RXSTS = tmp;
+ }
+ else
+ {
+ tmp &= ~INTMask;
+ SPIx->RXSTS = tmp;
+ }
+ }
+}
+
+/**
+ * @brief Gets SPI status flag.
+ * @param SPIx:SPI1~SPI3
+ Status:
+ SPI_STS_TXIF
+ SPI_STS_TXEMPTY
+ SPI_STS_TXFUR
+ SPI_STS_DMATXDONE
+ SPI_STS_RXIF
+ SPI_STS_RXFULL
+ SPI_STS_RXFOV
+ SPI_STS_BSY
+ SPI_STS_RFF
+ SPI_STS_RNE
+ SPI_STS_TNF
+ SPI_STS_TFE
+ * @retval Flag status.
+ */
+uint8_t SPI_GetStatus(SPI_Type *SPIx, uint32_t Status)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_STSR(Status));
+
+ if ((Status&0xE0000000) == 0x80000000)
+ {
+ if (Status&SPIx->TXSTS)
+ return 1;
+ else
+ return 0;
+ }
+ else if ((Status&0xE0000000) == 0x40000000)
+ {
+ if (Status&SPIx->RXSTS)
+ return 1;
+ else
+ return 0;
+ }
+ else
+ {
+ if (Status&SPIx->MISC)
+ return 1;
+ else
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears SPI status flag.
+ * @param SPIx:SPI1~SPI3
+ Status: can use the '|' operator
+ SPI_STS_TXIF
+ SPI_STS_RXIF
+ SPI_STS_DMATXDONE
+ * @retval None
+ */
+void SPI_ClearStatus(SPI_Type *SPIx, uint32_t Status)
+{
+ uint32_t tmp = 0UL;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_STSC(Status));
+
+ if (Status & 0x80000000)
+ {
+ Status &= 0xFFFF;
+ tmp = SPIx->TXSTS;
+ tmp &= ~(SPI_TXSTS_DMATXDONE | SPI_TXSTS_TXIF);
+ tmp |= Status;
+ SPIx->TXSTS = tmp;
+ }
+ if (Status & 0x40000000)
+ {
+ Status &= 0xFFFF;
+ SPIx->RXSTS |= Status;
+ }
+}
+
+/**
+ * @brief Loads send data register.
+ * @param SPIx:SPI1~SPI3
+ ch: data write to send data register
+ * @retval None
+ */
+void SPI_SendData(SPI_Type *SPIx, uint8_t ch)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+
+ SPIx->TXDAT = ch;
+}
+
+/**
+ * @brief Reads receive data register.
+ * @param SPIx:SPI1~SPI3
+ * @retval receive data value
+ */
+uint8_t SPI_ReceiveData(SPI_Type *SPIx)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+
+ return (SPIx->RXDAT);
+}
+
+/**
+ * @brief Configures transmit fifo level.
+ * @param SPIx:SPI1~SPI3
+ FIFOLevel:
+ SPI_TXFLEV_0
+ SPI_TXFLEV_1
+ SPI_TXFLEV_2
+ SPI_TXFLEV_3
+ SPI_TXFLEV_4
+ SPI_TXFLEV_5
+ SPI_TXFLEV_6
+ SPI_TXFLEV_7
+ * @retval None
+ */
+void SPI_TransmitFIFOLevelConfig(SPI_Type *SPIx, uint32_t FIFOLevel)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_TXFLEV(FIFOLevel));
+
+ tmp = SPIx->TXSTS;
+ tmp &= ~(SPI_TXSTS_TXFLEV | SPI_TXSTS_TXIF|SPI_TXSTS_DMATXDONE);
+ tmp |= FIFOLevel;
+ SPIx->TXSTS = tmp;
+}
+
+/**
+ * @brief Configures receive fifo level.
+ * @param SPIx:SPI1~SPI3
+ FIFOLevel:
+ SPI_RXFLEV_0
+ SPI_RXFLEV_1
+ SPI_RXFLEV_2
+ SPI_RXFLEV_3
+ SPI_RXFLEV_4
+ SPI_RXFLEV_5
+ SPI_RXFLEV_6
+ SPI_RXFLEV_7
+ * @retval None
+ */
+void SPI_ReceiveFIFOLevelConfig(SPI_Type *SPIx, uint32_t FIFOLevel)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_SPI_RXFLEV(FIFOLevel));
+
+ tmp = SPIx->RXSTS;
+ tmp &= ~(SPI_RXSTS_RXFLEV | SPI_RXSTS_RXIF);
+ tmp |= FIFOLevel;
+ SPIx->RXSTS = tmp;
+}
+
+/**
+ * @brief Gets transmit fifo level.
+ * @param SPIx:SPI1~SPI3
+ * @retval Transmit fifo level.
+ */
+uint8_t SPI_GetTransmitFIFOLevel(SPI_Type *SPIx)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+
+ return (SPIx->TXSTS & SPI_TXSTS_TXFFLAG);
+}
+
+/**
+ * @brief Gets receive fifo level.
+ * @param SPIx:SPI1~SPI3
+ * @retval Receive fifo level.
+ */
+uint8_t SPI_GetReceiveFIFOLevel(SPI_Type *SPIx)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+
+ return (SPIx->RXSTS & SPI_RXSTS_RXFFLAG);
+}
+
+/**
+ * @brief Enables or disables FIFO smart mode.
+ * @param SPIx:SPI1~SPI3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void SPI_SmartModeCmd(SPI_Type *SPIx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ SPIx->MISC |= SPI_MISC_SMART;
+ }
+ else
+ {
+ SPIx->MISC &= ~SPI_MISC_SMART;
+ }
+}
+
+/**
+ * @brief Enables or disables FIFO over write mode.
+ * @param SPIx:SPI1~SPI3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void SPI_OverWriteModeCmd(SPI_Type *SPIx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_SPI_ALL_INSTANCE(SPIx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ SPIx->MISC |= SPI_MISC_OVER;
+ }
+ else
+ {
+ SPIx->MISC &= ~SPI_MISC_OVER;
+ }
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_tmr.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_tmr.c
new file mode 100644
index 0000000000..9c1f0e401c
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_tmr.c
@@ -0,0 +1,178 @@
+/**
+ ******************************************************************************
+ * @file lib_tmr.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief Timer library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_tmr.h"
+
+#define TMR_CTRL_RSTValue (0UL)
+#define TMR_VALUE_RSTValue (0UL)
+#define TMR_RELOAD_RSTValue (0UL)
+
+/**
+ * @brief Initializes the timer peripheral registers to their default reset values.
+ * @param TMRx:
+ TMR0 ~ TMR3
+ * @retval None
+ */
+void TMR_DeInit(TMR_Type *TMRx)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+
+ /* Disable timer */
+ TMRx->CTRL &= ~TMR_CTRL_EN;
+ /* clear interrupt status */
+ TMRx->INTSTS = TMR_INTSTS_INTSTS;
+ /* write default reset values */
+ TMRx->CTRL = TMR_CTRL_RSTValue;
+ TMRx->RELOAD = TMR_RELOAD_RSTValue;
+ TMRx->VALUE = TMR_VALUE_RSTValue;
+}
+
+/**
+ * @brief Initializes timer.
+ * @param TMRx:
+ TMR0 ~ TMR3
+ InitStruct: Timer configuration.
+ ClockSource:
+ TMR_CLKSRC_INTERNAL
+ TMR_CLKSRC_EXTERNAL
+ EXTGT:
+ TMR_EXTGT_DISABLE
+ TMR_EXTGT_ENABLE
+ Period: the auto-reload value
+ * @retval None
+ */
+void TMR_Init(TMR_Type *TMRx, TMR_InitType *InitStruct)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+ assert_parameters(IS_TMR_CLKSRC(InitStruct->ClockSource));
+ assert_parameters(IS_TMR_EXTGT(InitStruct->EXTGT));
+
+ tmp = TMRx->CTRL;
+ tmp &= ~(TMR_CTRL_EXTCLK|TMR_CTRL_EXTEN);
+ tmp |= (InitStruct->ClockSource|InitStruct->EXTGT);
+ TMRx->CTRL = tmp;
+ TMRx->VALUE = InitStruct->Period;
+ TMRx->RELOAD = InitStruct->Period;
+}
+
+/**
+ * @brief Fills each TMR_InitType member with its default value.
+ * @param InitStruct: pointer to an TMR_InitType structure which will be initialized.
+ * @retval None
+ */
+void TMR_StructInit(TMR_InitType *InitStruct)
+{
+ /*--------------- Reset TMR init structure parameters values ---------------*/
+ /* Initialize the ClockSource member */
+ InitStruct->ClockSource = TMR_CLKSRC_INTERNAL;
+ /* Initialize the EXTGT member */
+ InitStruct->EXTGT = TMR_EXTGT_DISABLE;
+ /* Initialize the Period member */
+ InitStruct->Period = 0;
+}
+
+/**
+ * @brief Enables or disables timer interrupt.
+ * @param TMRx:
+ TMR0~TMR3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void TMR_INTConfig(TMR_Type *TMRx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ TMRx->CTRL |= TMR_CTRL_INTEN;
+ }
+ else
+ {
+ TMRx->CTRL &= ~TMR_CTRL_INTEN;
+ }
+}
+
+/**
+ * @brief Gets timer interrupt status.
+ * @param TMRx:
+ TMR0~TMR3
+ * @retval Interrupt status.
+ */
+uint8_t TMR_GetINTStatus(TMR_Type *TMRx)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+
+ if (TMRx->INTSTS & TMR_INTSTS_INTSTS)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears timer interrupt status bit.
+ * @param TMRx:
+ TMR0~TMR3
+ * @retval None.
+ */
+void TMR_ClearINTStatus(TMR_Type *TMRx)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+
+ TMRx->INTSTS = TMR_INTSTS_INTSTS;
+}
+
+/**
+ * @brief Enables or disables timer.
+ * @param TMRx:
+ TMR0~TMR3
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void TMR_Cmd(TMR_Type *TMRx, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ TMRx->CTRL |= TMR_CTRL_EN;
+ else
+ TMRx->CTRL &= ~TMR_CTRL_EN;
+}
+
+/**
+ * @brief Gets timer current value.
+ * @param TMRx:
+ TMR0~TMR3
+ * @retval timer value.
+ */
+uint32_t TMR_GetCurrentValue(TMR_Type *TMRx)
+{
+ /* Check parameters */
+ assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
+
+ return (TMRx->VALUE);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_u32k.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_u32k.c
new file mode 100644
index 0000000000..825e144d77
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_u32k.c
@@ -0,0 +1,309 @@
+/**
+ ******************************************************************************
+ * @file lib_u32k.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief UART 32K library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_u32k.h"
+
+#define U32K_STS_Msk (0x7UL)
+#define U32K_CTRL0_RSTValue (0UL)
+#define U32K_CTRL1_RSTValue (0UL)
+#define U32K_PHASE_RSTValue (0x4B00UL)
+
+/**
+ * @brief Initializes the U32Kx peripheral registers to their default reset values.
+ * @param U32Kx: U32K0~U32K1
+ * @retval None
+ */
+void U32K_DeInit(U32K_Type *U32Kx)
+{
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+
+ /* Disable U32K */
+ U32Kx->CTRL0 &= ~U32K_CTRL0_EN;
+ /* clear interrupt status */
+ U32Kx->STS = U32K_STS_Msk;
+ /* write default reset values */
+ U32Kx->CTRL0 = U32K_CTRL0_RSTValue;
+ U32Kx->CTRL1 = U32K_CTRL1_RSTValue;
+ U32Kx->BAUDDIV = U32K_PHASE_RSTValue;
+}
+
+/**
+ * @brief Initializes U32K.
+ * @param U32Kx:
+ U32K0~U32K1
+ InitStruct: U32K configuration
+ Debsel:
+ U32K_DEBSEL_0
+ U32K_DEBSEL_1
+ U32K_DEBSEL_2
+ U32K_DEBSEL_3
+ Parity:
+ U32K_PARITY_EVEN
+ U32K_PARITY_ODD
+ U32K_PARITY_0
+ U32K_PARITY_1
+ U32K_PARITY_NONE
+ FirstBit:
+ U32K_FIRSTBIT_LSB
+ U32K_FIRSTBIT_MSB
+ AutoCal:
+ U32K_AUTOCAL_ON
+ U32K_AUTOCAL_OFF
+ LineSel:
+ U32K_LINE_RX0
+ U32K_LINE_RX1
+ U32K_LINE_RX2
+ U32K_LINE_RX3
+ Baudrate: Baudrate value, 300UL ~ 14400UL
+ * @retval None
+ */
+void U32K_Init(U32K_Type *U32Kx, U32K_InitType *InitStruct)
+{
+ uint32_t tmp_reg1, tmp_reg2;
+
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_DEBSEL(InitStruct->Debsel));
+ assert_parameters(IS_U32K_PARITY(InitStruct->Parity));
+ assert_parameters(IS_U32K_FIRSTBIT(InitStruct->FirstBit));
+ assert_parameters(IS_U32K_AUTOCAL(InitStruct->AutoCal));
+ assert_parameters(IS_U32K_LINE(InitStruct->LineSel));
+ assert_parameters(IS_U32K_BAUDRATE(InitStruct->Baudrate));
+
+ tmp_reg1 = U32Kx->CTRL0;
+ tmp_reg1 &= ~(U32K_CTRL0_DEBSEL\
+ |U32K_CTRL0_PMODE\
+ |U32K_CTRL0_MSB\
+ |U32K_CTRL0_ACOFF);
+ tmp_reg1 |= (InitStruct->Debsel\
+ |InitStruct->Parity\
+ |InitStruct->FirstBit\
+ |InitStruct->AutoCal);
+ U32Kx->CTRL0 = tmp_reg1;
+ if ((RTC->PSCA & RTC_PSCA_PSCA) == RTC_PSCA_PSCA_0) //RTCCLK 32768Hz
+ U32Kx->BAUDDIV = 65536*InitStruct->Baudrate/32768;
+ else if ((RTC->PSCA & RTC_PSCA_PSCA) == RTC_PSCA_PSCA_1) //RTCCLK 8192Hz
+ U32Kx->BAUDDIV = 65536*InitStruct->Baudrate/8192;
+ else
+ assert_parameters(0);
+
+ tmp_reg2 = U32Kx->CTRL1;
+ tmp_reg2 &= ~(U32K_CTRL1_RXSEL);
+ tmp_reg2 |= (InitStruct->LineSel);
+ U32Kx->CTRL1 = tmp_reg2;
+}
+
+/**
+ * @brief Fills each U32K_InitType member with its default value.
+ * @param InitStruct: pointer to an U32K_InitType structure which will be initialized.
+ * @retval None
+ */
+void U32K_StructInit(U32K_InitType *InitStruct)
+{
+ /*-------------- Reset U32K init structure parameters values ---------------*/
+ /* Initialize the AutoCal member */
+ InitStruct->AutoCal = U32K_AUTOCAL_ON;
+ /* Initialize the Baudrate member */
+ InitStruct->Baudrate = 9600;
+ /* Initialize the Debsel member */
+ InitStruct->Debsel = U32K_DEBSEL_0;
+ /* Initialize the FirstBit member */
+ InitStruct->FirstBit = U32K_FIRSTBIT_LSB;
+ /* Initialize the LineSel member */
+ InitStruct->LineSel = U32K_LINE_RX0;
+ /* Initialize the Parity member */
+ InitStruct->Parity = U32K_PARITY_NONE;
+}
+
+/**
+ * @brief Enables or disables U32K interrupt.
+ * @param U32Kx:
+ U32K0~U32K1
+ INTMask: can use the '|' operator
+ U32K_INT_RXOV
+ U32K_INT_RXPE
+ U32K_INT_RX
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void U32K_INTConfig(U32K_Type *U32Kx, uint32_t INTMask, uint8_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = U32Kx->CTRL1;
+ tmp &= ~INTMask;
+ if (NewState == ENABLE)
+ {
+ tmp |= INTMask;
+ }
+ U32Kx->CTRL1 = tmp;
+}
+
+/**
+ * @brief Gets interrupt flag status.
+ * @param U32Kx:
+ U32K0~U32K1
+ INTMask:
+ U32K_INTSTS_RXOV
+ U32K_INTSTS_RXPE
+ U32K_INTSTS_RX
+ * @retval Flag status
+ */
+uint8_t U32K_GetINTStatus(U32K_Type *U32Kx, uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_INTFLAGR(INTMask));
+
+ if (U32Kx->STS&INTMask)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @brief Clears flag status.
+ * @param U32Kx:
+ U32K0~U32K1
+ INTMask: can use the '|' operator
+ U32K_INTSTS_RXOV
+ U32K_INTSTS_RXPE
+ U32K_INTSTS_RX
+ * @retval None
+ */
+void U32K_ClearINTStatus(U32K_Type *U32Kx, uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_INTFLAGC(INTMask));
+
+ U32Kx->STS = INTMask;
+}
+
+/**
+ * @brief Reads receive data register.
+ * @param U32Kx:
+ U32K0~U32K1
+ * @retval Receive data value
+ */
+uint8_t U32K_ReceiveData(U32K_Type *U32Kx)
+{
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+
+ return (U32Kx->DATA);
+}
+
+/**
+ * @brief Configures U32K baudrate.
+ * @param U32Kx: U32K0~U32K1
+ BaudRate: Baudrate value
+ * @retval None
+ */
+void U32K_BaudrateConfig(U32K_Type *U32Kx, uint32_t BaudRate)
+{
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_BAUDRATE(BaudRate));
+
+ if ((RTC->PSCA & RTC_PSCA_PSCA) == RTC_PSCA_PSCA_0) //RTCCLK 32768Hz
+ U32Kx->BAUDDIV = 65536*BaudRate/32768;
+ else if ((RTC->PSCA & RTC_PSCA_PSCA) == RTC_PSCA_PSCA_1) //RTCCLK 8192Hz
+ U32Kx->BAUDDIV = 65536*BaudRate/8192;
+ else
+ assert_parameters(0);
+}
+
+/**
+ * @brief Enables or disables U32K controlller.
+ * @param U32Kx:
+ U32K0~U32K1
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void U32K_Cmd(U32K_Type *U32Kx, uint32_t NewState)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ tmp = U32Kx->CTRL0;
+ tmp &= ~(U32K_CTRL0_EN);
+ if (NewState == ENABLE)
+ {
+ tmp |= U32K_CTRL0_EN;
+ }
+ U32Kx->CTRL0 = tmp;
+}
+
+/**
+ * @brief Configures U32K receive line.
+ * @param U32Kx:
+ U32K0~U32K1
+ Line:
+ U32K_LINE_RX0
+ U32K_LINE_RX1
+ U32K_LINE_RX2
+ U32K_LINE_RX3
+ * @retval None
+ */
+void U32K_LineConfig(U32K_Type *U32Kx, uint32_t Line)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_LINE(Line));
+
+ tmp = U32Kx->CTRL1;
+ tmp &= ~U32K_CTRL1_RXSEL_Msk;
+ tmp |= Line;
+
+ U32Kx->CTRL1 = tmp;
+}
+
+/**
+ * @brief Configures Wake-up mode.
+ * @param U32Kx:
+ U32K0~U32K1
+ WKUMode:
+ U32K_WKUMOD_RX
+ U32K_WKUMOD_PC
+ * @retval None
+ */
+void U32K_WKUModeConfig(U32K_Type *U32Kx, uint32_t WKUMode)
+{
+ uint32_t tmp;
+
+ /* Check parameters */
+ assert_parameters(IS_U32K_ALL_INSTANCE(U32Kx));
+ assert_parameters(IS_U32K_WKUMODE(WKUMode));
+
+ tmp = U32Kx->CTRL0;
+ tmp &= ~U32K_CTRL0_WKUMODE_Msk;
+ tmp |= WKUMode;
+ U32Kx->CTRL0 = tmp;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_uart.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_uart.c
new file mode 100644
index 0000000000..3af83facdc
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_uart.c
@@ -0,0 +1,372 @@
+/**
+ ******************************************************************************
+ * @file lib_uart.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief UART library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_uart.h"
+#include "lib_clk.h"
+
+#define UART_STATE_RCMsk (0xBCUL)
+#define UART_INTSTS_RCMsk (0x3FUL)
+#define UART_BAUDDIV_RSTValue (0UL)
+#define UART_CTRL_RSTValue (0UL)
+#define UART_CTRL2_RSTValue (0UL)
+
+/**
+ * @brief Iinitializes the UARTx peripheral registers to their default reset
+ values.
+ * @param UARTx: UART0~UART5
+ * @retval None
+ */
+void UART_DeInit(UART_Type *UARTx)
+{
+ __IO uint32_t dummy_data = 0UL;
+
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+
+ /* read data, clear RXFULL flag */
+ dummy_data = UARTx->DATA;
+ dummy_data += 1;
+
+ UARTx->INTSTS = UART_INTSTS_RCMsk;
+ UARTx->STATE = UART_STATE_RCMsk;
+ UARTx->BAUDDIV = UART_BAUDDIV_RSTValue;
+ UARTx->CTRL2 = UART_CTRL2_RSTValue;
+ UARTx->CTRL = UART_CTRL_RSTValue;
+}
+
+/**
+ * @brief Iinitializes UART.
+ * @param UARTx: UART0~UART5
+ InitStruct:UART configuration.
+ Mode: (between UART_MODE_RX and UART_MODE_TX, can use the '|' operator)
+ UART_MODE_RX
+ UART_MODE_TX
+ UART_MODE_OFF
+ Parity:
+ UART_PARITY_EVEN
+ UART_PARITY_ODD
+ UART_PARITY_0
+ UART_PARITY_1
+ UART_PARITY_NONE
+ FirstBit:
+ UART_FIRSTBIT_LSB
+ UART_FIRSTBIT_MSB
+ Baudrate: Baudrate value, 300UL ~ 819200UL
+ * @retval None
+ */
+void UART_Init(UART_Type *UARTx, UART_InitType *InitStruct)
+{
+ uint32_t pclk;
+ uint32_t div;
+ uint32_t tmp_reg1, tmp_reg2;
+
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_MODE(InitStruct->Mode));
+ assert_parameters(IS_UART_PARITY(InitStruct->Parity));
+ assert_parameters(IS_UART_FIRSTBIT(InitStruct->FirstBit));
+ assert_parameters(IS_UART_BAUDRATE(InitStruct->Baudrate));
+
+ tmp_reg1 = UARTx->CTRL;
+ tmp_reg1 &= ~(UART_CTRL_RXEN_Msk\
+ |UART_CTRL_TXEN_Msk);
+ tmp_reg1 |= (InitStruct->Mode);
+
+ tmp_reg2 = UARTx->CTRL2;
+ tmp_reg2 &= ~(UART_CTRL2_MSB_Msk \
+ |UART_CTRL2_PMODE_Msk);
+ tmp_reg2 |= (InitStruct->Parity\
+ |InitStruct->FirstBit);
+ UARTx->CTRL2 = tmp_reg2;
+
+ pclk = CLK_GetPCLKFreq();
+ div = pclk/InitStruct->Baudrate;
+
+ if ((pclk%InitStruct->Baudrate) > (InitStruct->Baudrate/2))
+ {
+ div++;
+ }
+
+ UARTx->BAUDDIV = div;
+ UARTx->CTRL = tmp_reg1;
+}
+
+/**
+ * @brief Fills each UART_InitType member with its default value.
+ * @param InitStruct: pointer to an UART_InitType structure which will be initialized.
+ * @retval None
+ */
+void UART_StructInit(UART_InitType *InitStruct)
+{
+ /*-------------- Reset UART init structure parameters values ---------------*/
+ /* Initialize the Baudrate member */
+ InitStruct->Baudrate = 9600;
+ /* Initialize the FirstBit member */
+ InitStruct->FirstBit = UART_FIRSTBIT_LSB;
+ /* Initialize the Mode member */
+ InitStruct->Mode = UART_MODE_OFF;
+ /* Initialize the Parity member */
+ InitStruct->Parity = UART_PARITY_NONE;
+}
+
+/**
+ * @brief Gets peripheral flag.
+ * @param UARTx: UART0~UART5
+ FlagMask: flag to get.
+ --UART_FLAG_DMATXDONE
+ --UART_FLAG_RXPARITY
+ --UART_FLAG_TXDONE
+ --UART_FLAG_RXPE
+ --UART_FLAG_RXOV
+ --UART_FLAG_TXOV
+ --UART_FLAG_RXFULL
+ * @retval 1:flag set
+ 0:flag reset
+ */
+uint8_t UART_GetFlag(UART_Type *UARTx, uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_FLAGR(FlagMask));
+
+ if (UARTx->STATE&FlagMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears peripheral flag.
+ * @param UARTx: UART0~UART5
+ FlagMask: status to clear, can use the '|' operator.
+ --UART_FLAG_DMATXDONE
+ --UART_FLAG_TXDONE
+ --UART_FLAG_RXPE
+ --UART_FLAG_RXOV
+ --UART_FLAG_TXOV
+ * @retval None
+ */
+void UART_ClearFlag(UART_Type *UARTx, uint32_t FlagMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_FLAGC(FlagMask));
+
+ UARTx->STATE = FlagMask;
+}
+
+/**
+ * @brief Enables or disables the specified UART interrupts.
+ * @param UARTx: UART0~UART5
+ INTMask: can use the '|' operator.
+ --UART_INT_TXDONE
+ --UART_INT_RXPE
+ --UART_INT_RXOV
+ --UART_INT_TXOV
+ --UART_INT_RX
+ NewState:New status of interrupt mask.
+ * @retval None
+ */
+void UART_INTConfig(UART_Type *UARTx, uint32_t INTMask, uint8_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_INT(INTMask));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ UARTx->CTRL |= INTMask;
+ }
+ else
+ {
+ UARTx->CTRL &= ~INTMask;
+ }
+}
+
+/**
+ * @brief Gets interrupt status.
+ * @param UARTx: UART0~UART5
+ INTMask: status to get.
+ --UART_INTSTS_TXDONE
+ --UART_INTSTS_RXPE
+ --UART_INTSTS_RXOV
+ --UART_INTSTS_TXOV
+ --UART_INTSTS_RX
+ * @retval 1:status set
+ 0:status reset
+ */
+uint8_t UART_GetINTStatus(UART_Type *UARTx, uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_INTFLAGR(INTMask));
+
+ if (UARTx->INTSTS&INTMask)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/**
+ * @brief Clears interrupt status.
+ * @param UARTx: UART0~UART5
+ INTMask: status to clear, can use the '|' operator.
+ --UART_INTSTS_TXDONE
+ --UART_INTSTS_RXPE
+ --UART_INTSTS_RXOV
+ --UART_INTSTS_TXOV
+ --UART_INTSTS_RX
+ * @retval None
+ */
+void UART_ClearINTStatus(UART_Type *UARTx, uint32_t INTMask)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_INTFLAGC(INTMask));
+
+ UARTx->INTSTS = INTMask;
+}
+
+/**
+ * @brief Loads send data register.
+ * @param UARTx: UART0~USART5
+ ch: data to send.
+ * @retval None
+ */
+void UART_SendData(UART_Type *UARTx, uint8_t ch)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+
+ UARTx->DATA = ch;
+}
+
+/**
+ * @brief Reads receive data register.
+ * @param UARTx: UART0~UART5
+ * @retval The received data.
+ */
+uint8_t UART_ReceiveData(UART_Type *UARTx)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+
+ return UARTx->DATA;
+}
+
+/**
+ * @brief Configures UART baudrate.
+ * @param UARTx: UART0~UART5
+ BaudRate: Baudrate value
+ * @retval None
+ */
+void UART_BaudrateConfig(UART_Type *UARTx, uint32_t BaudRate)
+{
+ uint32_t pclk;
+ uint32_t div;
+
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_BAUDRATE(BaudRate));
+
+ pclk = CLK_GetPCLKFreq();
+ div = pclk/BaudRate;
+ if ((pclk%BaudRate) > (BaudRate/2))
+ {
+ div++;
+ }
+
+ UARTx->BAUDDIV = div;
+}
+
+/**
+ * @brief Enables or disables UART Transmitter/Receiver.
+ * @param UARTx: UART0~UART5
+ Mode:
+ UART_MODE_RX
+ UART_MODE_TX
+ NewState:
+ ENABLE
+ DISABLE
+ * @retval None
+ */
+void UART_Cmd(UART_Type *UARTx, uint32_t Mode, uint32_t NewState)
+{
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+ assert_parameters(IS_UART_MODE(Mode));
+ assert_parameters(IS_FUNCTIONAL_STATE(NewState));
+
+ if (NewState == ENABLE)
+ {
+ UARTx->CTRL |= Mode;
+ }
+ else
+ {
+ UARTx->CTRL &= ~Mode;
+ }
+}
+
+/**
+ * @brief Gets UART configure information.
+ * @param[in] UARTx: UART0~UART5
+ * @param[out] ConfigInfo: The pointer of UART configuration.
+ * @retval None
+ */
+void UART_GetConfigINFO(UART_Type *UARTx, UART_ConfigINFOType *ConfigInfo)
+{
+ uint32_t tmp1, tmp2, tmp3;
+ uint32_t pclk;
+
+ /* Check parameters */
+ assert_parameters(IS_UART_ALL_INSTANCE(UARTx));
+
+ tmp1 = UARTx->CTRL;
+ tmp2 = UARTx->BAUDDIV;
+ pclk = CLK_GetPCLKFreq();
+ tmp3 = UARTx->CTRL2;
+
+ /* Mode_Transmit */
+ if (tmp1 & UART_CTRL_TXEN_Msk)
+ ConfigInfo->Mode_Transmit = 1;
+ else
+ ConfigInfo->Mode_Transmit = 0;
+
+ /* Mode_Receive */
+ if (tmp1 & UART_CTRL_RXEN_Msk)
+ ConfigInfo->Mode_Receive = 1;
+ else
+ ConfigInfo->Mode_Receive = 0;
+
+ /* Baudrate */
+ ConfigInfo->Baudrate = pclk / tmp2;
+
+ /* LSB/MSB */
+ if (tmp3 & UART_CTRL2_MSB_Msk)
+ ConfigInfo->FirstBit = 1;
+ else
+ ConfigInfo->FirstBit = 0;
+
+ /* Parity */
+ ConfigInfo->Parity = (tmp3 & UART_CTRL2_PMODE) >> UART_CTRL2_PMODE_Pos;
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_version.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_version.c
new file mode 100644
index 0000000000..2c723f6262
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_version.c
@@ -0,0 +1,25 @@
+/**
+*******************************************************************************
+ * @file lib_version.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief Version library.
+*******************************************************************************/
+#include "lib_version.h"
+
+#define Target_DriveVersion DRIVER_VERSION(1, 1)
+
+/**
+ * @brief Gets Target driver's current version.
+ * @param None
+ * @retval Version value
+ * Bit[15:8] : Major version
+ * Bit[7:0] : Minor version
+ */
+uint16_t Target_GetDriveVersion(void)
+{
+ return (Target_DriveVersion);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_wdt.c b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_wdt.c
new file mode 100644
index 0000000000..00e47707be
--- /dev/null
+++ b/bsp/v85xxp/Libraries/VangoV85xxP_standard_peripheral/Source/lib_wdt.c
@@ -0,0 +1,88 @@
+/**
+ ******************************************************************************
+ * @file lib_wdt.c
+ * @author Application Team
+ * @version V1.1.0
+ * @date 2019-10-28
+ * @brief WDT library.
+ ******************************************************************************
+ * @attention
+ *
+ ******************************************************************************
+ */
+#include "lib_wdt.h"
+
+#define WDTPASS_KEY 0xAA5555AA
+#define WDTCLR_KEY 0x55AAAA55
+
+/**
+ * @brief Enables WDT timer.
+ * @param None
+ * @retval None
+ */
+void WDT_Enable(void)
+{
+ PMU->WDTPASS = WDTPASS_KEY;
+ PMU->WDTEN |= PMU_WDTEN_WDTEN;
+
+ PMU->WDTPASS = WDTPASS_KEY;
+ PMU->WDTEN |= PMU_WDTEN_WDTEN;
+}
+
+/**
+ * @brief Disables WDT timer.
+ * @param None
+ * @retval None
+ */
+void WDT_Disable(void)
+{
+ PMU->WDTPASS = WDTPASS_KEY;
+ PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
+
+ PMU->WDTPASS = WDTPASS_KEY;
+ PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
+}
+
+/**
+ * @brief Clears WDT counter.
+ * @param None
+ * @retval None
+ */
+void WDT_Clear(void)
+{
+ PMU->WDTCLR = WDTCLR_KEY;
+}
+
+/**
+ * @brief Configures WDT counting period.
+ * @param counting period:
+ WDT_2_SECS
+ WDT_4_SECS
+ WDT_8_SECS
+ WDT_16_SECS
+ * @retval None
+ */
+void WDT_SetPeriod(uint32_t period)
+{
+ uint32_t tmp;
+
+ assert_parameters(IS_WDT_PERIOD(period));
+
+ tmp = PMU->WDTEN;
+ tmp &= ~PMU_WDTEN_WDTSEL;
+ tmp |= period;
+ PMU->WDTPASS = WDTPASS_KEY;
+ PMU->WDTEN = tmp;
+}
+
+/**
+ * @brief Gets WDT counter value.
+ * @param None
+ * @retval current counter value.
+ */
+uint16_t WDT_GetCounterValue(void)
+{
+ return (PMU->WDTCLR & PMU_WDTCLR_WDTCNT);
+}
+
+/*********************************** END OF FILE ******************************/
diff --git a/bsp/v85xxp/README.md b/bsp/v85xxp/README.md
new file mode 100644
index 0000000000..f22b7e4f42
--- /dev/null
+++ b/bsp/v85xxp/README.md
@@ -0,0 +1,77 @@
+# VANGOV85XXP-EVAL
+
+## 简介
+
+VANGOV85XXP-EVAL是-杭州万高科技推出的一款基于V85XXP的评估板,板载资源主要如下:
+
+| 硬件 | 描述 |
+| --------- | ------------- |
+| 芯片型号 | V8530P |
+| CPU | ARM Cortex M0 |
+| 主频 | 26M |
+| 片内SRAM | 64K |
+| 片内FLASH | 512K |
+
+## 数据手册
+
+[产品页面](http://www.vangotech.com/product.php?areas=0&bigs=1&smalls=4&id=65)
+[datasheet](http://www.vangotech.com/uploadpic/162798394156.pdf)
+
+## 编译说明
+
+VANGOV85XXP-EVAL板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以下是具体版本信息:
+
+| IDE/编译器 | 已测试版本 |
+| ---------- | ---------------------------- |
+| GCC |gcc version 6.2.1 20161205 (release) |
+
+## 烧写及执行
+
+供电方式:开发板使用 USB TypeA 接口或者 DC-005 连接器提供 5V 电源。
+
+下载程序:下载程序到开发板需要一套 JLink 或者使用 SD612 工具。
+
+串口连接:使用串口线连接到COM1(UART0),或者使用USB转TTL模块连接PA9(MCU TX)和PA10(MCU RX)。
+
+### 运行结果
+
+如果编译 & 烧写无误,当复位设备后,会在串口上看到RT-Thread的启动logo信息:
+
+```bash
+ \ | /
+- RT - Thread Operating System
+ / | \ 4.0.3 build Jan 4 2021
+ 2006 - 2021 Copyright by rt-thread team
+msh />
+```
+## 驱动支持情况及计划
+
+| 驱动 | 支持情况 | 备注 |
+| --------- | -------- | :------------------------: |
+| UART | 支持 | UART0~5 |
+| GPIO | 支持 | GPIOA~F |
+| ADC | 未支持 | ADC0~7 |
+| HWTIMER | 未支持 | TIMER0~3 |
+| RTC | 未支持 | RTC |
+| WDT | 未支持 | Free watchdog timer |
+| IIC | 未支持 | I2C0 |
+| SPI | 未支持 | SPI0~1 |
+| LCD | 未支持 | |
+| SDRAM | 未支持 | |
+| SPI FLASH | 未支持 | |
+
+### IO在板级支持包中的映射情况
+
+| IO号 | 板级包中的定义 |
+| ---- | -------------- |
+| PC0 | LED1 |
+| PC2 | LED2 |
+| PE0 | LED3 |
+| PE1 | LED4 |
+| PA0 | KEY1 |
+| PC13 | KEY2 |
+| PB14 | KEY3 |
+
+## 联系人信息
+
+维护人:[zhuxw-z](https://github.com/zhuxw-z)
diff --git a/bsp/v85xxp/SConscript b/bsp/v85xxp/SConscript
new file mode 100644
index 0000000000..fe0ae941ae
--- /dev/null
+++ b/bsp/v85xxp/SConscript
@@ -0,0 +1,14 @@
+# for module compiling
+import os
+Import('RTT_ROOT')
+
+cwd = str(Dir('#'))
+objs = []
+list = os.listdir(cwd)
+
+for d in list:
+ path = os.path.join(cwd, d)
+ if os.path.isfile(os.path.join(path, 'SConscript')):
+ objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return('objs')
diff --git a/bsp/v85xxp/SConstruct b/bsp/v85xxp/SConstruct
new file mode 100644
index 0000000000..4c860d1e2b
--- /dev/null
+++ b/bsp/v85xxp/SConstruct
@@ -0,0 +1,40 @@
+import os
+import sys
+import rtconfig
+
+if os.getenv('RTT_ROOT'):
+ RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+ RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')
+
+sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
+try:
+ from building import *
+except:
+ print('Cannot found RT-Thread root directory, please check RTT_ROOT')
+ print(RTT_ROOT)
+ exit(-1)
+
+TARGET = 'rtthread-VangoV85xxP.' + rtconfig.TARGET_EXT
+
+DefaultEnvironment(tools=[])
+env = Environment(tools = ['mingw'],
+ AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+ CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
+ AR = rtconfig.AR, ARFLAGS = '-rc',
+ LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+
+if rtconfig.PLATFORM == 'iar':
+ env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
+ env.Replace(ARFLAGS = [''])
+ env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map')
+
+Export('RTT_ROOT')
+Export('rtconfig')
+
+# prepare building environment
+objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
+
+# make a building
+DoBuilding(TARGET, objs)
diff --git a/bsp/v85xxp/Target_FLASH.ld b/bsp/v85xxp/Target_FLASH.ld
new file mode 100644
index 0000000000..3ec0c2499d
--- /dev/null
+++ b/bsp/v85xxp/Target_FLASH.ld
@@ -0,0 +1,173 @@
+/*
+*****************************************************************************
+**
+
+** File : Target_FLASH.ld
+**
+** Abstract : Linker script for Target Device with
+** 512Byte FLASH, 64KByte RAM
+**
+** Set heap size, stack size and stack location according
+** to application requirements.
+**
+** Set memory bank area and size if external memory is used.
+**
+** Date : 2019-10-28
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20010000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
+FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 512K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector : AT(0)
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ .chipinit_section : AT(0xC0)
+ {
+ . = ALIGN(4);
+ *(.chipinit_section) /* .text sections (code) */
+ *(.chipinit_section*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+}
+
+
diff --git a/bsp/v85xxp/Target_FLASH.sct b/bsp/v85xxp/Target_FLASH.sct
new file mode 100644
index 0000000000..6d10464230
--- /dev/null
+++ b/bsp/v85xxp/Target_FLASH.sct
@@ -0,0 +1,16 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x00040000 { ; load region size_region
+ ER_IROM1 0x00000000 0x00040000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ .ANY (+XO)
+ }
+ RW_IRAM1 0x20000000 0x00008000 { ; RW data
+ .ANY (+RW +ZI)
+ }
+}
+
diff --git a/bsp/v85xxp/applications/SConscript b/bsp/v85xxp/applications/SConscript
new file mode 100644
index 0000000000..ca2395451a
--- /dev/null
+++ b/bsp/v85xxp/applications/SConscript
@@ -0,0 +1,11 @@
+Import('RTT_ROOT')
+Import('rtconfig')
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+CPPPATH = [cwd]
+
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')
diff --git a/bsp/v85xxp/applications/main.c b/bsp/v85xxp/applications/main.c
new file mode 100644
index 0000000000..c0926c341c
--- /dev/null
+++ b/bsp/v85xxp/applications/main.c
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-04 iysheng first version
+ */
+
+#include <board.h>
+#include <drivers/adc.h>
+#include <rtdbg.h>
+#include <stdio.h>
+#include <rtthread.h>
+#include "board.h"
+
+#define LED1 GET_PIN(C, 0)
+
+int main(void)
+{
+ rt_pin_mode(LED1, PIN_MODE_OUTPUT);
+
+ while (1)
+ {
+ rt_pin_write(LED1, PIN_HIGH);
+ rt_thread_mdelay(500);
+ rt_pin_write(LED1, PIN_LOW);
+ rt_thread_mdelay(500);
+ }
+
+ return 0;
+}
+
+#ifndef ASSERT_NDEBUG
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_errhandler error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_errhandler error line source number
+ * @retval None
+ */
+void assert_errhandler(uint8_t* file, uint32_t line)
+{
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+
+ /* Infinite loop */
+ while (1)
+ {
+ }
+}
+#endif
diff --git a/bsp/v85xxp/drivers/SConscript b/bsp/v85xxp/drivers/SConscript
new file mode 100644
index 0000000000..30a1a338d0
--- /dev/null
+++ b/bsp/v85xxp/drivers/SConscript
@@ -0,0 +1,35 @@
+Import('RTT_ROOT')
+Import('rtconfig')
+from building import *
+
+cwd = os.path.join(str(Dir('#')), 'drivers')
+
+# add the general drivers.
+src = Split("""
+board.c
+""")
+
+CPPPATH = [cwd]
+
+# add uart drivers.
+if GetDepend('RT_USING_SERIAL'):
+ src += ['drv_usart.c']
+
+if GetDepend('RT_USING_PIN'):
+ src += ['drv_gpio.c']
+
+if GetDepend('RT_USING_ADC'):
+ src += ['drv_adc.c']
+
+if GetDepend('RT_USING_HWTIMER'):
+ src += ['drv_hwtimer.c']
+
+if GetDepend('RT_USING_RTC'):
+ src += ['drv_rtc.c']
+
+if GetDepend('RT_USING_WDT'):
+ src += ['drv_iwdt.c']
+
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')
diff --git a/bsp/v85xxp/drivers/board.c b/bsp/v85xxp/drivers/board.c
new file mode 100644
index 0000000000..2e0f069d1a
--- /dev/null
+++ b/bsp/v85xxp/drivers/board.c
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-04 iysheng first version
+ * 2021-09-07 FuC Suit for V85xx
+ */
+
+#include <stdint.h>
+#include <rthw.h>
+#include <rtthread.h>
+
+#include <target.h>
+#include <board.h>
+#include <drv_usart.h>
+
+uint32_t SystemCoreClock;
+/*
+ * System Clock Configuration
+ */
+void SystemClock_Config(void)
+{
+// SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
+ NVIC_SetPriority(SysTick_IRQn, 0);
+ CLK_InitTypeDef CLK_Struct;
+
+ CLK_Struct.ClockType = CLK_TYPE_AHBSRC \
+ |CLK_TYPE_PLLL \
+ |CLK_TYPE_HCLK \
+ |CLK_TYPE_PCLK;
+ CLK_Struct.AHBSource = CLK_AHBSEL_LSPLL;
+
+ CLK_Struct.PLLL.Frequency = CLK_PLLL_26_2144MHz;
+ CLK_Struct.PLLL.Source = CLK_PLLLSRC_XTALL;
+ CLK_Struct.PLLL.State = CLK_PLLL_ON;
+ CLK_Struct.HCLK.Divider = 1;
+ CLK_Struct.PCLK.Divider = 2;
+ CLK_ClockConfig(&CLK_Struct);
+
+ SystemCoreClock = 26214400UL;
+}
+
+/*
+ * This is the timer interrupt service routine.
+ */
+void SysTick_Handler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ rt_tick_increase();
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+/**
+ * This function will initial V85xx board.
+ */
+void rt_hw_board_init()
+{
+ SystemClock_Config();
+
+#ifdef RT_USING_COMPONENTS_INIT
+ rt_components_board_init();
+#endif
+
+#ifdef RT_USING_CONSOLE
+ rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
+#endif
+
+#ifdef BSP_USING_SDRAM
+ rt_system_heap_init((void *)EXT_SDRAM_BEGIN, (void *)EXT_SDRAM_END);
+#else
+ rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
+#endif
+}
+
+
+void rt_hw_us_delay(rt_uint32_t us)
+{
+ rt_uint32_t ticks;
+ rt_uint32_t told, tnow, tcnt = 0;
+ rt_uint32_t reload = SysTick->LOAD;
+
+ ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
+ told = SysTick->VAL;
+ while (1)
+ {
+ tnow = SysTick->VAL;
+ if (tnow != told)
+ {
+ if (tnow < told)
+ {
+ tcnt += told - tnow;
+ }
+ else
+ {
+ tcnt += reload - tnow + told;
+ }
+ told = tnow;
+ if (tcnt >= ticks)
+ {
+ break;
+ }
+ }
+ }
+}
+
+/*@}*/
diff --git a/bsp/v85xxp/drivers/board.h b/bsp/v85xxp/drivers/board.h
new file mode 100644
index 0000000000..c3ecc54a36
--- /dev/null
+++ b/bsp/v85xxp/drivers/board.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-04 iysheng first version
+ */
+
+#ifndef __BOARD_H__
+#define __BOARD_H__
+
+#include <target.h>
+
+#include "drv_gpio.h"
+
+#define V85XX_SRAM_SIZE 32
+#define V85XX_SRAM_END (0x20000000 + V85XX_SRAM_SIZE * 1024)
+
+
+#if defined(__CC_ARM) || defined(__CLANG_ARM)
+extern int Image$$RW_IRAM1$$ZI$$Limit;
+#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit)
+#elif __ICCARM__
+#pragma section="CSTACK"
+#define HEAP_BEGIN (__segment_end("CSTACK"))
+#else
+extern int __bss_end;
+#define HEAP_BEGIN (&__bss_end)
+#endif
+
+#define HEAP_END V85XX_SRAM_END
+
+#endif
diff --git a/bsp/v85xxp/drivers/drv_comm.h b/bsp/v85xxp/drivers/drv_comm.h
new file mode 100644
index 0000000000..5aef53cce2
--- /dev/null
+++ b/bsp/v85xxp/drivers/drv_comm.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-28 iysheng first version
+ */
+
+#ifndef __DRV_COMM_H__
+#define __DRV_COMM_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DRV_HWTIMER_H__ */
+
diff --git a/bsp/v85xxp/drivers/drv_gpio.c b/bsp/v85xxp/drivers/drv_gpio.c
new file mode 100644
index 0000000000..6711cb7dd0
--- /dev/null
+++ b/bsp/v85xxp/drivers/drv_gpio.c
@@ -0,0 +1,448 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2020-12-27 iysheng first version
+ * 2021-01-01 iysheng support exti interrupt
+ * 2021-09-07 FuC Suit for V85XX
+ * 2021-09-09 ZhuXW Add GPIO interrupt
+ * 2021-09-12 ZhuXW Suit for V85XXP
+*/
+
+#include <board.h>
+#include "drv_gpio.h"
+
+#ifdef RT_USING_PIN
+
+#if defined(GPIOF)
+#define __V85XXP_PORT_MAX 6u
+#elif defined(GPIOE)
+#define __V85XXP_PORT_MAX 5u
+#elif defined(GPIOD)
+#define __V85XXP_PORT_MAX 4u
+#elif defined(GPIOC)
+#define __V85XXP_PORT_MAX 3u
+#elif defined(GPIOB)
+#define __V85XXP_PORT_MAX 2u
+#elif defined(GPIOA)
+#define __V85XXP_PORT_MAX 1u
+#else
+#define __V85XXP_PORT_MAX 0u
+#error Unsupported V85XXP GPIO peripheral.
+#endif
+
+#define PIN_V85XXPPORT_MAX __V85XXP_PORT_MAX
+#define PIN_V85XXPPORT_A 0u
+
+static const struct pin_irq_map pin_irq_map[] =
+{
+#if defined(SOC_SERIES_V85XXP)
+ {GPIO_Pin_0, PMU_IRQn},
+ {GPIO_Pin_1, PMU_IRQn},
+ {GPIO_Pin_2, PMU_IRQn},
+ {GPIO_Pin_3, PMU_IRQn},
+ {GPIO_Pin_4, PMU_IRQn},
+ {GPIO_Pin_5, PMU_IRQn},
+ {GPIO_Pin_6, PMU_IRQn},
+ {GPIO_Pin_7, PMU_IRQn},
+ {GPIO_Pin_8, PMU_IRQn},
+ {GPIO_Pin_9, PMU_IRQn},
+ {GPIO_Pin_10, PMU_IRQn},
+ {GPIO_Pin_11, PMU_IRQn},
+ {GPIO_Pin_12, PMU_IRQn},
+ {GPIO_Pin_13, PMU_IRQn},
+ {GPIO_Pin_14, PMU_IRQn},
+ {GPIO_Pin_15, PMU_IRQn},
+#else
+#error "Unsupported soc series"
+#endif
+};
+
+static struct rt_pin_irq_hdr pin_irq_hdr_tab[] =
+{
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+ {-1, 0, RT_NULL, RT_NULL},
+};
+static uint32_t pin_irq_enable_mask = 0;
+
+#define ITEM_NUM(items) sizeof(items) / sizeof(items[0])
+
+static rt_base_t V85XXP_pin_get(const char *name)
+{
+ rt_base_t pin = 0;
+ int hw_port_num, hw_pin_num = 0;
+ int i, name_len;
+
+ name_len = rt_strlen(name);
+
+ if ((name_len < 4) || (name_len >= 6))
+ {
+ return -RT_EINVAL;
+ }
+ if ((name[0] != 'P') || (name[2] != '.'))
+ {
+ return -RT_EINVAL;
+ }
+
+ if ((name[1] >= 'A') && (name[1] <= 'F'))
+ {
+ hw_port_num = (int)(name[1] - 'A');
+ }
+ else
+ {
+ return -RT_EINVAL;
+ }
+
+ for (i = 3; i < name_len; i++)
+ {
+ hw_pin_num *= 10;
+ hw_pin_num += name[i] - '0';
+ }
+
+ pin = PIN_NUM(hw_port_num, hw_pin_num);
+
+ return pin;
+}
+
+static void V85XXP_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value)
+{
+ GPIO_Type *gpio_port;
+ uint16_t gpio_pin;
+
+ if (PIN_PORT(pin) == PIN_V85XXPPORT_A)
+ {
+ gpio_pin = PIN_V85XXPPIN(pin);
+
+ GPIOA_WriteBit(GPIOA, gpio_pin, (BitState)value);
+ }
+ else if (PIN_PORT(pin) < PIN_V85XXPPORT_MAX)
+ {
+ gpio_port = PIN_V85XXPPORT(pin);
+ gpio_pin = PIN_V85XXPPIN(pin);
+
+ GPIOBToF_WriteBit(gpio_port, gpio_pin, (BitState)value);
+ }
+}
+
+static int V85XXP_pin_read(rt_device_t dev, rt_base_t pin)
+{
+ GPIO_Type *gpio_port;
+ uint16_t gpio_pin;
+ int value = PIN_LOW;
+
+ if (PIN_PORT(pin) == PIN_V85XXPPORT_A)
+ {
+ gpio_pin = PIN_V85XXPPIN(pin);
+ value = GPIOA_ReadInputDataBit(GPIOA, gpio_pin);
+ }
+ else if (PIN_PORT(pin) < PIN_V85XXPPORT_MAX)
+ {
+ gpio_port = PIN_V85XXPPORT(pin);
+ gpio_pin = PIN_V85XXPPIN(pin);
+ value = GPIOBToF_ReadInputDataBit(gpio_port, gpio_pin);
+ }
+
+ return value;
+}
+
+static void V85XXP_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
+{
+ GPIO_InitType GPIO_InitStruct = {0};
+
+ if (PIN_PORT(pin) >= PIN_V85XXPPORT_MAX)
+ {
+ return;
+ }
+
+ /* Configure GPIO_InitStructure */
+ GPIO_InitStruct.GPIO_Pin = PIN_V85XXPPIN(pin);
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INPUT;
+
+ switch (mode)
+ {
+ case PIN_MODE_OUTPUT:
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_OUTPUT_CMOS;
+ break;
+ case PIN_MODE_INPUT:
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INPUT;
+ break;
+ case PIN_MODE_INPUT_PULLUP:
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INOUT_CMOS;
+ break;
+ case PIN_MODE_INPUT_PULLDOWN:
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INOUT_OD;
+ break;
+ case PIN_MODE_OUTPUT_OD:
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INOUT_OD;
+ break;
+ default:
+ break;
+ }
+
+ if (PIN_PORT(pin) == PIN_V85XXPPORT_A)
+ {
+ GPIOA_Init(GPIOA, &GPIO_InitStruct);
+ }
+ else if (PIN_PORT(pin) < PIN_V85XXPPORT_MAX)
+ {
+ GPIOBToF_Init(PIN_V85XXPPORT(pin), &GPIO_InitStruct);
+ }
+}
+
+rt_inline rt_int32_t bit2bitno(rt_uint32_t bit)
+{
+ int i;
+ for (i = 0; i < 32; i++)
+ {
+ if ((0x01 << i) == bit)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+
+static rt_err_t V85XXP_pin_attach_irq(struct rt_device *device, rt_int32_t pin,
+ rt_uint32_t mode, void (*hdr)(void *args), void *args)
+{
+ rt_base_t level;
+ rt_int32_t irqindex = -1;
+
+ if (PIN_PORT(pin) > PIN_V85XXPPORT_A)
+ {
+ return -RT_ENOSYS;
+ }
+
+ irqindex = bit2bitno(PIN_V85XXPPIN(pin));
+ if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map))
+ {
+ return RT_ENOSYS;
+ }
+
+ level = rt_hw_interrupt_disable();
+ if (pin_irq_hdr_tab[irqindex].pin == pin &&
+ pin_irq_hdr_tab[irqindex].hdr == hdr &&
+ pin_irq_hdr_tab[irqindex].mode == mode &&
+ pin_irq_hdr_tab[irqindex].args == args)
+ {
+ rt_hw_interrupt_enable(level);
+ return RT_EOK;
+ }
+ if (pin_irq_hdr_tab[irqindex].pin != -1)
+ {
+ rt_hw_interrupt_enable(level);
+ return RT_EBUSY;
+ }
+ pin_irq_hdr_tab[irqindex].pin = pin;
+ pin_irq_hdr_tab[irqindex].hdr = hdr;
+ pin_irq_hdr_tab[irqindex].mode = mode;
+ pin_irq_hdr_tab[irqindex].args = args;
+ rt_hw_interrupt_enable(level);
+
+ return RT_EOK;
+}
+static rt_err_t V85XXP_pin_detach_irq(struct rt_device *device, rt_int32_t pin)
+{
+ rt_base_t level;
+ rt_int32_t irqindex = -1;
+
+ if (PIN_PORT(pin) > PIN_V85XXPPORT_A)
+ {
+ return -RT_ENOSYS;
+ }
+
+ irqindex = bit2bitno(PIN_V85XXPPIN(pin));
+ if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map))
+ {
+ return RT_ENOSYS;
+ }
+
+ level = rt_hw_interrupt_disable();
+ if (pin_irq_hdr_tab[irqindex].pin == -1)
+ {
+ rt_hw_interrupt_enable(level);
+ return RT_EOK;
+ }
+ pin_irq_hdr_tab[irqindex].pin = -1;
+ pin_irq_hdr_tab[irqindex].hdr = RT_NULL;
+ pin_irq_hdr_tab[irqindex].mode = 0;
+ pin_irq_hdr_tab[irqindex].args = RT_NULL;
+ rt_hw_interrupt_enable(level);
+
+ return RT_EOK;
+}
+static rt_err_t V85XXP_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled)
+{
+ const struct pin_irq_map *irqmap;
+ rt_base_t level;
+ rt_int32_t irqindex = -1;
+ GPIO_InitType GPIO_InitStruct = {0};
+
+ if (PIN_PORT(pin) > PIN_V85XXPPORT_A)
+ {
+ return -RT_ENOSYS;
+ }
+
+ GPIO_InitStruct.GPIO_Pin = PIN_V85XXPPIN(pin);
+ if (enabled == PIN_IRQ_ENABLE)
+ {
+ irqindex = bit2bitno(PIN_V85XXPPIN(pin));
+ if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map))
+ {
+ return RT_ENOSYS;
+ }
+
+ level = rt_hw_interrupt_disable();
+
+ if (pin_irq_hdr_tab[irqindex].pin == -1)
+ {
+ rt_hw_interrupt_enable(level);
+ return RT_ENOSYS;
+ }
+
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.GPIO_Pin = PIN_V85XXPPIN(pin);
+ GPIOA_Init(GPIOA, &GPIO_InitStruct);
+
+ irqmap = &pin_irq_map[irqindex];
+
+ switch (pin_irq_hdr_tab[irqindex].mode)
+ {
+ case PIN_IRQ_MODE_RISING:
+ PMU_WakeUpPinConfig(PIN_V85XXPPIN(pin), IOA_RISING);
+ break;
+ case PIN_IRQ_MODE_FALLING:
+ PMU_WakeUpPinConfig(PIN_V85XXPPIN(pin), IOA_FALLING);
+ break;
+ case PIN_IRQ_MODE_RISING_FALLING:
+ PMU_WakeUpPinConfig(PIN_V85XXPPIN(pin), IOA_EDGEBOTH);
+ break;
+ case PIN_IRQ_MODE_HIGH_LEVEL:
+ PMU_WakeUpPinConfig(PIN_V85XXPPIN(pin), IOA_HIGH);
+ break;
+ case PIN_IRQ_MODE_LOW_LEVEL:
+ PMU_WakeUpPinConfig(PIN_V85XXPPIN(pin), IOA_LOW);
+ break;
+ default:
+ break;
+ }
+ PMU_INTConfig(PMU_INT_IOAEN, ENABLE);
+
+ NVIC_SetPriority(irqmap->irqno, 0);
+ NVIC_EnableIRQ(irqmap->irqno);
+ pin_irq_enable_mask |= irqmap->pinbit;
+
+ rt_hw_interrupt_enable(level);
+ }
+ else if (enabled == PIN_IRQ_DISABLE)
+ {
+
+ level = rt_hw_interrupt_disable();
+
+ PMU_INTConfig(PMU_INT_IOAEN, DISABLE);
+
+ NVIC_DisableIRQ(irqmap->irqno);
+
+ rt_hw_interrupt_enable(level);
+ }
+ else
+ {
+ return -RT_ENOSYS;
+ }
+ return RT_EOK;
+}
+
+
+
+const static struct rt_pin_ops _V85XXP_pin_ops =
+{
+ V85XXP_pin_mode,
+ V85XXP_pin_write,
+ V85XXP_pin_read,
+ V85XXP_pin_attach_irq,
+ V85XXP_pin_detach_irq,
+ V85XXP_pin_irq_enable,
+ V85XXP_pin_get,
+};
+
+rt_inline void pin_irq_hdr(int irqno)
+{
+ if (pin_irq_hdr_tab[irqno].hdr)
+ {
+ pin_irq_hdr_tab[irqno].hdr(pin_irq_hdr_tab[irqno].args);
+ }
+}
+
+
+void V85XXP_pin_exti_irqhandler()
+{
+ rt_base_t intsts=0;
+ int i=0;
+
+ intsts = PMU_GetIOAAllINTStatus();
+ for(i=0; i<16; i++)
+ {
+ if((1<<i) & intsts)
+ {
+ PMU_ClearIOAINTStatus(1<<i);
+ pin_irq_hdr(bit2bitno(1<<i));
+ return;
+ }
+ }
+}
+
+void PMU_IRQHandler()
+{
+ rt_interrupt_enter();
+ V85XXP_pin_exti_irqhandler();
+ rt_interrupt_leave();
+}
+
+
+int rt_hw_pin_init(void)
+{
+ GPIO_InitType GPIO_InitStruct;
+ GPIO_InitStruct.GPIO_Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;
+
+#if defined(GPIOF)
+ GPIOBToF_Init(GPIOF, &GPIO_InitStruct);
+#endif
+#if defined(GPIOE)
+ GPIOBToF_Init(GPIOE, &GPIO_InitStruct);
+#endif
+#if defined(GPIOD)
+ GPIOBToF_Init(GPIOD, &GPIO_InitStruct);
+#endif
+#if defined(GPIOC)
+ GPIOBToF_Init(GPIOC, &GPIO_InitStruct);
+#endif
+#if defined(GPIOB)
+ GPIOBToF_Init(GPIOB, &GPIO_InitStruct);
+#endif
+#if defined(GPIOA)
+ GPIOA_Init(GPIOA, &GPIO_InitStruct);
+#endif
+
+ return rt_device_pin_register("pin", &_V85XXP_pin_ops, RT_NULL);
+}
+INIT_BOARD_EXPORT(rt_hw_pin_init);
+#endif /* RT_USING_PIN */
diff --git a/bsp/v85xxp/drivers/drv_gpio.h b/bsp/v85xxp/drivers/drv_gpio.h
new file mode 100644
index 0000000000..fc39103dfe
--- /dev/null
+++ b/bsp/v85xxp/drivers/drv_gpio.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2020-12-27 iysheng first release
+ * 2021-09-07 FuC Suit for V85XX
+ * 2021-09-09 ZhuXW Add GPIO interrupt
+ * 2021-09-12 ZhuXW Suit for V85XXP
+ */
+
+#ifndef __DRV_GPIO_H__
+#define __DRV_GPIO_H__
+
+#include <rtthread.h>
+#include <rthw.h>
+#include <rtdevice.h>
+#include <board.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __V85XXP_PORT(port) GPIO##port##_BASE
+
+#define GET_PIN(PORTx,PIN) (__V85XXP_PORT(PORTx)==GPIOA_BASE) ? (rt_base_t)(0 + PIN):(rt_base_t)((16 * ( ((rt_base_t)__V85XXP_PORT(PORTx) - (rt_base_t)GPIOB_BASE)/(0x0400UL) +1)) + PIN)
+
+#define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu)))
+#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu))
+#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu))
+
+#define PIN_V85XXPPORT(pin) ((GPIO_Type *)(GPIOB_BASE + (0x400u * PIN_PORT(pin))))
+#define PIN_V85XXPPIN(pin) ((uint16_t)(1u << PIN_NO(pin)))
+
+struct pin_irq_map
+{
+ rt_uint16_t pinbit;
+ IRQn_Type irqno;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DRV_GPIO_H__ */
+
diff --git a/bsp/v85xxp/drivers/drv_usart.c b/bsp/v85xxp/drivers/drv_usart.c
new file mode 100644
index 0000000000..dd4a2bc872
--- /dev/null
+++ b/bsp/v85xxp/drivers/drv_usart.c
@@ -0,0 +1,325 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-04 iysheng first version
+ * 2021-09-07 FuC Suit for V85xx
+ * 2021-09-12 ZhuXW Suit for V85xxP
+ */
+
+#include <target.h>
+#include <drv_usart.h>
+#include <board.h>
+
+#ifdef RT_USING_SERIAL
+
+#if !defined(BSP_USING_UART0) && !defined(BSP_USING_UART1) && \
+ !defined(BSP_USING_UART2) && !defined(BSP_USING_UART3) && \
+ !defined(BSP_USING_UART4) && !defined(BSP_USING_UART5)
+ #error "Please define at least one UARTx"
+
+#endif
+
+#include <rtdevice.h>
+
+static void uart_isr(struct rt_serial_device *serial);
+
+#if defined(BSP_USING_UART0)
+struct rt_serial_device serial0;
+
+void UART0_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial0);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+#endif /* BSP_USING_UART0 */
+
+#if defined(BSP_USING_UART1)
+struct rt_serial_device serial1;
+
+void UART1_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial1);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+#endif /* BSP_USING_UART1 */
+
+#if defined(BSP_USING_UART2)
+struct rt_serial_device serial2;
+
+void UART2_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial2);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+#endif /* BSP_USING_UART2 */
+
+#if defined(BSP_USING_UART3)
+struct rt_serial_device serial3;
+
+void UART3_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial3);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+#endif /* BSP_USING_UART3 */
+
+#if defined(BSP_USING_UART4)
+struct rt_serial_device serial4;
+
+void UART4_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial4);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* BSP_USING_UART4 */
+
+#if defined(BSP_USING_UART5)
+struct rt_serial_device serial5;
+
+void UART5_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ uart_isr(&serial5);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* BSP_USING_UART4 */
+
+static const struct V85xxP_uart uarts[] =
+{
+#ifdef BSP_USING_UART0
+ {
+ UART0, /* uart peripheral index */
+ UART0_IRQn, /* uart iqrn */
+ &serial0,
+ "uart0",
+ },
+#endif
+
+#ifdef BSP_USING_UART1
+ {
+ UART1, /* uart peripheral index */
+ UART1_IRQn, /* uart iqrn */
+ &serial1,
+ "uart1",
+ },
+#endif
+
+#ifdef BSP_USING_UART2
+ {
+ UART2, /* uart peripheral index */
+ UART2_IRQn, /* uart iqrn */
+ &serial2,
+ "uart2",
+ },
+#endif
+
+#ifdef BSP_USING_UART3
+ {
+ UART3, /* uart peripheral index */
+ UART3_IRQn, /* uart iqrn */
+ &serial3,
+ "uart3",
+ },
+#endif
+
+#ifdef BSP_USING_UART4
+ {
+ UART4, /* uart peripheral index */
+ UART4_IRQn, /* uart iqrn */
+ &serial4,
+ "uart4",
+ },
+#endif
+
+#ifdef BSP_USING_UART5
+ {
+ UART5, /* uart peripheral index */
+ UART5_IRQn, /* uart iqrn */
+ &serial5,
+ "uart5",
+ },
+#endif
+};
+
+static rt_err_t V85xxP_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
+{
+ struct V85xxP_uart *uart;
+ UART_Type *UARTx;
+ UART_InitType UART_InitParaStruct = {0};
+
+ UART_StructInit(&UART_InitParaStruct);
+ RT_ASSERT(serial != RT_NULL);
+ RT_ASSERT(cfg != RT_NULL);
+
+ uart = (struct V85xxP_uart *)serial->parent.user_data;
+
+ UARTx = (UART_Type *)uart->uart_periph;
+ UART_InitParaStruct.Baudrate = cfg->baud_rate;
+
+ if (cfg->data_bits == DATA_BITS_8)
+ {
+ UART_InitParaStruct.Parity = UART_PARITY_NONE;
+ }
+
+ switch (cfg->parity)
+ {
+ case PARITY_ODD:
+ UART_InitParaStruct.Parity = UART_PARITY_ODD;
+ break;
+ case PARITY_EVEN:
+ UART_InitParaStruct.Parity = UART_PARITY_EVEN;
+ break;
+ default:
+ UART_InitParaStruct.Parity = UART_PARITY_NONE;
+ break;
+ }
+
+ UART_InitParaStruct.Mode = UART_MODE_RX | UART_MODE_TX;
+ UART_Init(UARTx, &UART_InitParaStruct);
+ UART_Cmd(UARTx, UART_InitParaStruct.Mode, ENABLE);
+
+ return RT_EOK;
+}
+
+static rt_err_t V85xxP_control(struct rt_serial_device *serial, int cmd, void *arg)
+{
+ struct V85xxP_uart *uart;
+ UART_Type *UARTx;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct V85xxP_uart *)serial->parent.user_data;
+ UARTx = (UART_Type *)uart->uart_periph;
+
+ switch (cmd)
+ {
+ case RT_DEVICE_CTRL_CLR_INT:
+ /* disable rx irq */
+ NVIC_DisableIRQ(uart->irqn);
+ /* disable interrupt */
+ UART_INTConfig(UARTx, UART_INT_RX, DISABLE);
+ break;
+ case RT_DEVICE_CTRL_SET_INT:
+ /* enable rx irq */
+ NVIC_EnableIRQ(uart->irqn);
+ /* enable interrupt */
+ UART_INTConfig(UARTx, UART_INT_RX, ENABLE);
+ break;
+ }
+
+ return RT_EOK;
+}
+
+static int V85xxP_putc(struct rt_serial_device *serial, char ch)
+{
+ struct V85xxP_uart *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct V85xxP_uart *)serial->parent.user_data;
+
+ UART_SendData((UART_Type *)uart->uart_periph, ch);
+ while ((UART_GetFlag((UART_Type *)uart->uart_periph, UART_FLAG_TXDONE) == RESET));
+ UART_ClearFlag((UART_Type *)uart->uart_periph, UART_FLAG_TXDONE);
+ return 1;
+}
+
+static int V85xxP_getc(struct rt_serial_device *serial)
+{
+ int ch;
+ struct V85xxP_uart *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct V85xxP_uart *)serial->parent.user_data;
+
+ ch = -1;
+ if (UART_GetFlag((UART_Type *)uart->uart_periph, UART_FLAG_RXFULL) != RESET)
+ ch = UART_ReceiveData((UART_Type *)uart->uart_periph);
+ return ch;
+}
+
+/**
+ * Uart common interrupt process. This need add to uart ISR.
+ *
+ * @param serial serial device
+ */
+static void uart_isr(struct rt_serial_device *serial)
+{
+ struct V85xxP_uart *uart = (struct V85xxP_uart *) serial->parent.user_data;
+
+ RT_ASSERT(uart != RT_NULL);
+
+ if ((UART_GetINTStatus((UART_Type *)uart->uart_periph, UART_INTSTS_RX) != RESET) &&
+ (UART_GetFlag((UART_Type *)uart->uart_periph, UART_FLAG_RXFULL) != RESET))
+ {
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
+ /* Clear RXNE interrupt flag */
+ UART_ClearINTStatus((UART_Type *)uart->uart_periph, UART_INTSTS_RX);
+ }
+}
+
+static const struct rt_uart_ops V85xxP_uart_ops =
+{
+ V85xxP_configure,
+ V85xxP_control,
+ V85xxP_putc,
+ V85xxP_getc,
+};
+
+int V85xxP_hw_usart_init(void)
+{
+ struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
+ int i;
+
+
+ for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++)
+ {
+ uarts[i].serial->ops = &V85xxP_uart_ops;
+ uarts[i].serial->config = config;
+
+ /* register UART device */
+ rt_hw_serial_register(uarts[i].serial,
+ uarts[i].device_name,
+ RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
+ (void *)&uarts[i]);
+ }
+
+ return 0;
+}
+INIT_BOARD_EXPORT(V85xxP_hw_usart_init);
+#endif
diff --git a/bsp/v85xxp/drivers/drv_usart.h b/bsp/v85xxp/drivers/drv_usart.h
new file mode 100644
index 0000000000..f5b87183b5
--- /dev/null
+++ b/bsp/v85xxp/drivers/drv_usart.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2021-01-04 iysheng first version
+ * 2021-09-07 FuC Suit for V85xx
+ * 2021-09-12 ZhuXW Suit for V85xxP
+*/
+
+#ifndef __DRV_USART_H__
+#define __DRV_USART_H__
+
+#include <rthw.h>
+#include <rtthread.h>
+
+/* V85XXP uart driver */
+struct V85xxP_uart {
+ UART_Type * uart_periph;
+ IRQn_Type irqn;
+
+ struct rt_serial_device *serial;
+ char *device_name;
+};
+
+#endif
diff --git a/bsp/v85xxp/keil_Kill.bat b/bsp/v85xxp/keil_Kill.bat
new file mode 100644
index 0000000000..ba17d320fe
--- /dev/null
+++ b/bsp/v85xxp/keil_Kill.bat
@@ -0,0 +1,37 @@
+@echo off
+set n=%USERNAME%
+del *.%n% /s
+
+del *.hex /s
+del *.bak /s
+del *.ddk /s
+del *.edk /s
+del *.lst /s
+del *.lnp /s
+del *.mpf /s
+del *.mpj /s
+del *.obj /s
+del *.omf /s
+del *.plg /s
+del *.rpt /s
+del *.tmp /s
+del *.__i /s
+del *.crf /s
+del *.o /s
+del *.d /s
+del *.axf /s
+del *.tra /s
+del *.dep /s
+del JLinkLog.txt /s
+del *.iex /s
+del *.htm /s
+rem del *.sct /s
+del *.map /s
+del *.ini /s
+del *.scvd /s
+
+for /r %%d in (.) do rd /s /q "%%d\Listings" 2>nul
+for /r %%d in (.) do rd /s /q "%%d\RTE" 2>nul
+for /r %%d in (.) do rd /s /q "%%d\Objects" 2>nul
+
+exit
diff --git a/bsp/v85xxp/project.uvoptx b/bsp/v85xxp/project.uvoptx
new file mode 100644
index 0000000000..71ca100f77
--- /dev/null
+++ b/bsp/v85xxp/project.uvoptx
@@ -0,0 +1,1288 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>12000000</CLKADS>
+ <OPTTT>
+ <gFlags>0</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>BIN\UL2CM3.DLL</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0Vango_V85XX -FS00 -FL040000 -FP0($$Device:V85XX$FLASH\Vango_V85XX.FLM))</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>0</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Applications</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>applications\main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>CPU</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>..\..\libcpu\arm\common\div0.c</PathWithFileName>
+ <FilenameWithoutPath>div0.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>..\..\libcpu\arm\common\showmem.c</PathWithFileName>
+ <FilenameWithoutPath>showmem.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>..\..\libcpu\arm\common\backtrace.c</PathWithFileName>
+ <FilenameWithoutPath>backtrace.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>..\..\libcpu\arm\cortex-m0\cpuport.c</PathWithFileName>
+ <FilenameWithoutPath>cpuport.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\cortex-m0\context_rvds.S</PathWithFileName>
+ <FilenameWithoutPath>context_rvds.S</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>DeviceDrivers</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>..\..\components\drivers\misc\pin.c</PathWithFileName>
+ <FilenameWithoutPath>pin.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>..\..\components\drivers\serial\serial.c</PathWithFileName>
+ <FilenameWithoutPath>serial.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>..\..\components\drivers\src\pipe.c</PathWithFileName>
+ <FilenameWithoutPath>pipe.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>..\..\components\drivers\src\completion.c</PathWithFileName>
+ <FilenameWithoutPath>completion.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\drivers\src\ringblk_buf.c</PathWithFileName>
+ <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\drivers\src\waitqueue.c</PathWithFileName>
+ <FilenameWithoutPath>waitqueue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\drivers\src\ringbuffer.c</PathWithFileName>
+ <FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\drivers\src\dataqueue.c</PathWithFileName>
+ <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\drivers\src\workqueue.c</PathWithFileName>
+ <FilenameWithoutPath>workqueue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>drivers\drv_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>drv_gpio.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>drivers\drv_usart.c</PathWithFileName>
+ <FilenameWithoutPath>drv_usart.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>drivers\board.c</PathWithFileName>
+ <FilenameWithoutPath>board.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Filesystem</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\dfs\src\dfs_posix.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_posix.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\dfs\src\dfs_file.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_file.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\dfs\src\select.c</PathWithFileName>
+ <FilenameWithoutPath>select.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\dfs\src\dfs.c</PathWithFileName>
+ <FilenameWithoutPath>dfs.c</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>..\..\components\dfs\src\poll.c</PathWithFileName>
+ <FilenameWithoutPath>poll.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>..\..\components\dfs\src\dfs_fs.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_fs.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\dfs\filesystems\devfs\devfs.c</PathWithFileName>
+ <FilenameWithoutPath>devfs.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\finsh_node.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_node.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\finsh_parser.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_parser.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>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_vm.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_vm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\msh_file.c</PathWithFileName>
+ <FilenameWithoutPath>msh_file.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\shell.c</PathWithFileName>
+ <FilenameWithoutPath>shell.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_var.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_var.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_compiler.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_compiler.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_heap.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_heap.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_ops.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_ops.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_error.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_error.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\msh.c</PathWithFileName>
+ <FilenameWithoutPath>msh.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_token.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_token.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\finsh\finsh_init.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_init.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>40</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>41</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>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
+ <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>43</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>44</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>45</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>46</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>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\idle.c</PathWithFileName>
+ <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>48</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>49</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>50</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>51</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>52</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>
+ </Group>
+
+ <Group>
+ <GroupName>libc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\armlibc\stdio.c</PathWithFileName>
+ <FilenameWithoutPath>stdio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\armlibc\syscalls.c</PathWithFileName>
+ <FilenameWithoutPath>syscalls.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\armlibc\libc.c</PathWithFileName>
+ <FilenameWithoutPath>libc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\armlibc\mem_std.c</PathWithFileName>
+ <FilenameWithoutPath>mem_std.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>57</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>8</GroupNumber>
+ <FileNumber>58</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>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\common\delay.c</PathWithFileName>
+ <FilenameWithoutPath>delay.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\components\libc\compilers\common\unistd.c</PathWithFileName>
+ <FilenameWithoutPath>unistd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Vango_Lib</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_wdt.c</PathWithFileName>
+ <FilenameWithoutPath>lib_wdt.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_cmp.c</PathWithFileName>
+ <FilenameWithoutPath>lib_cmp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>lib_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_lcd.c</PathWithFileName>
+ <FilenameWithoutPath>lib_lcd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_misc.c</PathWithFileName>
+ <FilenameWithoutPath>lib_misc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>66</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_adc_tiny.c</PathWithFileName>
+ <FilenameWithoutPath>lib_adc_tiny.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>67</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_pmu.c</PathWithFileName>
+ <FilenameWithoutPath>lib_pmu.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>68</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_pwm.c</PathWithFileName>
+ <FilenameWithoutPath>lib_pwm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>69</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>lib_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>70</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\Vango\V85xxP\Source\lib_CodeRAM.c</PathWithFileName>
+ <FilenameWithoutPath>lib_CodeRAM.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>71</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_adc.c</PathWithFileName>
+ <FilenameWithoutPath>lib_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>72</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_version.c</PathWithFileName>
+ <FilenameWithoutPath>lib_version.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>73</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_dma.c</PathWithFileName>
+ <FilenameWithoutPath>lib_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>74</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\Vango\V85xxP\Source\lib_LoadNVR.c</PathWithFileName>
+ <FilenameWithoutPath>lib_LoadNVR.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>75</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_crypt.c</PathWithFileName>
+ <FilenameWithoutPath>lib_crypt.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>76</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_uart.c</PathWithFileName>
+ <FilenameWithoutPath>lib_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>77</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\Vango\V85xxP\Source\Keil5\startup_target.S</PathWithFileName>
+ <FilenameWithoutPath>startup_target.S</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>78</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_i2c.c</PathWithFileName>
+ <FilenameWithoutPath>lib_i2c.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>79</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_iso7816.c</PathWithFileName>
+ <FilenameWithoutPath>lib_iso7816.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>80</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_spi.c</PathWithFileName>
+ <FilenameWithoutPath>lib_spi.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>81</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_ana.c</PathWithFileName>
+ <FilenameWithoutPath>lib_ana.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>82</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\Vango\V85xxP\Source\lib_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>lib_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>83</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\Vango\V85xxP\Source\system_target.c</PathWithFileName>
+ <FilenameWithoutPath>system_target.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>84</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_flash.c</PathWithFileName>
+ <FilenameWithoutPath>lib_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>85</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_u32k.c</PathWithFileName>
+ <FilenameWithoutPath>lib_u32k.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>86</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_clk.c</PathWithFileName>
+ <FilenameWithoutPath>lib_clk.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>87</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\VangoV85xxP_standard_peripheral\Source\lib_tmr.c</PathWithFileName>
+ <FilenameWithoutPath>lib_tmr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/bsp/v85xxp/project.uvprojx b/bsp/v85xxp/project.uvprojx
new file mode 100644
index 0000000000..faacb17a37
--- /dev/null
+++ b/bsp/v85xxp/project.uvprojx
@@ -0,0 +1,871 @@
+<?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>Target 1</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>V85XX</Device>
+ <Vendor>Generic</Vendor>
+ <PackID>Vango.V85XX.4.0.2</PackID>
+ <Cpu>IRAM(0x20000000,0x8000) IROM(0x00000000,0x40000) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0Vango_V85XX -FS00 -FL040000 -FP0($$Device:V85XX$FLASH\Vango_V85XX.FLM))</FlashDriverDll>
+ <DeviceId>0</DeviceId>
+ <RegisterFile>$$Device:V85XX$Device\Include\V85XX.h</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:V85XX$SVD\V85XX.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>template</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\Listings\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments> </SimDllArguments>
+ <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments> </TargetDllArguments>
+ <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>-1</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>BIN\UL2CM3.DLL</Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M0"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>0</RvdsVP>
+ <RvdsMve>0</RvdsMve>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>0</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>1</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>1</uC99>
+ <uGnu>1</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></MiscControls>
+ <Define>USE_STDPERIPH_DRIVER, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, USE_TARGET_DRIVER, RT_USING_ARM_LIBC, V85XXP</Define>
+ <Undefine></Undefine>
+ <IncludePath>applications;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m0;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;drivers;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\finsh;.;..\..\include;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\libc\compilers\common\none-gcc;..\..\examples\utest\testcases\kernel;Libraries\CMSIS\Vango\V85xxP\Include;Libraries\CMSIS;Libraries\VangoV85xxP_standard_peripheral\Include</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>1</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x00000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile></ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Applications</GroupName>
+ <Files>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>applications\main.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>CPU</GroupName>
+ <Files>
+ <File>
+ <FileName>div0.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\common\div0.c</FilePath>
+ </File>
+ <File>
+ <FileName>showmem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\common\showmem.c</FilePath>
+ </File>
+ <File>
+ <FileName>backtrace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\common\backtrace.c</FilePath>
+ </File>
+ <File>
+ <FileName>cpuport.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\cortex-m0\cpuport.c</FilePath>
+ </File>
+ <File>
+ <FileName>context_rvds.S</FileName>
+ <FileType>2</FileType>
+ <FilePath>..\..\libcpu\arm\cortex-m0\context_rvds.S</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>DeviceDrivers</GroupName>
+ <Files>
+ <File>
+ <FileName>pin.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\misc\pin.c</FilePath>
+ </File>
+ <File>
+ <FileName>serial.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\serial\serial.c</FilePath>
+ </File>
+ <File>
+ <FileName>pipe.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\pipe.c</FilePath>
+ </File>
+ <File>
+ <FileName>completion.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\completion.c</FilePath>
+ </File>
+ <File>
+ <FileName>ringblk_buf.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\ringblk_buf.c</FilePath>
+ </File>
+ <File>
+ <FileName>waitqueue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\waitqueue.c</FilePath>
+ </File>
+ <File>
+ <FileName>ringbuffer.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\ringbuffer.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataqueue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\dataqueue.c</FilePath>
+ </File>
+ <File>
+ <FileName>workqueue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\workqueue.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers</GroupName>
+ <Files>
+ <File>
+ <FileName>drv_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>drivers\drv_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>drv_usart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>drivers\drv_usart.c</FilePath>
+ </File>
+ <File>
+ <FileName>board.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>drivers\board.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Filesystem</GroupName>
+ <Files>
+ <File>
+ <FileName>dfs_posix.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\dfs_posix.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_file.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\dfs_file.c</FilePath>
+ </File>
+ <File>
+ <FileName>select.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\select.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\dfs.c</FilePath>
+ </File>
+ <File>
+ <FileName>poll.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\poll.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_fs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\src\dfs_fs.c</FilePath>
+ </File>
+ <File>
+ <FileName>devfs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\dfs\filesystems\devfs\devfs.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>finsh</GroupName>
+ <Files>
+ <File>
+ <FileName>finsh_node.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_node.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_parser.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_parser.c</FilePath>
+ </File>
+ <File>
+ <FileName>cmd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\cmd.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_vm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_vm.c</FilePath>
+ </File>
+ <File>
+ <FileName>msh_file.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\msh_file.c</FilePath>
+ </File>
+ <File>
+ <FileName>shell.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\shell.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_var.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_var.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_compiler.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_compiler.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_heap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_heap.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_ops.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_ops.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_error.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_error.c</FilePath>
+ </File>
+ <File>
+ <FileName>msh.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\msh.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_token.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_token.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_init.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\finsh\finsh_init.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Kernel</GroupName>
+ <Files>
+ <File>
+ <FileName>components.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\components.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>mempool.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mempool.c</FilePath>
+ </File>
+ <File>
+ <FileName>mem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mem.c</FilePath>
+ </File>
+ <File>
+ <FileName>irq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\irq.c</FilePath>
+ </File>
+ <File>
+ <FileName>timer.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\timer.c</FilePath>
+ </File>
+ <File>
+ <FileName>kservice.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\kservice.c</FilePath>
+ </File>
+ <File>
+ <FileName>idle.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\idle.c</FilePath>
+ </File>
+ <File>
+ <FileName>clock.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\clock.c</FilePath>
+ </File>
+ <File>
+ <FileName>object.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\object.c</FilePath>
+ </File>
+ <File>
+ <FileName>device.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\device.c</FilePath>
+ </File>
+ <File>
+ <FileName>scheduler.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\scheduler.c</FilePath>
+ </File>
+ <File>
+ <FileName>ipc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\ipc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>libc</GroupName>
+ <Files>
+ <File>
+ <FileName>stdio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\armlibc\stdio.c</FilePath>
+ </File>
+ <File>
+ <FileName>syscalls.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
+ </File>
+ <File>
+ <FileName>libc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\armlibc\libc.c</FilePath>
+ </File>
+ <File>
+ <FileName>mem_std.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\armlibc\mem_std.c</FilePath>
+ </File>
+ <File>
+ <FileName>time.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\common\time.c</FilePath>
+ </File>
+ <File>
+ <FileName>stdlib.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\common\stdlib.c</FilePath>
+ </File>
+ <File>
+ <FileName>delay.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\common\delay.c</FilePath>
+ </File>
+ <File>
+ <FileName>unistd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\libc\compilers\common\unistd.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Vango_Lib</GroupName>
+ <Files>
+ <File>
+ <FileName>lib_wdt.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_wdt.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_cmp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_cmp.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_rtc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_rtc.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_lcd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_lcd.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_misc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_misc.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_adc_tiny.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_adc_tiny.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_pmu.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_pmu.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_pwm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_pwm.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_CodeRAM.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\CMSIS\Vango\V85xxP\Source\lib_CodeRAM.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_adc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_adc.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_version.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_version.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_LoadNVR.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\CMSIS\Vango\V85xxP\Source\lib_LoadNVR.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_crypt.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_crypt.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>startup_target.S</FileName>
+ <FileType>2</FileType>
+ <FilePath>Libraries\CMSIS\Vango\V85xxP\Source\Keil5\startup_target.S</FilePath>
+ </File>
+ <File>
+ <FileName>lib_i2c.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_i2c.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_iso7816.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_iso7816.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_spi.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_spi.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_ana.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_ana.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\CMSIS\Vango\V85xxP\Source\lib_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>system_target.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\CMSIS\Vango\V85xxP\Source\system_target.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_u32k.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_u32k.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_clk.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_clk.c</FilePath>
+ </File>
+ <File>
+ <FileName>lib_tmr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>Libraries\VangoV85xxP_standard_peripheral\Source\lib_tmr.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/bsp/v85xxp/rtconfig.h b/bsp/v85xxp/rtconfig.h
new file mode 100644
index 0000000000..ed395ed2ad
--- /dev/null
+++ b/bsp/v85xxp/rtconfig.h
@@ -0,0 +1,164 @@
+#ifndef RT_CONFIG_H__
+#define RT_CONFIG_H__
+
+/* Automatically generated file; DO NOT EDIT. */
+/* RT-Thread Configuration */
+
+/* RT-Thread Kernel */
+
+#define RT_NAME_MAX 8
+#define RT_ALIGN_SIZE 4
+#define RT_THREAD_PRIORITY_32
+#define RT_THREAD_PRIORITY_MAX 32
+#define RT_TICK_PER_SECOND 100
+#define RT_USING_OVERFLOW_CHECK
+#define RT_USING_HOOK
+#define RT_USING_IDLE_HOOK
+#define RT_IDLE_HOOK_LIST_SIZE 4
+#define IDLE_THREAD_STACK_SIZE 256
+#define RT_USING_TIMER_SOFT
+#define RT_TIMER_THREAD_PRIO 4
+#define RT_TIMER_THREAD_STACK_SIZE 512
+#define RT_DEBUG
+
+/* Inter-Thread communication */
+
+#define RT_USING_SEMAPHORE
+#define RT_USING_MUTEX
+#define RT_USING_EVENT
+#define RT_USING_MAILBOX
+#define RT_USING_MESSAGEQUEUE
+
+/* Memory Management */
+
+#define RT_USING_MEMPOOL
+#define RT_USING_SMALL_MEM
+#define RT_USING_HEAP
+
+/* Kernel Device Object */
+
+#define RT_USING_DEVICE
+#define RT_USING_CONSOLE
+#define RT_CONSOLEBUF_SIZE 128
+#define RT_CONSOLE_DEVICE_NAME "uart0"
+#define RT_VER_NUM 0x40003
+
+/* RT-Thread Components */
+
+#define RT_USING_COMPONENTS_INIT
+#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 FINSH_THREAD_NAME "tshell"
+#define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 5
+#define FINSH_USING_SYMTAB
+#define FINSH_USING_DESCRIPTION
+#define FINSH_THREAD_PRIORITY 20
+#define FINSH_THREAD_STACK_SIZE 4096
+#define FINSH_CMD_SIZE 80
+#define FINSH_USING_MSH
+#define FINSH_USING_MSH_DEFAULT
+#define FINSH_ARG_MAX 10
+
+/* Device virtual file system */
+
+#define RT_USING_DFS
+#define DFS_USING_WORKDIR
+#define DFS_FILESYSTEMS_MAX 2
+#define DFS_FILESYSTEM_TYPES_MAX 2
+#define DFS_FD_MAX 16
+#define RT_USING_DFS_DEVFS
+
+/* Device Drivers */
+
+#define RT_USING_DEVICE_IPC
+#define RT_PIPE_BUFSZ 512
+#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
+#define RT_SERIAL_RB_BUFSZ 64
+#define RT_USING_PIN
+
+/* Using USB */
+
+
+/* POSIX layer and C standard library */
+
+#define RT_USING_LIBC
+#define RT_USING_POSIX
+
+/* Network */
+
+/* Socket abstraction layer */
+
+
+/* Network interface device */
+
+
+/* light weight TCP/IP stack */
+
+
+/* AT commands */
+
+
+/* VBUS(Virtual Software BUS) */
+
+
+/* Utilities */
+
+
+/* RT-Thread online packages */
+
+/* IoT - internet of things */
+
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+
+/* Wiced WiFi */
+
+
+/* IoT Cloud */
+
+
+/* security packages */
+
+
+/* language packages */
+
+
+/* multimedia packages */
+
+
+/* tools packages */
+
+
+/* system packages */
+
+
+/* peripheral libraries and drivers */
+
+
+/* miscellaneous packages */
+
+
+/* samples: kernel and components samples */
+
+#define SOC_SERIES_V85XXP
+#define SOC_V85XXP
+
+/* On-chip Peripheral Drivers */
+
+#define BSP_USING_UART
+#define BSP_USING_UART0
+
+#endif
diff --git a/bsp/v85xxp/rtconfig.py b/bsp/v85xxp/rtconfig.py
new file mode 100644
index 0000000000..22c83aa6ef
--- /dev/null
+++ b/bsp/v85xxp/rtconfig.py
@@ -0,0 +1,126 @@
+import os
+
+# toolchains options
+ARCH='arm'
+CPU='cortex-m0'
+CROSS_TOOL='gcc'
+
+if os.getenv('RTT_CC'):
+ CROSS_TOOL = os.getenv('RTT_CC')
+
+# cross_tool provides the cross compiler
+# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
+if CROSS_TOOL == 'gcc':
+ PLATFORM = 'gcc'
+ EXEC_PATH = r'D:/toolchain/gnu_tools_arm_embedded/5.4_2016q3/bin'
+elif CROSS_TOOL == 'keil':
+ PLATFORM = 'armcc'
+ EXEC_PATH = r'C:/Keil_v5'
+elif CROSS_TOOL == 'iar':
+ PLATFORM = 'iar'
+ EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0'
+
+if os.getenv('RTT_EXEC_PATH'):
+ EXEC_PATH = os.getenv('RTT_EXEC_PATH')
+
+BUILD = 'debug'
+
+if PLATFORM == 'gcc':
+ # tool-chains
+ PREFIX = 'arm-none-eabi-'
+ CC = PREFIX + 'gcc'
+ AS = PREFIX + 'gcc'
+ AR = PREFIX + 'ar'
+ LINK = PREFIX + 'gcc'
+ TARGET_EXT = 'elf'
+ SIZE = PREFIX + 'size'
+ OBJDUMP = PREFIX + 'objdump'
+ OBJCPY = PREFIX + 'objcopy'
+
+ DEVICE = ' -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections'
+ CFLAGS = DEVICE + ' -Dgcc' # -D' + PART_TYPE
+ AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
+ LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-v85xxp.map,-cref,-u,Reset_Handler -T Target_FLASH.ld'
+
+ CPATH = ''
+ LPATH = ''
+
+ if BUILD == 'debug':
+ CFLAGS += ' -O0 -gdwarf-2 -g'
+ AFLAGS += ' -gdwarf-2'
+ else:
+ CFLAGS += ' -O2'
+
+ POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
+
+elif PLATFORM == 'armcc':
+ # toolchains
+ CC = 'armcc'
+ AS = 'armasm'
+ AR = 'armar'
+ LINK = 'armlink'
+ TARGET_EXT = 'axf'
+
+ DEVICE = ' --cpu Cortex-M0'
+ CFLAGS = DEVICE + ' --apcs=interwork'
+ AFLAGS = DEVICE
+ LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-v85xxp.map --scatter Target_FLASH.sct'
+
+ LFLAGS += ' --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab)'
+
+ EXEC_PATH += '/ARM/ARMCC/bin'
+ print(EXEC_PATH)
+
+ CFLAGS += ' --c99'
+
+ if BUILD == 'debug':
+ CFLAGS += ' -g -O0'
+ AFLAGS += ' -g'
+ else:
+ CFLAGS += ' -O2'
+
+ POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
+
+elif PLATFORM == 'iar':
+ # toolchains
+ CC = 'iccarm'
+ AS = 'iasmarm'
+ AR = 'iarchive'
+ LINK = 'ilinkarm'
+ TARGET_EXT = 'out'
+
+ DEVICE = ' -D USE_STDPERIPH_DRIVER' + ' -D VANGOV85XXPDEV'
+
+ CFLAGS = DEVICE
+ CFLAGS += ' --diag_suppress Pa050'
+ CFLAGS += ' --no_cse'
+ CFLAGS += ' --no_unroll'
+ CFLAGS += ' --no_inline'
+ CFLAGS += ' --no_code_motion'
+ CFLAGS += ' --no_tbaa'
+ CFLAGS += ' --no_clustering'
+ CFLAGS += ' --no_scheduling'
+ CFLAGS += ' --debug'
+ CFLAGS += ' --endian=little'
+ CFLAGS += ' --cpu=Cortex-M0'
+ CFLAGS += ' -e'
+ CFLAGS += ' --fpu=None'
+ CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
+ CFLAGS += ' -Ol'
+ CFLAGS += ' --use_c++_inline'
+
+ AFLAGS = ''
+ AFLAGS += ' -s+'
+ AFLAGS += ' -w+'
+ AFLAGS += ' -r'
+ AFLAGS += ' --cpu Cortex-M0'
+ AFLAGS += ' --fpu None'
+
+ LFLAGS = ' --config Target_FLASH.icf'
+ LFLAGS += ' --redirect _Printf=_PrintfTiny'
+ LFLAGS += ' --redirect _Scanf=_ScanfSmall'
+ LFLAGS += ' --entry __iar_program_start'
+
+ EXEC_PATH += '/arm/bin/'
+ POST_ACTION = ''
+
diff --git a/bsp/v85xxp/template.uvoptx b/bsp/v85xxp/template.uvoptx
new file mode 100644
index 0000000000..83cd492576
--- /dev/null
+++ b/bsp/v85xxp/template.uvoptx
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>12000000</CLKADS>
+ <OPTTT>
+ <gFlags>0</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>0</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>BIN\UL2CM3.DLL</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0Vango_V85XX -FS00 -FL040000 -FP0($$Device:V85XX$FLASH\Vango_V85XX.FLM))</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>0</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Source Group 1</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ </Group>
+
+</ProjectOpt>
diff --git a/bsp/nuvoton/nk-rtu980/template.uvprojx b/bsp/v85xxp/template.uvprojx
index aad158ccc3..b26c9a0261 100644
--- a/bsp/nuvoton/nk-rtu980/template.uvprojx
+++ b/bsp/v85xxp/template.uvprojx
@@ -7,20 +7,21 @@
<Targets>
<Target>
- <TargetName>rtthread</TargetName>
+ <TargetName>Target 1</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
- <Device>Nuvoton_ARM9_Series</Device>
- <Vendor>Nuvoton</Vendor>
- <Cpu></Cpu>
+ <Device>V85XX</Device>
+ <Vendor>Generic</Vendor>
+ <PackID>Vango.V85XX.4.0.2</PackID>
+ <Cpu>IRAM(0x20000000,0x8000) IROM(0x00000000,0x40000) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>
- <FlashDriverDll></FlashDriverDll>
+ <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0Vango_V85XX -FS00 -FL040000 -FP0($$Device:V85XX$FLASH\Vango_V85XX.FLM))</FlashDriverDll>
<DeviceId>0</DeviceId>
- <RegisterFile></RegisterFile>
+ <RegisterFile>$$Device:V85XX$Device\Include\V85XX.h</RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
@@ -30,14 +31,14 @@
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
- <SFDFile></SFDFile>
+ <SFDFile>$$Device:V85XX$SVD\V85XX.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
<IncludePath></IncludePath>
<LibPath></LibPath>
- <RegisterFilePath>Atmel\SAM9260\</RegisterFilePath>
- <DBRegisterFilePath>Atmel\SAM9260\</DBRegisterFilePath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -45,14 +46,14 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>.\build\keil5\</OutputDirectory>
- <OutputName>rtthread</OutputName>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>template</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>1</CreateHexFile>
+ <CreateHexFile>0</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>.\build\keil5\</ListingPath>
+ <ListingPath>.\Listings\</ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
@@ -77,9 +78,9 @@
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf.exe --bin --output "[email protected]" "[email protected]"</UserProg1Name>
+ <UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -106,14 +107,14 @@
<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>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments> </SimDllArguments>
+ <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments> </TargetDllArguments>
+ <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
@@ -129,13 +130,13 @@
<UseTargetDll>1</UseTargetDll>
<UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent>
- <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
<Capability>1</Capability>
- <DriverSelection>4098</DriverSelection>
+ <DriverSelection>-1</DriverSelection>
</Flash1>
- <bUseTDR>0</bUseTDR>
- <Flash2>Segger\JLTAgdi.dll</Flash2>
- <Flash3>"" ()</Flash3>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>BIN\UL2CM3.DLL</Flash2>
+ <Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -171,7 +172,7 @@
<AdsLsxf>1</AdsLsxf>
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
- <AdsCpuType>ARM926EJ-S</AdsCpuType>
+ <AdsCpuType>"Cortex-M0"</AdsCpuType>
<RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
@@ -182,7 +183,7 @@
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve>
- <hadIRAM2>1</hadIRAM2>
+ <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
<useUlib>0</useUlib>
@@ -201,12 +202,12 @@
<Ro1Chk>0</Ro1Chk>
<Ro2Chk>0</Ro2Chk>
<Ro3Chk>0</Ro3Chk>
- <Ir1Chk>0</Ir1Chk>
+ <Ir1Chk>1</Ir1Chk>
<Ir2Chk>0</Ir2Chk>
<Ra1Chk>0</Ra1Chk>
<Ra2Chk>0</Ra2Chk>
<Ra3Chk>0</Ra3Chk>
- <Im1Chk>0</Im1Chk>
+ <Im1Chk>1</Im1Chk>
<Im2Chk>0</Im2Chk>
<OnChipMemories>
<Ocm1>
@@ -241,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress>0x200000</StartAddress>
- <Size>0x1000</Size>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress>0x100000</StartAddress>
- <Size>0x8000</Size>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -255,34 +256,34 @@
<Size>0x0</Size>
</XRAM>
<OCR_RVCT1>
- <Type>1</Type>
- <StartAddress>0x20000000</StartAddress>
- <Size>0x800000</Size>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
</OCR_RVCT1>
<OCR_RVCT2>
- <Type>1</Type>
+ <Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT2>
<OCR_RVCT3>
- <Type>1</Type>
+ <Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress>0x100000</StartAddress>
- <Size>0x8000</Size>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
- <Type>1</Type>
+ <Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT5>
<OCR_RVCT6>
<Type>0</Type>
- <StartAddress>0x20800000</StartAddress>
- <Size>0x1800000</Size>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
</OCR_RVCT6>
<OCR_RVCT7>
<Type>0</Type>
@@ -296,13 +297,13 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress>0x200000</StartAddress>
- <Size>0x1000</Size>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
- <StartAddress>0x300000</StartAddress>
- <Size>0x1000</Size>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
<RvctStartVector></RvctStartVector>
@@ -312,7 +313,7 @@
<Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
- <OneElfS>0</OneElfS>
+ <OneElfS>1</OneElfS>
<Strict>0</Strict>
<EnumInt>0</EnumInt>
<PlainCh>0</PlainCh>
@@ -321,8 +322,8 @@
<wLevel>2</wLevel>
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
- <uC99>0</uC99>
- <uGnu>0</uGnu>
+ <uC99>1</uC99>
+ <uGnu>1</uGnu>
<useXO>0</useXO>
<v6Lang>1</v6Lang>
<v6LangP>1</v6LangP>
@@ -332,7 +333,7 @@
<v6WtE>0</v6WtE>
<v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls>--c99</MiscControls>
+ <MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
@@ -357,16 +358,16 @@
</VariousControls>
</Aads>
<LDads>
- <umfTarg>0</umfTarg>
+ <umfTarg>1</umfTarg>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<noStLib>0</noStLib>
<RepFail>1</RepFail>
<useFile>0</useFile>
- <TextAddressRange>0x20000000</TextAddressRange>
- <DataAddressRange>0x20800000</DataAddressRange>
+ <TextAddressRange>0x00000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
<pXoBase></pXoBase>
- <ScatterFile>.\linking_scripts\nuc980.sct</ScatterFile>
+ <ScatterFile></ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
<Misc></Misc>
@@ -375,6 +376,11 @@
</LDads>
</TargetArmAds>
</TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Source Group 1</GroupName>
+ </Group>
+ </Groups>
</Target>
</Targets>
diff --git a/libcpu/arm/cortex-m33/syscall_iar.S b/libcpu/arm/cortex-m33/syscall_iar.S
index 53a6790ec1..7a058617ae 100644
--- a/libcpu/arm/cortex-m33/syscall_iar.S
+++ b/libcpu/arm/cortex-m33/syscall_iar.S
@@ -6,22 +6,25 @@
; * Change Logs:
; * Date Author Notes
; * 2019-10-25 tyx first version
+; * 2021-03-26 lxf modify bad instruction
; */
;/*
; * @addtogroup cortex-m33
; */
+
SECTION .text:CODE(2)
THUMB
REQUIRE8
PRESERVE8
+ IMPORT rt_secure_svc_handle
+
;/*
; * int tzcall(int id, rt_ubase_t arg0, rt_ubase_t arg1, rt_ubase_t arg2);
; */
-.global tzcall
-.type tzcall, %function
+ EXPORT tzcall
tzcall:
SVC 1 ;/* call SVC 1 */
BX LR
@@ -39,8 +42,7 @@ tzcall_entry:
syscall_entry:
BX LR ;/* return to user app */
-.global SVC_Handler
-.type SVC_Handler, %function
+ EXPORT SVC_Handler
SVC_Handler:
;/* get SP, save to R1 */
@@ -61,3 +63,5 @@ get_sp_done:
;/* if svc == 1, do TrustZone call */
CMP R0, #0x1
BEQ tzcall_entry
+
+ END